- 实验名称 用机器指令和汇编指令编程(1)
- 实验日期 2018.10.22
- 学院:计软院
- 专业:计算机科学与技术
- 年级:2017级
- 班次:5班
- 姓名:陈奕明
- 学号 20171308194
一、实验目的
1. 掌握使用debug工具编写和调试汇编命令的方法
2. 掌握第1-2章所学的关于CPU、寄存器、内存的基础知识
3. 掌握第1-2章涉及的几条指令mov, add, sub, jmp的用法
二、实验准备
1. 复习教材第1~2章内容,完成教材内相关检测点
2. 结合教材实验1 (P35)及公邮文件中心→实验下的 “实验1辅助文档.pdf”学习debug 工具用法。
三、实验内容
1. 教材实验1(P35)
(1)练习教材 P35-45「预备知识:Debug 的使用」,学习 debug 启动、退出及常用指 令用法;
(2)在练习基础上,完成「2. 实验任务」
Tips: 「2. 实验任务」中每一项任务都可以在教材前序内容或练习中找到提示线索。建议先 完成「二、实验准备」中要求的内容及实验内容的第(1)项,这样完成「2. 实验任务」时会 很容易完成。比如: 实验任务(1)可参照教材P41-43的(7)完成; 实验任务(2)与教材 P20的检测点(2)相似且相关;
四、实验结论
任务一:
把如下的程序段写入内存,逐条执行,观察每条指令执行后CPU中相关寄存器中内容的变化。
首先使用e指令按题目要求的写入机器码指令(随便找了个地址1000:0):
到达文本输入限制后没办法,只能先执行了...执行完后,看一下已经写入数据的内存单元的情况...嗯...数据是对的
继续输入并执行,执行完全部代码后,使用u指令反汇编机器码命令:
跟书上写明的汇编命令相符。
然后输入汇编命令:
中间又把1和字母l分不清了,出了个error。。。
命令输入完毕,-t命令单步执行:
和上课听讲的一样,对指定的寄存器进行数据的改写操作。
后面的命令行有点多就用-t+数字=执行往后的几条命令全部执行了:
最后的结果:
任务二:将下面三条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。
mov ax,1
add ax,ax
jmp 2000:0003
解题思路:2的三次方就是8,再看下题目给我们的三条命令。执行完第一条后ax的值为1,执行完第二条命令后ax的值为2,那么就需要我们再执行这条语句7次了,所以就要使用jmp命令,通过改变CS和IP寄存器的值来使得CPU继续反复执行这条命令,所以往下又写了七句jmp 2000:0003使得CPU再反复执行其次该语句,从而使得AX中的值变为二的八次方。。。。这是最终结果。
最终实验截图
第三题
PC主板上的ROM中写有一个生产日期,在内存FFF00H~FFFFFH的某几个单元中,请找到这个生产日期并且试图改变它。
实验截图如下:
试图修改但是失败了,看来是因为ROM的关系,无法修改。
第四题
向内存B8100H开始的单元中填写数据,如:
-e B810:0000 01 01 02 02 03 03 04 04
这是进行了一系列实验过后的结果:
有这么些结果和感悟:
再向寄存器写入数据时,每多两个字节的数据就会产生一个新的颜色区域,而且写入区域的CS码每产生一次进位,就会使得产生的色块区域产生换行,最终得到了这么些结果。
五、实验心得与感悟
这次实验主要实验了R命令(用于查看、修改寄存器中的内容)、D命令(查看内存中的内容)、E命令(修改内存中的内容)、U命令(反汇编命令)、T命令(执行代码行命令)
第四题经过这么多次的实验测试,看来这一段内存空间是显存。
我的电脑屏幕运行Dosbox窗口极小,最后查到按Alt+Enter可以进入全屏模式进行操作。
当初安装Dosbox时经历过,千万别把程序装在系统盘,否则会有权限问题。
暂时就这样把,肯定还有许多要学的,要完善的,好好学习汇编!!
2018-10-27 21:28:25于宿