QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

新鱼友

Rank: 1

积分
21
查看: 178|回复: 5

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

[复制链接]
最佳答案
0 

尚未签到

AlunX 发表于 2018-6-8 23:04:33 1785 | 显示全部楼层 |阅读模式

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

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

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

debug图

debug图

代码

代码
楼层
跳转到指定楼层
最佳答案
1 
累计签到:10 天
连续签到:1 天
13572044595 发表于 2018-6-9 09:15:38 | 显示全部楼层    本楼为最佳答案   
最佳答案  给我就可以了!
最佳答案
0 

尚未签到

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

明白了。。。
最佳答案
8 

尚未签到

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

尚未签到

AlunX  楼主| 发表于 2018-6-9 12:25:19 | 显示全部楼层
57158597@qq.com 发表于 2018-6-9 09:50
你百度的答案对一半吧,cs的值不能用MOV改变,但SS的值是可以用MOV改变的。
首先不能用B800后的地址段做栈 ...

首先感谢你的回答,其次下面是我结合你的回答的分析,希望你给点意见。
我不是把显存地址当做栈空间,我是想把ss当做数据段寄存器用,应该是mov ss,   的时候cpu把ss认作栈寄存器,修改了显存地址中的元素造成的。
最佳答案
8 

尚未签到

57158597@qq.com 发表于 2018-6-10 09:05:00 | 显示全部楼层
想用mov对ss栈空间进行数据的读写是可以的,但你要很了解它的原理才行,不然你的数据会很混乱。
比如mov ss,ax,CPU执行这代码的时候会跟着连续执行这代码的下一行代码,你可以在DEBUG下单步试试看
这里是防止中断引起的栈空间混乱,让你在设置完栈空间后连着设置栈顶指针

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

发表回复

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

本版积分规则

关闭

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

    移动客户端下载(未启用)
    微信公众号

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

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.3 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2018-6-25 12:00

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