汇编语言间接地址

时间:2015-03-23 21:14:47

标签: assembly

我在assamble lang中的新篇章......但是我在一篇关于assamb的难题的问题上留下了一个问题...... 好 例如:

mov [bx],9h  ;9h into segment in memory with value 9h
mov ax,[bx]  ;i get what is pointed to memory in bx 9h

好的问题是,在这种情况下,返回是

ax == ah = 20 al = 09对,我的值为9h,但为什么在ah

如果我这样做:

mov word ptr [bx],9h
mov ax ,[bx]

好...... ah = 00 al = 09

也可以这样:

mov word ptr [bx],9h
mov al ,[bx]

为什么20 ah

1 个答案:

答案 0 :(得分:0)

9h适合一个字节,因此指令mov [bx],9hmov byte ptr [bx],9h相同。它会将值09h放在bx指向的字节中。

当您将值读入ax这是一个字操作时,ax是一个字寄存器。它将获得您放入内存的值09h,但也会获得后续字节中的值。在这种情况下,该值恰好是20h

当您使用mov word ptr [bx],9h时,这是一个单词操作,值9h会扩展为单词(0009h)。它将作为两个字节09h00h存储在内存中。

当你使用mov al ,[bx]时,它是一个字节操作,因为al是一个字节寄存器,所以它只会读取你存储的字节。