鱼C论坛

 找回密码
 立即注册
查看: 5063|回复: 2

[已解决]王爽检测点6.1的问题

[复制链接]
发表于 2016-3-16 17:39:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

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

x
assume cs:codesg

codesg segment

    dw 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H
               
  start:       mov ax,0
                 mov ds,ax
                  mov bx,0
                  
                  mov cx,8
        s:       mov ax,[bx]
                 mov cs:[bx],ax        ;回答部分
                  add bx,2
                  loop s
                  
                  mov ax,4c00H
                  int 21H
                  
codesg ends

end start

本题我的回答符合书上的标准答案,但是在调试的时候出现一个问题。
运行环境:DOSbox0.74(16位模拟环境)
工具:debug(不是debug32)

debug加载程序后:
第1步:用d 0000:0000 000f 查看0:0-f这段内存空间,发现其内保存的数据为:
0000:0000  60 10 00 F0 08 00 70 00 08 00 70 00 08 00 70 00

第2步:用d 077c:0 f 查看077C:0-f这段内存空间,其内保存的数据为:(077C为CS的值,每人机器上不一样)
077C:0000  23 01 56 04 89 07 BC 0A EF 0D ED 0F BA 0C 87 09
与程序中预设的数据一样。

第3步:g 25,即直接运行到mov ax,4c00H这一步

第4步:用d 0000:0000 000f 查看0:0-f这段内存空间,发现其内保存的数据已经发生变化,为:
0000:0000  60 10 00 F0 BB 13 AC 01 08 00 70 00 B1 13 AC 01

第5步:用d 077c:0 f 查看077C:0-f这段内存空间,其内的数据已经变化为:
077C:0000  60 10 00 F0 BB 13 AC 01 08 00 70 00 B1 13 AC 01

疑问??大大的疑问??
0:0-f 这内存空间内的数据怎么发生了变化?什么时候发生的变化?
我猜应该是debug或者操作系统引起,但是希望得到证实或者详细解释。


食堂开饭了,先吃饭
最佳答案
2016-3-16 18:08:43
我说几句,,,

首先,你那个o77c绝对不是cs的值,从内存里的内容看,应该是code段起始的段地址的值..不过因为程序

入口是start,所以cs的值在start标号处。(关于这个可能我是忘了,可能是cs的值的确是那段数据的段地

址的值,ip不是0罢了。。。)

还有,0:0不是中断向量表?所以它怎么改了实在不知道,你把中断向量表数据移动到那里了,肯定就变了

呗...

还有,你为毛不设置栈...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-3-16 18:08:43 | 显示全部楼层    本楼为最佳答案   
我说几句,,,

首先,你那个o77c绝对不是cs的值,从内存里的内容看,应该是code段起始的段地址的值..不过因为程序

入口是start,所以cs的值在start标号处。(关于这个可能我是忘了,可能是cs的值的确是那段数据的段地

址的值,ip不是0罢了。。。)

还有,0:0不是中断向量表?所以它怎么改了实在不知道,你把中断向量表数据移动到那里了,肯定就变了

呗...

还有,你为毛不设置栈...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-16 19:12:09 | 显示全部楼层
zjk 发表于 2016-3-16 18:08
我说几句,,,

首先,你那个o77c绝对不是cs的值,从内存里的内容看,应该是code段起始的段地址的值..不 ...

谢谢兄弟。
1、我是学过一次汇编语言,但现在只是以第1章到第6章的知识来解释。
2、077C是CS寄存器的值。
3、我不设置栈是因为题目是个填空题
4、你说起中断向量表我有点印象了,不过那是后面的知识,我还没复习到,记起的东西不多。

再次感谢兄弟。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-26 13:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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