王爽汇编语言第三版实验2
目录
- 王爽汇编语言第三版实验1
- 王爽汇编语言第三版实验2
- 王爽汇编语言第三版实验3
- 王爽汇编语言第三版实验4
- 王爽汇编语言第三版实验5
- 王爽汇编语言第三版实验6
- 王爽汇编语言第三版实验7
- 王爽汇编语言第三版实验8和9
- 王爽汇编语言第三版实验10和11
- 王爽汇编语言第三版实验12
- 王爽汇编语言第三版实验13
- 王爽汇编语言第三版实验14
实验任务
(1)使用Debug,将下面的程序段写 入程序,逐条进行,根据指令执行后的实际运行情况填空。
1 | mov ax,ffff |
解答:
- 首先用
d
命令得到内存FFFF0~FFFFF
中的值
通过显示的值,进行手算一遍,填入上方的表格
写程序验证,方便起见,我从内存段1000:0开始编写
- 执行程序
这里可以注意到在执行完mov ss,ax
后立刻执行了mov sp,0100
,因此程序直接跳到mov ax,[0000]
分析后面写
(2)仔细观察图3.19中的实验过程,然后分析:为什么2000:0~2000:f中的内容会发生改变?
解答:
首先使用debug写入相应的命令,对程序的运行结果进行验证
事先在2000:0处写入0
修改cs和ip寄存器的值
执行命令,并查看2000:0的值
这些数值很容易能看出是寄存器的内容
现象:在程序未执行之前,内存地址2000:00仅显示0值,但是在构建栈结构后,此内存地址显示出新数据
分析:在网上搜集资料后,得知当使用t命令触发单步中断时,发生了寄存器值入栈操作,CPU自动将中断处理所需的注册值压入栈中,这解释了这些数据的来源。
具体内容:参照课本P249,P238
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 木人舟的博客!
评论
ValineDisqus