鱼C论坛

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

王爽汇编实验五,第六题

[复制链接]
发表于 2013-11-7 13:03:04 | 显示全部楼层 |阅读模式
5鱼币
shot.PNG 图1
shot2.PNG 图2
在做王爽的实验五的第六小题,我是想把a数据段中的所有数据逆序push到b中,然后就报错,之后找到原因发现是代码的顺序出现错误。。。求大神解答这个问题。。如图,别的代码我都没改,就是把画红圈的代码颠倒了一个位置,结果完全不一样,如果先给ss赋值,后面的ds就无法更改为a的段地址,所以会把psp里面的内容push到b中。。。如果颠倒了一个位置,ds就可以获取a的段地址,所以可以把a中所有数据都push到b里。。我是新手,请问这是什么原因啊,感谢大神!!
(我用debug中的U指令,已经查看了内存中的指令,发现图1后从第四行指令开始都是乱的)


最佳答案

查看完整内容

你的堆栈段只有8个字,却把sp设为32.于是紧跟在堆栈段后面的代码段就悲惨了。当你一push数据,代码段的数据就被修改了。你可以看看你截图中数据段和代码段手段地址是不是只相差1?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-7 13:03:05 | 显示全部楼层
你的堆栈段只有8个字,却把sp设为32.于是紧跟在堆栈段后面的代码段就悲惨了。当你一push数据,代码段的数据就被修改了。你可以看看你截图中数据段和代码段手段地址是不是只相差1?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-8 12:13:22 | 显示全部楼层
本帖最后由 羊羽生 于 2013-11-8 12:15 编辑

sp应该是16吧,你才定义了8个字形数据,就是16个字节,mov sp,16(或者10H)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-9 15:24:14 | 显示全部楼层
入栈是从栈顶开始压入的,你设置的栈顶sp是32,那么数据就被压入到这里喽,不信,你可以d ss:0  查看20H的出数据   机器就是机器,你给他什么指令,他就只知道执行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-11 02:46:53 | 显示全部楼层
是是是。。我没考虑到这一点,谢谢啊!我还一直纳闷为啥换个位置就正确了!!差距啊:ton:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-11 02:47:26 | 显示全部楼层

嗯嗯,我知道哪错了!谢谢你啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-11 02:48:42 | 显示全部楼层
仰望天上的光 发表于 2013-11-7 13:03
你的堆栈段只有8个字,却把sp设为32.于是紧跟在堆栈段后面的代码段就悲惨了。当你一push数据,代码段的数据 ...

是是是。。我没考虑到这一点,谢谢啊!我还一直纳闷为啥换个位置就正确了!!差距啊:ton:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-28 19:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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