|
1鱼币
本帖最后由 梦想与现实 于 2012-4-8 09:44 编辑
如题:(请参考王爽 汇编 那本书 第三章 题:3.3)
当我在debug下输入汇编指令
mov ax,1000
mov ds,ax
mov ax,[0]
mov bx,[2]
mov cx,[1]
add bx,[1]
add cx,[2]
之后
我单步运行的时候问题就来了
mov ax,1000
mov ds,ax
这两步没有问题,但是到了下面的所有语句都没有如我预期想要执行的去分别给ax,bx,cx去赋值
而是执行了
mov al,[0]
mov bl,[2]
mov cl,[1]
add bl,[1]
add cl,[2]
这些低字节位数据!
所以我百思不得其解,请哪位大侠帮忙解答下! |
最佳答案
查看完整内容
你编写的程序还要经过一个编译阶段
debug编译程序的时候,你用[0]默认操作其实代表的是 byte [0]
所以你的mov ax,[0] 会被 debug 编译为 mov al,[0] mov byte al,[0]
如果你想看到效果,可以吧mov ax,[0] 换成 mov word ax,[0] 就行了
后面的masm 会将[1]默认编译位 字操作
如果用masm 编译你写的这段程序
结果会为 mov ax,[0] mov word ax,[0]
|