2024年6月8日发(作者:)
实验一 DEBUG的使用
实验目的:
通过实验掌握下列知识:
1、DOS命令: DIR,DEL,RENAME,FORMAT,COPY。
2、基本指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG
3、DEBUG的使用:掌握DEBUG的启动及其使用方法;学习DEBUG下机器汇编源
程序。
4、BCD码,ASCII码及用16进制数表示二进制码的方法。
5、常用寄存器: AX,BX,CX,DX,F,IP。
内容及步骤:
一、DOS常用命令练习:
二.DEBUG的启动:
进入DOS状态下,键入DEBUG (“ ”表示回车)即:
C:>DEBUG
则屏幕显示:
—
“—”号是进入DEBUG的提示符,在该提示符下可键入任意DEBUG命令。
三.DEBUG的常用指令:
1.有关DEBUG命令的一些共同信息:
(1)DEBUG命令都是一个字母,后面跟一个或多个参数;
(2)命令可大写或小写;
(3)可以用
(4)每个命令只有在回车后才有效;
(5)按
2.常用命令:
见课本P269—273
四.实验内容:
1. 启动DEBUG,进入DEBUG后,反复练习DEBUG的常用命令。
(1)用键盘,将DS:100H起八个内存地址单元置AAH,将DS:200H起八个内
存单元置FFH。
(2)用键盘,将AX,BX,CX,DX及DS,ES清0。
2.简单程序的执行:
(1)用E命令输入一段程序并执行,其源程序,目标代码及地址分配如下:
CS:0200 B233 MOV DL,33H ;将十六进制数‘33’存入DL中
:0202 B402 MOV AH,02H ;DOS2号功能调用
:0204 CD21 INT 21H ;屏幕显示DL内容
:0206 CD20 INT 20H ;结束
步骤:a.用E命令将目标代码写入内存CS:0200H~0207H
—E DS:200 B2,33,B4,02,CD,21,CD,20
b.用G命令从200H开始执行。
—G=CS:200
屏幕显示:
3
Program terminated normally.
—
c.用U命令反汇编
—U200 207
得到与书写一致的地址,目标代码及源程序。
若有错误,则进行调试,直致得到正确结论。
3.在汇编中若想对某一程序进行调试,可以使用debug进行单步T命令跟踪,但当
遇到调用int 21H中断输入指令时,如何进行输入以便继续跟踪调试程序?
解:遇到int 21h之类,用p即可完成中断的功能而不进入中断内部。单步调试多用
p, 除非你对某个子程感到怀疑或有兴趣了, 才用t命令进去看看, 对int类的指令也一样.
4.执行debug-a后,如果有一行输入错误,如何更改这一行?
解:
假如在Debug下进行如下输入:
-a
2129:0100 mov ax,200
2129:0103 mov bx,200
2129:0106 mov cx,200
2129:0109
此时,发现mov bx,200一句错误,应为mov bx,20,可以敲回车返回"-"状态,然后
输入:
-a 103
2129:0103movbx,20
5.在DEBUG下编写程序,在计算机屏幕上输出”ABC”
解:如下
C:DOCUME~1WANGXI~1>debug
-a 100
0AF4:0100 mov dl,41
0AF4:0102 mov ah,02
0AF4:0104 int 21
0AF4:0106 mov dl,42
0AF4:0108 int 21
0AF4:010A mov dl,43
0AF4:010C int 21
0AF4:010E int 20
0AF4:0110
-r
AX=0000 BX=0000
DI=0000
DS=0AF4 ES=0AF4
PO NC
CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000
SS=0AF4 CS=0AF4 IP=0100 NV UP EI PL NZ NA
0AF4:0100 B241 MOV DL,41
-r bx
BX 0000
:
-r cx
CX 0000
:10
-n c:
-w
Writing 00010 bytes
-q
C:DOCUME~1WANGXI~1>
'' is not recognized as an internal or external command,
operable program or batch file.
C:DOCUME~1WANGXI~1>cd
C:>cd masm
C:masm>
ABC
C:masm>
思考:BX和CX中的数值为何分别设置为0和10呢?
6. 在Debug下查看程序的内容并运行之。
解:
C:masm>debug
-n
-l
-u
0B3A:0100 B241 MOV DL,41
0B3A:0102 B402 MOV AH,02
0B3A:0104 CD21 INT 21
0B3A:0106 B242
0B3A:0108 CD21
0B3A:010A B243
0B3A:010C CD21
0B3A:010E CD20
-r
AX=0000 BX=0000
DI=0000
DS=0B3A ES=0B3A
PO NC
0B3A:0100 B241
MOV
INT
MOV
INT
INT
CX=0010
SS=0B3A
MOV
DL,42
21
DL,43
21
20
DX=0000 SP=FFFE
CS=0B3A IP=0100
DL,41
BP=0000 SI=0000
NV UP EI PL NZ NA
-g
ABC
Program terminated normally
练习
一、用A命令输入以下的程序,用单步命令T跟踪执行程序,并观察每一步的寄存器
内容和标志位的变化情况,并填写地址分配和目标代码。
地址分配 目标代码 源程序
____________ ____________ MOV AL,2
____________ ____________ PUSH BX
____________ ____________ MOV BL,AL
____________ ____________ DEC AL
____________ ____________ DEC AL
____________ ____________ DEC AL
____________ ____________ INC AL
____________ ____________ INC AL
____________ ____________ POP BX
____________ ____________ INT 20H
文件写盘操作:
(1)将上面的源程序用A命令写入CS:100起始的一片内存,再用U命令进行反汇
编,可以看出这段程序所占的内存长度。
(2)用R命令使BX,CX中包含该文件的字节数,其中BX为高位,CX为低位。
(3)—N 盘名:文件名.扩展名
-W
则将该文件写入指定磁盘中。若要检查文件是否确实写入,可用下面的读盘操作。
文件读盘操作:
—N 盘名:文件名.扩展名
—L
将文件读入CS:100起始的一片内存,再用U命令进行反汇编显示检查。
二.通过以上程序的调试和观察,试用汇编指令编一个简单的程序,将AAH,BBH,
CCH,DDH分别送AH,BH,CH,DH寄存器,用A命令输入,用T命令单步执行,观
察每一步的结果是否与预计结果相同。
三.对以下源程序进行调试,记录下每一条指令的目标代码,相应寄存器变化情况和
程序的最终执行结果。
源程序:MOV AL,30H
MOV BL,26H
ADD AL,BL
PUSH AX
POP DX
MOV AH,02H
INT 21H
INT 20H
8088常用指令练习
1、传送指令
1)用A命令在内存100H处键入下列内容:
MOV AX,1234
MOV BX,5678
XCHG AX,BX
MOV AH,35
MOV AL,48
MOV DX,75AB
XCHG AX,DX
2)用U命令检查键入的程序并记录,特别注意左边的机器码。
3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。并注
意标志位有无变化。
2、加减法指令:
1)用A命令在内存100H处键入下列内容:
MOV AH,34
MOV AL,22
ADD AL,AH
SUB AL,78
MOV CX,1284
MOV DX,5678
ADD CX,DX
SUB CX,AX
SUB CX,CX
2)用U命令检查键入的程序及对应的机器码。
3)用T命令逐条运行这些指令,检查并记录有关寄存器及ZF情况。
思考:这次运行还是打入T,行不行?怎么办?用R命令检查一下IP的内容。注意T命令与IP
的关系。
3、带进位加减法:
1)用A命令在内存200H处键入下列内容,并用U命令检查:
MOV AH,12
MOV AL,84
MOV CH,56
MOV CL,78
ADD AL,CL
ADC AH,CH
MOV DH,A7
MOV DL,58
SUB DL,7F
SBB DH,34
2)用T命令逐条运行这些指令,检查并记录有寄存器及CF内容。
3)上面这段程序若改用16位操作指令达到同样结果,怎么改?试修改并运
4、BCD码加减法
行之。
1)内容:
MOV AL,58
ADD AL,25
DAA
2)要求:用A 命令键入,U命令检查,T命令逐条运行并记录有关寄存器及AF内容。
实验报告要求:
1、16进制数加减法手算结果及实验结果
2、8088常用指令练习部分的逐条运行记录,思考结果及自编程序运行记录 (列出自编
程序)。


发布评论