梦想与现实 发表于 2012-4-8 09:30:36

debug执行错误指令

本帖最后由 梦想与现实 于 2012-4-8 09:44 编辑

如题:(请参考王爽 汇编 那本书 第三章 题:3.3)
当我在debug下输入汇编指令
mov ax,1000
mov ds,ax
mov ax,
mov bx,
mov cx,
add bx,
add cx,
之后
我单步运行的时候问题就来了
mov ax,1000
mov ds,ax
这两步没有问题,但是到了下面的所有语句都没有如我预期想要执行的去分别给ax,bx,cx去赋值
而是执行了
mov al,
mov bl,
mov cl,
add bl,
add cl,
这些低字节位数据!
所以我百思不得其解,请哪位大侠帮忙解答下!

wAterLoo 发表于 2012-4-8 09:30:37

本帖最后由 wAterLoo 于 2012-4-9 15:31 编辑

你编写的程序还要经过一个编译阶段
debug编译程序的时候,你用默认操作其实代表的是 byte
所以你的mov ax, 会被 debug 编译为 mov al, <==> mov byte al,
如果你想看到效果,可以吧mov ax, 换成 mov word ax, 就行了
后面的masm 会将默认编译位 字操作
如果用masm 编译你写的这段程序
结果会为mov ax, <==> mov word ax,


莫名其妙 发表于 2012-4-8 10:45:44

本帖最后由 莫名其妙 于 2012-4-8 10:54 编辑

应该不会吧 你写代码的时候如果是写ax,[]应该是执行ax,[] 怎么会变成al,[]没用书上的数据 大概看下意思吧!~
-a
1393:0100 mov ax,1000
1393:0103 mov ds,ax
1393:0105 mov ax,
1393:0108 mov bx,
1393:010C
-r
AX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=1393ES=1393SS=1393CS=1393IP=0100   NV UP EI PL NZ NA PO NC
1393:0100 B80010      MOV   AX,1000
-t
AX=1000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=1393ES=1393SS=1393CS=1393IP=0103   NV UP EI PL NZ NA PO NC
1393:0103 8ED8          MOV   DS,AX
-t
AX=1000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=1000ES=1393SS=1393CS=1393IP=0105   NV UP EI PL NZ NA PO NC
1393:0105 A10000      MOV   AX,                        DS:0000=AAF3
-t
AX=AAF3BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=1000ES=1393SS=1393CS=1393IP=0108   NV UP EI PL NZ NA PO NC
1393:0108 8B1E0100      MOV   BX,                         DS:0001=BFAA
-t
AX=AAF3BX=BFAACX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=1000ES=1393SS=1393CS=1393IP=010C   NV UP EI PL NZ NA PO NC

梦想与现实 发表于 2012-4-8 14:32:12

是呀,如果是写ax,[]应该是执行ax,[] 怎么会变成al,[]

就是这个问题,让我很不解!反复实验了好几次,而且指令我确定输入的没有问题,但是居然还是执行al[]!
哎 太诡异了:Q

梦想与现实 发表于 2012-4-8 14:33:04

http://fishc.com/dvd/

梦想与现实 发表于 2012-4-8 16:44:25

请问,那为什么二楼那位鱼友 在debug下编写指令的时候没有在 ax前加上 word的情况下
编译能够正常识别指令并且执行呢!(我还不会用masm,只是在debug下做一下课后习题)
麻烦 wAterLoo 再帮忙解答一下

玩一玩ˇ 发表于 2012-4-9 23:49:16

逻辑错误 RP不好{:5_93:}
页: [1]
查看完整版本: debug执行错误指令