鱼C论坛

 找回密码
 立即注册
查看: 2633|回复: 9

实验5(2)调试到一半程序把ss的值改变了

[复制链接]
发表于 2013-9-8 23:24:09 | 显示全部楼层 |阅读模式
5鱼币
1.png 如题,调试到一半的时候,和结束的时候
2.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-9-8 23:26:03 | 显示全部楼层
难道是机器的事?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-9-9 20:33:38 | 显示全部楼层

mov ss,ax我只是在设定栈段,程序是按照书上来的
assume cs:code,ds:data,ss:stack
data segment
  dw 0123h,0456h
  data ends
  stack segment
  dw 0,0
  stack ends
  code segment
  start: mov ax,stack
         mov ss,ax
                 mov sp,16
                 mov ax,data
                 mov ds,ax
                 push ds:[0]
                 push ds:[2]
                 pop ds:[2]
                 pop ds:[0]
                 mov ax,4c00h
                 int 21h
                 code ends
                 end
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-9-9 21:08:40 | 显示全部楼层
tsembrace 发表于 2013-9-9 20:57
没明白你的问题
mov ss,ax
这句之后ss里的值当然会变了

我的意思是程序调试到最后一步这几个寄存器的值不会相差太多的,这个是答案,②CPU执行程序,程序返回前,CS= 0C88H ,SS= 0C87H ,DS= 0C86H 。

③设程序加载后,CODE段的段地址为X,则DATA段的段地址为 X-2 ,STACK段的段地址为 X-1 。
我第一个实验做到最后设程序加载后,CODE段的段地址为X,则DATA段的段地址为 X-2 ,STACK段的段地址为 X-1是这个情况,第2个实验的程序和第一个相差不是太多可是调试到最后就不是这个情况了啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-9-9 23:05:27 | 显示全部楼层
tsembrace 发表于 2013-9-9 22:43
在提问时要把问题描述清楚
根据你在1楼和7楼的描述,你的问题应该是:为何程序执行后,返回前,CS、SS、DS ...

原来是粗心大意惹得。这种错误编译连接的时候不报错
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-9-9 23:07:03 | 显示全部楼层
谢谢tsembrace 兄
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-2 03:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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