首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

(汇编区没人理):一个栈段为何在SS:SP指定后 莫名改变了内容?该怎么处理

2012-04-05 
(汇编区没人理):一个栈段为何在SS:SP指定后 莫名改变了内容?Assembly codeassume cs:code, ss:ba segmentd

(汇编区没人理):一个栈段为何在SS:SP指定后 莫名改变了内容?

Assembly code
assume cs:code, ss:ba segmentdw 1,2,3,4,5,6,7,8,9,0ah, 0bh,0ch,0dh,0eh,0fh,0ffha endsb segmentdw 0,0,0,0,0,0,0,0b endscode segmentstart: mov ax,amov ds,axmov ax,bmov ss,axmov sp,10hmov bx,0mov cx,8s: push ds:[bx]add bx,2loop smov ax,4c00hint 21hcode endsend start


是王爽教材 第6章 实验5(6)的题目。 是将a段中的前8个字 数据, 逆序压到b段中。

问: debug的时候 发现当执行完
mov ss,ax
mov sp,10h
查看下 b段中的内容, 发现已经不全是0了。 为什么会发生改变呢?

[解决办法]
触发断点需要调用中断,中断的调用过程需要使用栈空间……
[解决办法]
栈空间是个公共场所,栈空间不仅仅只是你push的时候用。
栈要设大点,不然容易出现错误。
[解决办法]
因为debug的每一步都是中断,中断就要用栈
你可以看下栈里的值就是CS和IP

热点排行