汇编语言程序编写调试说明.

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

要在计算机上执行汇编语言程序,其操作步骤如下:

1. 编辑源程序

使用编辑软件将汇编源程序输入到计算机中,建立*.ASM文件。

2.汇编源程序

使用汇编程序将汇编源程序汇编成目标代码文件,即生成*.OBJ 文件。

目前使用较多的汇编程序是宏汇编程序MASM。

C>MASM A1↙

3. 连接目标程序文件生成可执行文件

生成OBJ文件后,必须用LINK程序连接目标代码程序和库函数代码生成可执行文件,生成的文件的扩展名为EXE。

C>LINK A1↙

4.程序的执行

建立了EXE文件后,就可以在DOS下直接执行程序了。

C>A1↙

汇编程序调试工具debug命令:

DEBUG调试命令介绍

1.主要调试命令:

(1)反汇编命令U:将存储器中的二进制数据翻译成较有意义的助记符形式,以帮助理解,如图1.5所示。一般常用以下三种格式:

a)-U↙:从当前IP处开始,对连续约32字节内容反汇编。如对TEST.EXE,

刚装入DEBUG时的IP=0000,则在输入U命令后有如下显示:

-U↙

13C2:0000 B402 MOV AH,02

13C2:0002 B241 MOV DL,41

13C2:0004 CD21 INT 21

13C2:0006 B44C MOV AH,4C

13C2:0008 CD21 INT 21

13C2:000A 8B4606 MOV AX,[BP+06]

………………

13C2:0020 8B07 MOV AX,[BX]

-

图1.5 反汇编命令的执行结果

在上例中,13C2:0000表示CS:IP的内容(其中CS的值是动态值);B402代表该处存放的二进制数据,亦即指令MOV AH,02H的机器代码;当连续约32字节的数据反汇编完后,重新回到DEBUG提示符“-”下,如果再键入U命令,则将继续对后面的内存区反汇编。

特别应该注意的是,由于反汇编命令针对内存区的二进制数据,而被调试程序仅占内存区的某一部分,故反汇编出来的内容并非全是被调试程序的代码,如上例中13C2:000A单元以后的部分,显然不是TEST.EXE的内容。另外还需注意,DEBUG默认使用十六进制。

b)–U 0123↙:从指定的IP=0123处开始,对连续约32字节内容反汇编。

c)–U 0123 0143↙:从指定的IP=0123处开始反汇编,直至指定的0143处

结束。

(2)显示寄存器命令R:显示或修改寄存器的内容,如图1.6所示。一般常用以下形式:

a)-R↙:显示所有寄存器当前的内容及当前将执行的指令。如对

TEST.EXE,在程序运行之前,键入R命令:

-R↙

AX=0000 BX=0000 CX=000A DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=13B2 ES=13B2 SS=13C2 CS=13C2 IP=0000 NV UP EI PL NZ NA PO NC

13C2:0000 B402 MOV AH,02

-

图1.6 显示寄存器命令执行结果

在显示寄存器内容时,状态标志寄存器F表示成各个分离的标志位,其意义如下表1.1所示:

表1.1 标志寄存器的标志为含义

b)-R AX↙:显示指定的AX寄存器当前的内容,并等待键入新值;如果

不作修改,可直接回车。如:

-R AX↙

AX 0000

:4321↙

-

c)-R F↙:显示标志寄存器F各个标志位的内容,并等待键入新的标志

位;如果不作修改,可直接回车。如:

-R F↙

NV UP EI PL NZ NA PO NC -ZR↙

-

(3)运行命令G:使程序在DEBUG控制下运行,一般有全程、断点运行两种方式。

a)-G↙:控制程序由当前IP处运行,直至程序结束。如果当前IP为初

始值,其作用则相当于直接在DOS下运行程序,一般用于快速观察程序的运行情况,如图1.7所示。

图1.7 运行命令执行结果

b)-G 0008↙:控制程序由当前IP处运行,直至指定的断点IP=0008H处,

程序暂停,显示各个寄存器的当前值及断点处指令,然后返回DEBUG提示符“-”下。如对TEST.EXE,若想观察字符串显示的入口参数是否设置好,则可以断点运行至0008处:

-G 0008↙

AX=4C41 BX=0000 CX=000A DX=0041 SP=0000 BP=0000 SI=0000 DI=0000

DS=13B2 ES=13B2 SS=13C2 CS=13C2 IP=0008 NV UP EI PL ZR NA PO NC

13C2:0008 CD21 INT 21

-

断点一般选取在需要观察的地方,当程序停下来后,可以根据各方面的情况(如寄存器、缓冲区、标志等)来判断程序是否运行正确。

(4)单步命令T:控制程序运行一条指令后暂停,显示各个寄存器的当前值及断点处指令,然后返回DEBUG提示符“-”下,如图1.8所示。例如对TEST.EXE,若当前IP为初始值,则键入T命令后有如下显示:

-T↙

AX=0200 BX=0000 CX=000A DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=13B2 ES=13B2 SS=13C2 CS=13C2 IP=0002 NV UP EI PL NZ NA PO NC

13C2:0002 B241 MOV DL,41

-

图1.8 单步命令执行结果

相关文档
最新文档