分
实验七 调试程序DEBUG
实验目的
熟悉调试程序DEBUG,掌握调试程序DEBUG操作步骤。
实验内容
(1)掌握调试程序DEBUG的基本命令。
(2)在DEBUG下查看开机后执行的第一条指令。 (3)在DEBUG下查看数据在内存中的存放情况。
基本操作
1.调试程序DEBUG
DEBUG.EXE是DOS提供的一个调试汇编语言程序的程序,每个版本的DOS都带有该程序。 DEBUG程序采用的是命令行方式,使用不方便,但实用性强,是学习汇编语言程序、计算机硬件等课程的有效工具。
1)DEBUG的主要命令
DEBUG的主要命令如表实2-1所示。
表实2-1 DEBUG主要命令一览表
26 第 页
2)DEBUG程序的具体作用
(1)查看/修改寄存器、内存单元的内容。 (2)学习寻址方式和指令系统。
(3)了解计算机取指令,执行指令的工作过程。 (4)调试有问题的汇编语言程序。
注意:DEBUG下符号与标志的对应关系如表实2-2所示。
表实2-2 DEBUG下符号与标志位对应表
2.操作步骤
1)基本命令实验
D:\>DEBUG ; 进入DEBUG
-R ; 查看当前各寄存器的内容 AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=1271 ES=1271 SS=1271 CS=1271 IP=0100 NV UP EI PL NZ NA PO NC
1271:0100 B83412 MOV AX,1234
-D 0:0 ; 查看O:O~7FH内存块的内容 0000:0000 9E OF C9 00 65 04 70 00-16 00 EB 07 65 04 70 00 ....e.p.....e.p. 0000:0010 65 04 70 00 54 FF 00 F0-58 7F 00 F0 F5 E7 00 F0 e.p.T...X....? : :
-U FFFF:0 ; 反汇编FFFF:0处的指令 FFFF:0000 CDl9 INT 19 FFFF:0002 E000 LOOPNZ 0004 : :
-A ; 汇编一条指令 1271:0100 MOV AX,1234 1271:0103
-T = 100 ; 执行该指令 AX=1234 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=1271 ES=1271 SS=1271 CS=1271 IP=0103 NV UP EI PL NZ NA PO NC
27 第 页
1271:0103 E9C300 JMP 01C9
-R ; 查看指令执行后结果 AX=1234 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI。0000 DS=1271 ES:1271 SS=1271 CS=1271 IP=0103 NV UP E1 PL NZ NA PO NC
-Q ; 退出DEBUG D:\>
2)在DEBUG下查看开机后执行的第一条指令
D:\>DEBUG ; 进入DEBUG
-u FFFF:0 ; 反汇编FFFF:0处的指令 : ; 显示指令 -Q ; 退出DEBUG
3)在DEBuG下查看数据在内存中的存放情况
D:\>DEBUG ; 进入DEBUG
-A ; 汇编一条传送指令 1693:0100 MOV word ptr[O],1234 1693:0106
-T ; 执行该指令 AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1693 ES=1693 SS=1693 CS=1693 IP=0106 NV UP E工PL NZ NA PO NC 1693:0106 50 PUSH AX
-D DS:0 ; 查看结果 1693:0000 34 12 FF 9E OO 9A EE FE-lD F0 4F 03 18 10 8A 03 1693:0010 18 10 17 03 18 10 23 OE-0l 0l 01 00 02 FF FF FF
-Q ; 退出DEBUG 讨论
1.开机后的第一条指令应该在内存的什么区域?是在ROM还是RAM中?为什么? 2.开机后执行的第一条指令的地址是否固定?为什么?
28 第 页
实验八 内存操作数及寻址方法
实验目的
(1)熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
29 第 页
(2)掌握数据在内存中的存放方式和内存操作数的几种寻址方式。 (3)掌握简单指令的执行过程。
实验内容
(1)求两数和程序与两数多字节加减法程序。 (2)求累加和程序。
(3)求多个多字节数据的加法程序。
实验器材
依据自己计算机写出硬件配置。
基本操作
(1)求两数和程序与两数多字节加减法程序。
MOV AX,1234 直接寻址 MOV [1000],AX MOV BX,1002
MOV BYTE PTR[BX],20 MOV DL,39 INC BX
MOV [BX],DL DEC DL MOV SI,3
MOV [BX+SI],DL MOV [BX+SI+1],DL
MOV WORD PTR[BX+SI+2],2846
①用A命令输入上述程序,并用T命令逐条运行。 ②每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容,注明是什么寻址方式。
注意:D命令显示结果中右边的AscII字符及双字节数存放法。
注意将相应的信息写在对应的语句旁,用注释方式
(2)求累加和程序。
MOV BX,1000 MOV CX,10 SUB AX,AX LOP:ADD AL,[BX] ADC AH,O INC BX J:LOOP LOP INT3
①用A命令将程序输入到100H开始的内存中,在输入时记下标号LOP和J的实际地址,在输入LOOP指令时LOP用实际地址值代替。
②用命令N AA将此程序命名为文件AA(文件名可任取)。
30 第 页