鱼C论坛

 找回密码
 立即注册
查看: 2612|回复: 4

第三章 段的综述 里的代码在debug中运行出现的问题

[复制链接]
发表于 2012-3-2 12:20:33 | 显示全部楼层 |阅读模式
1鱼币
为什么在执行 mov bx ,[4]却显示的是mov bx, [c804],然后执行的也是错的

jietu.rar

189.58 KB, 下载次数: 12

最佳答案

查看完整内容

不知道你编写的代码是什么 但是就图上的看确实你[]写的应该是C804 因为哪一行后面写着 ds:[c804]=0000 要不你发个完整的代码上来 -a 0B25:0100 mov bx,[0004] 0B25:0104 mov es, 0B25:0106 -r AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0B25 ES=0B25 SS=0B25 CS=0B25 IP=0100 NV UP EI PL NZ NA PO NC 0B25:0100 8B1E0400 MOV BX,[0004] ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-2 12:20:34 | 显示全部楼层
本帖最后由 莫名其妙 于 2012-3-2 13:51 编辑

不知道你编写的代码是什么 但是就图上的看确实你[]写的应该是C804  因为哪一行后面写着   ds:[c804]=0000 要不你发个完整的代码上来

-a
0B25:0100 mov bx,[0004]
0B25:0104 mov es,[bx+si]
0B25:0106
-r
AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B25  ES=0B25  SS=0B25  CS=0B25  IP=0100   NV UP EI PL NZ NA PO NC
0B25:0100 8B1E0400      MOV     BX,[0004]                          DS:0004=9A00
-t
AX=0000  BX=9A00  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B25  ES=0B25  SS=0B25  CS=0B25  IP=0104   NV UP EI PL NZ NA PO NC
0B25:0104 8E00          MOV     ES,[BX+SI]                         DS:9A00=0000
-


这是我在debug里写出來的你对比下你的图  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-1-11 18:14:34 | 显示全部楼层
沙发沙发为什么在执行 mov bx ,[4]却显示的是mov bx, [c804],然后执行的也是错的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-2-6 22:05:13 | 显示全部楼层
这段代码应该写在10000H~1001FH这块内存上,怎么变成mov bx, [c804],谁帮我解答一下,怎么都弄不明白了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-2-7 19:50:28 | 显示全部楼层
终于知道怎么回事了,因为用T命令进行调试的时候,会产生中断。那么肯定会进行现场保护,CPU会依次将标志寄存器、当前CS的值、IP的值压到10000~1001FH这个栈中,当然在执行push ax之前ax这个值也会提前压栈一次,这样就把前面的代码覆盖了。mov bx, [c804]中的c8就是提前压栈的那个ax的低8位,它把04 后面的00覆盖了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 21:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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