实验1——Debug调试程序的使用
Debug是DOS操作系统下的一个实用程序,它是供程序员使用的程序调试工具。使用Debug程序,可以查看CPU中各个寄存器中的内容,也可以看内存里的信息,并且还能在机器指令这一维度查看程序的执行情况。在汇编语言的学习中必不可少啊!
Debug是运行在DOS环境下的,最简单的方式是下载一个DOS的模拟器,学校使用的是DOSBOX模拟器。下载安装啥的就不说了,按照说明来。
打开模拟器就可以看到这样两个窗口,在小窗口输入命令的,后面的大窗口是啥也不清楚。
在使用debug程序前,必须要进行一步准备工作:挂接MASM文件夹,即在Z:>提示符后输入命令mount c d:\masm 。
mount c d:\masm这个命令的意思是:将本机d:\masm文件夹作为DOS模拟器的C盘,后面两个参数不固定。
mount [maʊnt] 本意:准备、安排。安排,这个词比挂接好听,就用它了!
masm文件夹是安装DOSBOX中就自带的一个文件夹,里面有debug等多种程序的源文件:
之后又将这个文件拷贝到D盘下,这才有了路径d:\masm ,D盘是我的学习用盘。当然直接用下载的那个路径应该也是可以的,就是路径名称很长,在dosbox里不能ctrlc ctrlv复制粘贴,要纯手打。
既然DOSBOX一打开,默认的是Z盘,那我们可不可以直接安排到Z盘呢?
哦,是不行的,Z盘已经被安排上了Internal Virtual Drive,内部模拟器。不能再安排masm文件夹里的程序了。那么模拟器的其他盘呢?比如D盘呢?
英语六级都没过不知道翻译的对不对。。
看来是可以的,DOS模拟器的C盘、D盘等都是可以被安排上Windows下D盘中的masm文件夹里的程序。
接下来就是要将DOS模拟器下的工作环境由Z盘转移到安排上masm文件夹的那个盘,然后就可以直接运行debug程序啦!哎呀呀,忘了一个内容,见引用。
在Z盘转移到D盘后,我们可以使用dir这个命令,来列出当前磁盘的目录。
dir是directory [dəˈrektəri] 的缩写,意为:(计算机文件或程序的)目录。
红框框里显示的内容和挂接上的masm文件夹里的内容是一模一样的:
‘-’ 号是debug命令的提示符,不用管它。
debug调适程序的命令有N多,这里列出了比较常用的一些命令:
我们一个一个命令来测试一下:
-
r这个命令查看CPU中所以寄存器的内容。
r是register的缩写,原意:寄存器。
-
r 寄存器名这个命令用来改变指定寄存器的内容。
r和寄存器名之间的空格可要可不要。
但是不能将要改变的值直接写在命令后面。
-
d这个命令用来查看预设地址内存处的128个字节的内容。
d应该是drive的缩写,原意:传动装置。或者是direct access的缩写?这两个都挺好记的。
我们看到,这里面的内存信息的显示是这样的:
- 内存地址使用常用的表示方法——段地址:偏移地址。
- 每一行显示10H即16个字节的信息,显示也是按字节的形式显示的(两两十六进制数紧挨),存储单元大小就是一字节。
- 每次一共显示8行,总的是128个字节。
再重复使用d命令可以一直往下看内存信息。
-
d 段地址:偏移地址这个命令可以查看内存指定地址处的信息。
后面的四个零可以简写成零。
-
d 段地址:偏移地址 结尾偏移地址这个命令查看内存中指定地址处开始指定范围的内存信息。
-
e 段地址:偏移地址 数据1 数据2 数据3···这个命令用于修改指定地址处的内存信息。
e可能是exchange的缩写,本意:交换。数据交换嘛。或者是write的缩写,写入数据嘛,这个貌似更靠谱。
- e 段地址:偏移地址这个命令用于逐个询问修改数据。
- 空格表示 接受并继续;
- 回车表示 结束修改。
-
u 段地址:偏移地址这个命令用来查看当前内存位置中数据对应的汇编指令。
u是什么的缩写?词汇量穷啊,就当成是un machine language来记吧。还有还有view,发音里有个u!view un-machine language。
-
a 段地址:偏移地址这个命令是用来写汇编指令的,从这个输入的起始地址开始写入 。
a肯定是assembly language的缩写了,汇编语言呀 。
这是第二遍敲的,第一遍忘记截图了。
-
t这个命令用来执行CS:IP处的指令。
t我怀疑是next的缩写,一直下一步、下一步。。。
CS和IP是8086两个寄存器,还没学到,先记住t命令是从CS:IP处开始执行的就行了。不用太着急,厚积薄发。
-
q这个命令是用来退出debug程序的。
q一定是quit [kwɪt] 的缩写了!