实验一 利用 DEBUG 调试汇编语言程序段

  • 格式:docx
  • 大小:275.46 KB
  • 文档页数:16

实验名称 实验一 利用 DEBUG 调试汇编语言程序段

一、 实验目的

1.熟悉 DEBUG 有关命令的使用方法;

2.利用 DEBUG 掌握有关指令的功能;

3.利用 DEBUG 运行简单的程序段。

二、 实验要求

1.仔细阅读有关 DEBUG 命令的内容,对有关命令,要求事先

准备好使用的例子;

三、 实验环境

DOS 操作系统

四、 实验内容

1.进入和退出 DEBUG 程序;

1)开始—运行点确定进入DOS命令窗口

图1进入DOS命令窗口

2) 在命令窗口中输入 dubug 进入 debug 程序

图2进入 debug 程序

3) 进入 debug 窗口后,输入 q 命令退出 debug 图3退出 debug

2.学会 DEBUG 中的

1)D 命令(显示内存数据 D 段地址:偏移地址)

例 1:-D100 ;显示 DS 段, 0100 开始的 128 个字节内容

-D ;默认段寄存器为 DS,当前偏移地址(刚进入 debug 程序偏移地址为 0100H)

图4默认显示 DS 段内容

-D DS:100 ;显示 DS 段, 0100H 开始的 128 个字节内容

图5显示 DS 段内容

-D CS:200 ;显示 CS 段, 0200H 开始的 128 个字节内容

图6显示 CS 段内容

-D 200:100 ;显示 DS 段, 0200:0100H 开始的 128 个字节内容

图7显示 DS段0200:0100H内容

-D 200 ;显示 DS 段, 0200H开始的128个字节内容

图8显示 DS段0200H开始的内容

-D 100 L 10 ;显示 DS 段, 100H 开始的 100H 个字节内容

图9显示 DS段100H开始的100H字节内容

2)E 命令(修改指定内存)

例 1:-E100 41 42 43 44 48 47 46 45

-D 100,L08

结果:073F:0100 41 42 43 44 48 47 46 45

-e 100 修改内存内容

-d 100,L08 查看刚才修改的内存内容

图10 修改和查看DS段100H开始的80H字节内容

例 2: -E 100

073F:0100 41. 42 : 42 是操作员键入此命令是将原 100 号内存内容 41 修改为 42,用 D 命令可察看。

图11修改和查看DS段中100H开始的内容

-E DS:100 F3 ‘AB’ 8D ; 把 DS 段中 0100H 开始的四个字节修改为F3 ‘AB’(A 和 B 的 ASCII 码) 8D

图12修改DS 段中 0100H 开始的四个字节

3)R 命令(显示当前寄存器的内容)

显示所有寄存器和标志位状态;

图13显示所有寄存器和标志位状态

修改寄存器AX,BX,CX的内容

图14修改寄存器AX,BX,CX的内容

4)T 命令(设置陷井,单步执行)

用命令a编写指令

图15编写T命令要执行的指令

T=指令的起始地址 单步执行三次

图16 T命令单步执行

用命令D查看内存中的十六进制码

用命令T继续执行第四条指令

后再次查看内存中的十六进制码

图17查看内存内容后继续执行

5)A 命令(将指令直接汇编成机器码输入到内存中。)

用命令A编写指令

图18 用命令A编写指令

6)G 命令等的使用(执行 A 命中输入的汇编指令)

用命令a编写指令

用R命令显示当前寄存器内容

用G命令,G=起始地址 结束地址,连续执行编写的指令

图19 G命令连续执行指令

3.用 DEBUG,验证乘法、除法、加法、减法、带进位加、带 借位减、堆栈操作指令、串操作指令的功能。

乘法

编写乘法操作指令,T命令单步执行

图20乘法

除法

编写除法操作指令,T命令单步执行

图21除法

加法

编写加法操作指令,G命令连续执行

图22加法

减法

编写减法操作指令,G命令连续执行

图23减法

带进位加

编写带进位加法操作指令,G命令连续执行

图24带进位加法

带借位减

编写带进位减法操作指令,G命令连续执行

图25带进位减法

堆栈操作指令

编写堆栈操作指令,G命令连续执行

图26堆栈操作指令

串操作指令

编写串操作指令,G命令连续执行

图27串操作指令

五、 实验心得

1、实验过程出现的问题及解决方法

(1)起初无法进入debug程序,显示illegal command:debug.

解决办法:先使用cd命令进入masm文件,再运行debug程序。

2、心得体会

通过这次实验的实际操作后,熟悉掌握了基本的debug相关指令。并用debug验证了乘法、除法、带进位加减法等操作指令。

六.拓展题

1、启动 DEBUG 后,要装入某一个.EXE 文件,应通过什么方法实现?

2、MOV、XCHG、XLAT 指令的调试。

要求:用汇编命令 A 输入以下源程序段,用 T 命令单步执行,查看

执行结果:寄存器或存储单元的值。

提示:在 DEBUG 环境下输入程序段时要省掉立即数后面的字符“H”

(1) MOV 指令的调试

程序段:MOV AL, 55H

MOV AH, AL

MOV BX, 1000H

MOV BYTE PTR[BX], 66H

MOV WORD PTR[BX+2], 77H

MOV [BX+4], AX

图28编写MOV调试指令

图29执行MOV AL, 55H

图30执行MOV AH, AL

图31执行MOV BX, 1000H

图32执行MOV BYTE PTR[BX], 66H

图33执行MOV WORD PTR[BX+2], 77H

图34执行MOV [BX+4], AX

(2) XCHG 指令的调试

程序段:

MOV AX, 0203H MOV BX, 0405H XCHG AX, BX

XCHG BL, BH

图35编写XCHG调试指令

图36执行MOV AX, 0203H

图37执行MOV BX, 0405H

图38执行XCHG AX, BX

图39执行XCHG BL, BH

(3) XLAT 指令的调试

1) 用 E 命令从 DS:200 地址开始输入数据 10H、20H、30H、40H、

50H 图40用E 命令从 DS:200 地址开始输入数据

2) 用 A 命令输入以下程序段:

MOV BX, 200 ;将数据的首地址送给 BX

MOV AL, 4 ;用 MOV 将要查找的数据的偏移地址送给 AL

XLAT ;查看结果寄存器 AL 中的值,以及从 DS:200 开始的存储单元的值。

图41

图42

图43

图45

(4) 用 DEBUG 验证乘法、除法、加法、减法等功能:

1) 验证加法和带进位加,使用 A 命令,在 DEBUG 中键入以下代码:

mov ax,f111

mov bx,f222

mov cx,2 mov dx,3 add ax,bx

adc cx,dx

使用 G 命令查看结果

图46

2) 验证减法和带借位减法,使用 A 命令,在 DEBUG 中键入以下代码:

mov ax,2

mov bx,3

mov cx,5

mov dx,2

sub ax,bx

sbb cx,dx

使用 G 命令查看结果

图47

3) 验证乘法和除法,使用 A 命令,在 DEBUG 中键入以下代码: 乘法:

mov al,b4

mov bl,11

mul bl

使用 G 命令查看结果

图48

除法:

mov ax,400

mov bl,b4

div bl

使用 G 命令查看结果

图49

4) 验证堆栈操作指令,使用 A 命令,在 DEBUG 中键入以下代码:

mov ax,1111

push ax mov ax,2222 使用 G 命令查看结果

图50

后在使用 A 命令,在 DEBUG 中键入以下代码:

pop ax

使用 G 命令查看结果

图51