王爽汇编语言第三版实验1
前言
本系列的文章是对王爽老师的汇编语言中的实验的解答记录,原书一共有17个实验,由于学校的教学流程只做到了第14个实验,因此本文章只会有前十四个实验的解答记录,还有个比较重要的是,文章中会有原书实验中没有的题目,这些是我的老师自己加的,你不感兴趣就无视。btw,以这篇文章记录我的汇编语言的学习历程
目录
- 王爽汇编语言第三版实验1
- 王爽汇编语言第三版实验2
- 王爽汇编语言第三版实验3
- 王爽汇编语言第三版实验4
- 王爽汇编语言第三版实验5
- 王爽汇编语言第三版实验6
- 王爽汇编语言第三版实验7
- 王爽汇编语言第三版实验8和9
- 王爽汇编语言第三版实验10和11
- 王爽汇编语言第三版实验12
- 王爽汇编语言第三版实验13
- 王爽汇编语言第三版实验14
实验任务
(1)使用Debug
,将下面的程序段写入内存,逐条执行,观察每条指令执行后CPU中
相关寄存器中内容的变化。
提示,可用E
命令和A
命令以两种方式将指令写入内存。注意用T
命令执行时,CS:IP的指向。注:由于篇幅问题,图片仅展示一部分!
解答:
使用A
指令编写汇编指令,这里必须注意填写数值的时候不要有H!
更改CS:IP的指向
执行命令,AX和BX的值发生更改
(2)将下面3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。
1 | mov ax,1 |
解答:
使用A
命令编写汇编指令,这里有个小细节,用r命令修改寄存器的值可以不用空格隔开,比如rip
就能直接修改ip寄存器的值
执行命令
(3) 查看内存中的内容。
PC机主板上的ROM中写有一个生产日期,在内存FFF00H〜FFFFFH
的某几个单元中,请找到这个生产日期并试图改变它。
解答:
FFF00H\~FFFFFH
跨度是FF
,因此运行
-d fff00:0 ff
地址FFF0:00F0即是生产日期
试图修改,发现报错,原因后面分析
(4) 向内存从B8100H开始的单元中填写数据,如:-e B810:0000 01 01 02 02 03 03 04 04
解答:
检测点2.1
解答:
随便找一个内存段,使用A命令写入指令
修改CS:IP寄存器
执行命令
实验结论、实验体会
以下是对于每道题运算结果的个人看法与总结,有错请指正
第一题:
- 采用e指令或者a指令都可以达到预期的实验的目的
- e指令采用机器码的形式直接对连续的内存地址进行修改的,稍有不慎,会计算出错
- a指令,选择一个段地址,可以在这上面直接用汇编语言进行编写,不容易出错和便于检查。
- t指令,必须先修改cs和ip段寄存器的内容,指向要运行的程序段,否则则不会运行我们编写的程序
第二题:
- jmp是一个跳转指令,可以跳转到我们需要它跳转的物理地址上
- 在编写运行一个新的程序时,必须把上一个程序运行完成,否则无法进行改写
- 直接修改cs和ip的值可以提前跳出循环
第三题:
- 执行结果生产日期与我的电脑不符合,查阅资料——dosbox是虚拟机,也就是虚拟环境,因此输出的内容和物理机的信息没有任何关系
- 通过数字逻辑的知识,ROM为只读存储器,因此修改FFFF0会报错
第四题:
- 现象:用e命令修改内存单元后,用d命令查看内容并未修改
- 查阅:该处地址单元位于显存地址单元中,可以进行数据的写操作
- 原因:显存单元中的内容是与屏幕输出是同步的,再用d命令查看是显存中的内容已经发生了改变
检测点2.1:
没啥好说的,程序运行的结果与手算的结果相一致,是验证性的一类实验
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 木人舟的博客!
评论
ValineDisqus