调试程序 DEBUG DEBUG. exe是DOS提供的一个调试汇编语言程 序的程序 每个版本的DOS都带有该程序 DEBUG程序采用的是命令行方式 使用不方便,但实用性强 是学习汇编语言程序、计算机硬件等课程的有效 工具. 其他调试程序: Turbo Debugger( TD.exe) Code view Softice
2 调试程序DEBUG DEBUG.exe 是 DOS提供的一个调试汇编语言程 序的程序 每个版本的DOS都带有该程序。 DEBUG程序采用的是命令行方式 使用不方便,但实用性强. 是学习汇编语言程序、计算机硬件等课程的有效 工具. 其他调试程序: Turbo Debugger ( TD.exe ) Code View Softice
DEBUG主要命令一览 命令 功能简介 R显示修改寄存器内容 RF显示、修改w内容 A汇编指令 U反汇编 单步、多步执行指令 P单步、多步执行排指令 G连续执行指令 D显示内存内容 E修改内存内容 W|将内存块写入文件 L将文件调入内存 I读入端口的内容 O将数据写入端口 LQ退出DEBG,返回DOS
3 DEBUG 主要命令一览 命令 功能简介 R 显示、修改寄存器内容 RF 显示、修改PSW内容 A 汇编指令 U 反汇编 T 单步、多步执行指令 P 单步、多步执行指令 G 连续执行指令 D 显示内存内容 E 修改内存内容 W 将内存块写入文件 L 将文件调入内存 I 读入端口的内容 O 将数据写入端口 Q 退出DEBUG,返回DOS
DEBUG程序的具体作用: 1.查看修改寄存器,内存单元的内容; 2.学习寻址方式和指令系统; 3.了解计算机取指令,执行指令的工作过程; 4.调试有问题的汇编语言程序
4 DEBUG程序的具体作用: 1. 查看/修改寄存器, 内存单元的内容; 2. 学习寻址方式和指令系统 ; 3. 了解计算机取指令, 执行指令的工作过程; 4. 调试有问题的汇编语言程序
注意: DEBUG下符号与标志的对应关系 《实验指导书》附录 标志名称 溢出标志 OF OV NV 方向标志 DF DN UP 中断标志 IF EI DI 符号标志 SF NG PL 零标志ZFZR|NZ 辅助标志 AF AC NA 奇偶标志 PF PE PO 进位标志 CF CY NC
5 注意:DEBUG下符号与标志的对应关系 《实验指导书》附录 标志名称 1 0 溢出标志 OF OV NV 方向标志 DF DN UP 中断标志 IF EI DI 符号标志 SF NG PL 零标志 ZF ZR NZ 辅助标志 AF AC NA 奇偶标志 PF PE PO 进位标志 CF CY NC
课后可参照下列步骤做实验: D >DEBUG K ;进入 DEBUG R冷 ;查看当前各寄存器的内容 AX=0000BX=0000CX=0000DX=0000SP= FFEE BP=0000SI0000DI=0000 DS=1271ES=1271SS=1271Cs=1271IP=0100 NV UP EIPL NZ NA PO NC 1271:0100B83412 MOV AX,1234 D0:0冷 ;查看0:0~7FH内存块的内容 00000090FC90065047000-1600EB0765047000…ep…ep. 0000:00106504700054FF00F0-587F00F0F5E700F0ep.TX… U FFFF: 0Y ;反汇编FF:0处的指令 FFFF: 0000 CD19 INT 19 FFFF: 0002 E000 LOOPNZ 0004 、、、、、 6
6 课后可参照下列步骤做实验: 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 Ý ;查看 0:0~7FH内存块的内容 0000:0000 9E 0F 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 CD19 INT 19 FFFF:0002 E000 LOOPNZ 0004
-A Y ;汇编一条指令 1271:0100 MOVAX,1234 1271:0103 T=100女 ;执行该指令 AX=1234BX=0000CX=0000DX=0000SP= FFEE BP=0000SI0000DI=0000 DS=1271ES=1271SS=1271CS=1271IP=0103 NVUP EIPL NZ NA PO NC 1271:0103E9C300JMP01C9 R女 查看指令执行后结果 AX=1234BX=0000CX=0000DX=0000SP= FFEE BP=00sI=0000DI=0000 DS=1271ES=1271SS=1271CS=1271IP=0103 NVUP EIPL NZNA PO NC Q 退出 DEBUG D:
7 -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 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 EI PL NZ NA PO NC -Q Ý ;退出DEBUG D:\>
3.42算术运算指令 1.加法指令 2.减法指令 3.乘法指令 4.除法指令
8 3.4.2 算术运算指令 1.加法指令 2.减法指令 3.乘法指令 4.除法指令
(3)加1指令INC(单操作数指令) 格式: INc reg INc reg/mem 例: INC AL INC BYTE PTR [BX+41 本指令除CF外对其余标志均有影响 (4)BCD码的加法十进制调正指令AAA和DAA ◆AA本指令对在AL中的由两个未组合的BCD码 相加后的结果进行调正,得到一个正确的未组 合的BCD码
9 (3) 加1指令INC(单操作数指令) 单操作数指令) 格式: INC reg INC reg/mem 例: INC AL INC BYTE PTR[BX+4] 本指令除CF外对其余标志均有影响。 (4)BCD码的加法十进制调正指令AAA和DAA AAA 本指令对在AL中的由两个未组合的BCD码 相加后的结果进行调正,得到一个正确的未组 合的BCD码
例1 MOV AL, 08 00001000 ADD AL,09+00001001 00010001 结果应为17,而计算机相加为11H,原因在 于运算过程中,如遇到低4位往高4位产生进位时 (此时AF=1)按逢十六进一的规则,但BCD码要 求逢十进一,因此只要产生进位就会丢掉一个6, 这就要进行加6调正
10 例1: MOV AL,08 0000 1000 ADD AL,09 +0000 1001 0001 0001 结果应为17,而计算机相加为11H,原因在 于运算过程中,如遇到低4位往高4位产生进位时 (此时AF=1)按逢十六进一的规则,但BCD码要 求逢十进一,因此只要产生进位就会丢掉一个6, 这就要进行加6调正
实际上当低4位的结果>9(即A~F之间)时, 也应进行加6调正。 如上面的结果进行加6得: 00010001 +00000110 00010111
11 实际上当低4位的结果>9(即A~F之间)时, 也应进行加6调正。 如上面的结果进行加6得: 0001 0001 + 0000 0110 0001 0111