一、实验目的
学会怎样进入DOS、Windows提供的实模式程序的调试方式,掌握Debug常见指令的使用。
二、软件准备
1.将masm5.0文件夹放到某盘根目录下。
2.安装dosbox。
3.打开dosbox。
4.用mount 命令关联masm5.0文件夹到C盘
5.在dosbox下打开虚拟的c盘
6.进入debug
7.开始实验。
- 【我把压缩包放我的资源里哈,里面有masm文件和说明哟】
三、实验内容
请完成实验,并回答思考题、完成要求的截图(没要求的不用)
- 1:用Debug的R命令查看、改变CPU寄存器的内容;
- 2:用Debug的D命令查看内存中的内容;
- 3:用Debug的E命令改写内存中的内容;
- 4:用Debug的U命令将内存中的机器指令翻译成汇编指令;
- 5:小测试
四、实验过程和结果
注意:debug下默认十六进制
1
:
- 用Debug的R命令查看、改变CPU寄存器的内容;
- 输入debug进入debug编辑模式,再用R命令查看CPU寄存器内容,如下所示:
接下来改变AX的值为1010,如下图所示:
查看:
思考1:最后一行13d2:0100是什么?
答:这是CS和IP的值,CS=13D2,IP=0100,CS:IP指向的内存单元为13D2:0100,也就是说,内存13D2:0100处的指令为CPU当前要读取、执行的指令。
2
:
- 用Debug的D命令查看内存中的内容;
在debug模式中按下D命令,内存中的内容如下所示:
继续输入d命令,如下:
思考2:两次输入d命令,显示的内容有什么关联吗?
答:“d 段地址:偏移地址”,偏移地址在第一次d命令执行后继续再次增加
【🤐本人心很慌,是我自己写的】
指定地址的方式查看内存:
思考3:能指定开始和结束吗?怎么做?(可截图)
3
:
- 用Debug的E命令改写内存中的内容;
在上图的基础上,改变1000:0100至0103的内容为01,02,03,04,如下图所示:
(提示:键入e空格1000:0100空格01空格02空格03空格04回车)
键入d命令查看修改的结果:
从键盘键入如下
这种方式可以逐个修改内存数据,若输入01空格
3c表示原本1000:0100中的数据,输入01是将要改写的内容;5d表示原本1000:0101中的数据…回车可让改写结束。输入d命令查看改写的内容。
4:
- 用Debug的U命令将内存中的机器指令翻译成汇编指令
下面是从13d2:011a
处到13d2:011f
处的汇编指令,如下:
5:小测试
- 1>用D命令查看
073f:0110
处的内存 - 2>用E命令改写
073f:0110
处的内存为
47 4F 4F 44 20 53 54 55 44 59 20
- 用E命令改写
074f:0120
处的内存为B8 34 12 40
- 3>用
D
命令查看073f:0110
处16个字节的内存 截图如下:
思考4:第3步中用D命令查看内存,最右边显示了什么?
答:对应的ASCII码
073f:0110
处内存的物理地址是多少?请用不同的段基址和偏移地址查看此处内存情况
【物理地址=段基址左移加0+偏移地址,集美们不是所有都这么求哈~我只是说这个题是这么求的,上课要听讲哟!】
物理地址:07500H
截图如下:
思考5:073f:0110对应的地址还有哪些段基址和偏移地址的组合形成?
073e:0120
074f:0010
074e:0020
074d:0030
072f:0210
...................
- 4>用
u
命令查看074f:0120
-074f:0123
处内存。
对应的汇编指令如下: