鱼C论坛

 找回密码
 立即注册
查看: 220|回复: 5

[已解决]debug单步出现没有的代码

[复制链接]
最佳答案
0 
发表于 2018-6-8 23:04:33 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
在做实验9的时候代码如图,但单步到mov ss,ax后就出现db 60的代码,继续单步就卡死了,求大家解答一下。
最佳答案
2018-6-9 09:15:38
最佳答案  给我就可以了!

debug图

debug图

代码

代码
最佳答案
1 
发表于 2018-6-9 09:15:38 | 显示全部楼层    本楼为最佳答案   
最佳答案  给我就可以了!
最佳答案
0 
 楼主| 发表于 2018-6-9 09:44:17 | 显示全部楼层
13572044595 发表于 2018-6-9 09:15
最佳答案  给我就可以了!

明白了。。。
最佳答案
16 
发表于 2018-6-9 09:50:31 | 显示全部楼层
你百度的答案对一半吧,cs的值不能用MOV改变,但SS的值是可以用MOV改变的。
首先不能用B800后的地址段做栈空间,用显存的地址做栈空间你也是第一个了,怪不得一堆显示乱码
还有你最好在mov ss,ax后面加一句mov sp,0设置栈顶指针,至于为什么要加这句等后期你就知道了,当然不设置影响也不大,看你需求吧
最佳答案
0 
 楼主| 发表于 2018-6-9 12:25:19 | 显示全部楼层
57158597@qq.com 发表于 2018-6-9 09:50
你百度的答案对一半吧,cs的值不能用MOV改变,但SS的值是可以用MOV改变的。
首先不能用B800后的地址段做栈 ...

首先感谢你的回答,其次下面是我结合你的回答的分析,希望你给点意见。
我不是把显存地址当做栈空间,我是想把ss当做数据段寄存器用,应该是mov ss,   的时候cpu把ss认作栈寄存器,修改了显存地址中的元素造成的。
最佳答案
16 
发表于 2018-6-10 09:05:00 | 显示全部楼层
想用mov对ss栈空间进行数据的读写是可以的,但你要很了解它的原理才行,不然你的数据会很混乱。
比如mov ss,ax,CPU执行这代码的时候会跟着连续执行这代码的下一行代码,你可以在DEBUG下单步试试看
这里是防止中断引起的栈空间混乱,让你在设置完栈空间后连着设置栈顶指针

用mov对栈空间进行数据的读写,要注意控制好SP的值,不然程序在运行的过程很容易数据混乱
总之想用mov对SS段地址进行操作你就必须很了解它,它可不像DS,ES那么单纯
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号

GMT+8, 2018-8-18 01:12

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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