一、实验目的。
1.学会用debug输入、更改、跟踪、运行汇编程序;
2.掌握debug的常用命令,并能熟练应用;
3.了解数据在内存中的存储情况及堆栈中数据的压入与弹出。
4.掌握各种寻址方法以及简单指令的执行过程。
二、实验要求。
1.实验前先预习附录1的内容,写出完成各实验内容的汇编程序清单。
2.本实验要求在pc机上进行。
3.本实验只要求在debug调试状态下进行,包括汇编程序,调试程序,执行程序。
三、实验内容。
1.实验内容。
学习用debug调试工具进行源程序的输入、汇编、调试和执行。
1)打开计算机,将系统切换到ms-dos方式下,运行debug应用程序,将出现debug的命令提示符“-”
2)在debug命令提示符后键入“a100”
a100其中a表示debug中的汇编命令(英文单词汇编assemble的首字母),100表示汇编语言源程序从偏移地址为0100h的地方开始存放,debug默认输入的数字为十六进制数。
回车后,屏幕上会出现类似下面的内容:
13b1:0100(具体到某台计算机所产生的段地址和偏移地址可能有所不同)
其中13b1表示段地址为13b1h,偏移地址是我们刚给出的0100h,这表示在地址13b1:0100处,debug等待用户键入程序助记符,下面键入程序:
13b1:0100 mov dl,1
13b1:0102 mov ah,2
13b1:0104 int 21
13b1:0106 int 20
13b1:0108
其中前三行指令表示调用dos的2号功能调用(寄存器ah中的值),在屏幕上显示寄存器dl所对应的ascii字符。
3)在debug的命令提示符后键入g,这是执行程序的命令,然后回车,就可以看到结果了。
gprogram terminated normally
4)现在让我们用”d”命令来查看一下存储单元的情况。
d100,10f
上面的命令表示要查看当前段内、偏移地址为0100h~010fh内存单元的存储情况。回车后将得到以下结果。
13b1:0100 b2 01 b4 02 cd 21 cd 20-00 00 00 00 00 00 00 00
在100h~107h这8个字节单元内,程序覆盖了原来的内容,例如b2 01是指令mov dl,1的机器码,也可以知道这条指令是一条两字节的指令,需占两个字节的内存空间;cd 20则表示int 20这条指令的机器码。右边省略号及字符是组成程序的ascii码等价字符,圆点表示不可显示字符。
5)下面我们用反汇编命令来查看一下所键入的程序。”u”命令的格式是“u起始地址,终止地址”,即把起始地址到终止地址之间的十六进制码反汇编成汇编语言助记符语句。键入。
u100,107
13b1:0100 b201mov dl,01
13b1:0102 b402mov ah,02
13b1:0104 cd21int 21
13b1:0106 cd20int 20
大家在屏幕上不仅可看到地址和助记符,而且还可以看到与汇编语言等价的机器语言。
6)现在我们修改存储单元的内容,看看显示情况有何变化。
e10113b1:0101 01.41ga
program terminated normally
其中13b1:0101 01.41表示将内存地址为13b1:0101的存储单元的内容01h修改为41h,而41h是字符a的ascii码,因此执行后在屏幕上将显示字符“a”。
7)下面我们给刚写的这个程序起个名字并存盘。在debug提示符后键入”n”后紧跟程序名及扩展名。
rbxbx 0000
rcxcx 0000
wwriting 00008 bytes
其中是我们给刚才那一小段程序(共4行指令,8个字节)起的名字,扩展名为com的文件也为可执行文件。在保存文件时需指出文件的大小,文件的字节数必须事先放在bx和cx中,其中bx保存文件字节数的高16位,cx保存低16位,即用32位二进制数来保存文件的大小。若文件不超过64kb,则将bx设置为0,用cx保存文件的实际字节数。
”r”命令为修改寄存器的命令。本例中,文件的实际字节数只有8个,故只修改了cx寄存器的内容。”w”为将文件写入磁盘的命令。
8)结束后可用q命令退出debug程序。
1、显示存储单元的命令d(dump)
2、修改存储单元内容的命令有两种。
输入命令-e(enter)
填写命令-f(fill)
3、显示和修改某个寄存器内容-r
4、运行命令g
5、跟踪命令t
6、反汇编命令u
7、命名命令 n
8、装入命令 l
9、写入命令 w
10、退出debug命令q
2.实验内容2
给寄存器ax、bx赋值为ax=3000h,bx=5000h,要求利用堆栈将ax和bx的内容进行交换。用debug进行汇编与调试。
3.实验内容3
先用debug的e命令给偏移地址为0300h ~ 0305h的内存单元存入11h,22h,33h,44h,55h。输入以下程序,分析每条指令中源操作数的寻址方式,单步执行程序,观察每条指令执行后寄存器ax的值。
程序清单如下:
mov bx,0300立即寻址。
mov si, 0002立即寻址。
mov ax,bx寄存器寻址。
mov ax,0304h立即寻址。
mov ax,[0304h直接寻址。
mov ax,[bx寄存器间接寻址。
mov ax,0001[bx基址相对寻址。
mov ax,[bx][si变址相对寻址。
mov ax,0001[bx][si] 基址变址相对寻址。
4.实验内容4
给寄存器ax赋值0002h,编写程序将ax的内容乘10,要求用移位的方法完成。注意:左移指令用shl,而不能使用sal
实验报告。课程名称。
实验名称。实验日期。
学生专业。学生学号。
学生姓名。实验室名称。
教师姓名。成绩。
南京理工大学机械工程学院。
实验一DEBUG命令及其操作作业 2
一 实验目的。1 学会用输入 更改 跟踪 运行汇编程序 2 掌握的常用命令,并能熟练应用 3 了解数据在内存中的存储情况及堆栈中数据的压入与弹出。4 掌握各种寻址方法以及简单指令的执行过程。二 实验要求。1 实验前先预习附录的内容,写出完成各实验内容的汇编程序清单。2 本实验要求在机上进行。3 本实...
实验一 二及其答案
实验一 二 matlab的基础操作。一 实验目的。1 掌握matlab的启动和退出。2 熟悉matlab的命令窗口。3 熟悉常用菜单和工具栏。4 熟悉变量及其赋值方法。二 实验内容。1 上机运行教材2.1节中的例子,直至理解为止。2 自定义一个变量,然后分别用8种不同的数字显示格式显示查看。提示 利...
高一化学实验基本操作
第二单元研究物质的实验方法。第3课时常见物质的检验。学习目标。1 掌握常见离子和官能团的检验方法。2 掌握离子检验的一般程序和基本操作,初步掌握有机物官能团检验的一般思路和程序。3 能够设计离子检验和官能团检验的实验方案并能对实验过程进行评价。知识要点。知识点1 常见阳离子的检验方法 知识点2 常见...