汇编软件MASM和调试工具DEBUG的使用

时间:2022-01-11 12:02:38

汇编软件MASM和调试工具DEBUG的使用

 汇编软件MASM和调试工具DEBUG的使用汇编软件MASM和调试工具DEBUG的使用转载

第一部分 汇编软件MASM简介

(备注:MASM汇编软件不区分大小写字母)

1.1 MASM简介

汇编就是把汇编语言编写的源代码(扩展名为.asm)翻译成计算机能够识别的二进制语言序列,目前常用的汇编程序是MASM,简称宏汇编程序。宏汇编程序目前有两个版本MASM5.0MASM6.0

汇编步骤:

第一步:将源程序翻译成等价的二进制语言,形成的文件扩展名为.obj

备注:

MASM5.0编译时,汇编过程还会产生列表文件(扩展名为.LST),主要用于给出源程序和机器代码程序清单,供查询程序使用;

汇编过程还会产生交叉引用文件(扩展名为.CRF),它是为一个源程序所引用的各种符号进行前后对照的文件,主要用于给出不同文件段中互相引用的全部符号表;

这两个文件是可有可无的,可在汇编过程加以控制。

但是用MASM6.0不会产生这两个文件。

 

第二步:链接

链接就是把一个或者多个目标文件合并成一个可执行的文件(扩展名为.EXE

备注:

链接过程还会生出一个扩展名为.MAP的文件,它可以每个段的地址分配情况和长度;在链接的过程中还与一个库文件(扩展名为.LIB)相关。一般的汇编程序不需要库文件,只有与某些高级语言(如C语言)接口时才需要库文件,此时只需要输入库名即可。

第三步:运行

在此过程中,常用的调试工具是DEBUG

 

1.2 应用举例

比如下面的程序:

;abcd.asm

data segment

       s1 db 'Hello World','$'

data ends

stack segment para stack

         db 64 dup(?)

stack ends

code segment

        main proc far

             assume cs:code, ds:data, ss:stack

start: push ds

          mov ax, 0

          push ax

          mov ax,data

          mov ds, ax

          mov ax,stack

          mov ss,ax

          mov ah,09h

          mov dx,offset s1

          int 21h

          ret

          main endp

code  ends

              end start

                                                                            

第一步:汇编

 示意图如下:

汇编软件MASM和调试工具DEBUG的使用

第二步:链接

示意图如下:

汇编软件MASM和调试工具DEBUG的使用
第三步:运行

示意图如下:

汇编软件MASM和调试工具DEBUG的使用

第二部分: 调试工具DEBUG的使用

(这里介绍一个常用的DEBUG命令)

2.1 A(汇编命令)

功能:从汇编语言程序创建可以执行的机器码

格式:A address

参数:address制定汇编语言程序的位置,address使用十六进制数,并且不用h结尾。

备注:如果不制定位置,它会从上次停止处得地址开始汇编。

执行效果:

汇编软件MASM和调试工具DEBUG的使用

2.2 C(表命令)

功能:比较内存的两个区域存放的内容

命令格式:C range address

参数:

range:指定第一个待比较的内存起始地址和结束地址

address:指定待比较的第二个内存区域的起始地址

使用举例:

汇编软件MASM和调试工具DEBUG的使用

2.3 D(显示内存名)

格式:D [range]

参数:range 指定显示其内容的内存区域的起始地址和长度,如果不指定range则显示从以前D命令指定的显示地址范围的末尾处开始显示128个字节内容。

使用示例:

汇编软件MASM和调试工具DEBUG的使用

 

2.4 R(寄存器显示命令)

功能:显示或者改变一个或者多个CPU寄存器的内容

格式:R [register-name]

参数:无

显示所有寄存器的内容,以及寄存器存储区域中的标志。

执行示例:

汇编软件MASM和调试工具DEBUG的使用

 

参数:[register-name]指定显示值的寄存器名,同可以还可以对值进行修改

汇编软件MASM和调试工具DEBUG的使用

 

2.5 T(跟踪命令)

功能:执行一条指令,并显示所有寄存器的内容,所有标志的状态和所执行指令的源代码形式。

命令格式:T[=address] [number]

参数:

=address指定DEBUGE启动跟踪指令的地址,如果省略,则跟踪将从当前CSIP寄存器所指定的地址开始

number:指定要跟踪的指令数,该值为十六进制数,默认值为1

汇编软件MASM和调试工具DEBUG的使用

2.6 G(运行命令)

格式:

G [=address][breakpoints]

参数:

=address:指定当前在内存中药开始执行的内存地址,如果不指定参数,将从CSIP寄存器中当前地址中开始执行程序。

breakpoints:为G命令设置的临时断点

示例如下:

汇编软件MASM和调试工具DEBUG的使用

2.7 U(反汇编命令)

格式:

U[range]

参数:

range:指定反汇编代码的起始地址和结束地址,或者起始地址和长度

无参数:则从前面U命令所显示地址的后一个地址开始,显示20h个字节内容(默认情况)

汇编软件MASM和调试工具DEBUG的使用

2.8 Q(退出命令)

DEBUG的提示符下输入Q,将会回到DOS环境下。