鱼C论坛

 找回密码
 立即注册
查看: 2446|回复: 6

debug执行错误指令

[复制链接]
发表于 2012-4-8 09:30:36 | 显示全部楼层 |阅读模式
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]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-4-8 09:30:37 | 显示全部楼层
本帖最后由 wAterLoo 于 2012-4-9 15:31 编辑

你编写的程序还要经过一个编译阶段
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]


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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,[0]
1393:0108 mov bx,[1]
1393:010C
-r
AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1393  ES=1393  SS=1393  CS=1393  IP=0100   NV UP EI PL NZ NA PO NC
1393:0100 B80010        MOV     AX,1000
-t
AX=1000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1393  ES=1393  SS=1393  CS=1393  IP=0103   NV UP EI PL NZ NA PO NC
1393:0103 8ED8          MOV     DS,AX
-t
AX=1000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1000  ES=1393  SS=1393  CS=1393  IP=0105   NV UP EI PL NZ NA PO NC
1393:0105 A10000        MOV     AX,[0000]                          DS:0000=AAF3
-t
AX=AAF3  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1000  ES=1393  SS=1393  CS=1393  IP=0108   NV UP EI PL NZ NA PO NC
1393:0108 8B1E0100      MOV     BX,[0001]                         DS:0001=BFAA
-t
AX=AAF3  BX=BFAA  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1000  ES=1393  SS=1393  CS=1393  IP=010C   NV UP EI PL NZ NA PO NC

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-4-8 14:32:12 | 显示全部楼层
是呀,如果是写ax,[]应该是执行ax,[] 怎么会变成al,[]

就是这个问题,让我很不解!反复实验了好几次,而且指令我确定输入的没有问题,但是居然还是执行al[]!
哎 太诡异了:Q
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-4-8 14:33:04 | 显示全部楼层
http://fishc.com/dvd/
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-4-8 16:44:25 | 显示全部楼层
请问,那为什么二楼那位鱼友 在debug下编写指令的时候没有在 ax前加上 word的情况下
编译能够正常识别指令并且执行呢!(我还不会用masm,只是在debug下做一下课后习题)
麻烦 wAterLoo 再帮忙解答一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-4-9 23:49:16 | 显示全部楼层
逻辑错误 RP不好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-20 00:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表