检测点16.1关于 add b,ax 是否合法
检测点16.1assume cs:codecode segment
a dw 1,2,3,4,5,6,7,8
b dd 0
start: mov si,0
mov cx,8
s: mov ax,a
add b,ax
adc b,0
add si,2
loop s
......
这里的代码第八行 "add b,ax"b是双字符,ax是单字符 不会出现编译错误吗
为什么书上第288页 add b,al 会出现编译错误 b为字符数据
16.1
mov ax,a
add word ptr b,ax
adc word ptr b,0
add si,2 al是单字符,ax是双字 两个都不行哦,数据不匹配撒。
b是双字啊,肯定不能和ax相加 可能开始没说清楚,al是一个字节,8个bit,ax是一个字,两个字节,16个bit,b是双字,四个字节,32个bit lukelqz 发表于 2012-12-19 13:19 static/image/common/back.gif
两个都不行哦,数据不匹配撒。
我自己找的网上的答案,没有进行编译,现在知道答案就是错的,自己也编译了一下知道错在那里了,谢谢 小新110 发表于 2012-12-19 11:12 static/image/common/back.gif
16.1
mov ax,a
add word ptr b,ax
谢谢,知道自己错在那里了,word ptr 我感觉像C语言里的类型强制转换,不知道我理解的对不对,本来b是双字符,前面加 word ptr 强制b转为word类型 理解的对的 路过看看呵呵 wawa 发表于 2012-12-19 14:55
谢谢,知道自己错在那里了,word ptr 我感觉像C语言里的类型强制转换,不知道我理解的对不对,本来b是双 ...
可以这么理解,实质上是ax是占2个字节,但是b是双字节的, 把2个字节放入双字节就出现了不匹配的问题,加上word ptr就相当于告诉ax放入b的2个字节的空间内,大家都是双字节,大小就匹配了
页:
[1]