Sen哥 发表于 2013-10-5 20:30:11

对16位与8位的相加减还是不明白,求大神指导

我真的不明白16位跟8位能不能相加,今天做实验题是看到答案的一句add es:,al,就是不明白,es:[bx]不是16位的吗,就是会拉下一个数据当高字节??那这样呢??add al,es:[bx]

baby520 发表于 2013-10-5 20:34:55

等人回答。。。

meiqq 发表于 2013-10-5 21:03:39

等待回答····

福禄娃娃 发表于 2013-10-5 21:27:31

只能同二进制位数的数进行加减
add es:, al 把al8位寄存器的值放入 段地址为es,偏移地址为bx寄存器中的值。比如bx为0,es为1000
那么就是把1000: 也就是10000H处的八位数据传送入al寄存器中
bx是一个16位寄存器,但是表示的是一个偏移地址,把【】中的值作为偏移地址

Sen哥 发表于 2013-10-5 22:39:52

福禄娃娃 发表于 2013-10-5 21:27 static/image/common/back.gif
只能同二进制位数的数进行加减
add es:, al 把al8位寄存器的值放入 段地址为es,偏移地址为bx寄存器中的值 ...

刚刚debug了一下,发现mov 【bx】,al是可以的,这是ds:【bx】所代表的值应该就是8位的吧?ds:【bx】代表几位的是不是取决于后面的寄存器啊

福禄娃娃 发表于 2013-10-5 22:46:56

Sen哥 发表于 2013-10-5 22:39 static/image/common/back.gif
刚刚debug了一下,发现mov 【bx】,al是可以的,这是ds:【bx】所代表的值应该就是8位的吧?ds:【bx】代 ...

mov ax,
mov al,
取决于指令的其他对象,由AX或者AL来指出具体内存单元长度。

[YES]ぐ單﹎調゛ 发表于 2013-10-7 18:17:17

谢谢楼主分享
页: [1]
查看完整版本: 对16位与8位的相加减还是不明白,求大神指导