汇编语言程序编写调试说明_第1页
汇编语言程序编写调试说明_第2页
汇编语言程序编写调试说明_第3页
汇编语言程序编写调试说明_第4页
汇编语言程序编写调试说明_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、要在计算机上执行汇编语言程序,其操作步骤如下: 1. 编辑源程序 使用编辑软件将汇编源程序输入到计算机中,建立*.ASM文件。 2.汇编源程序 使用汇编程序将汇编源程序汇编成目标代码文件,即生成*.OBJ文件。 目前使用较多的汇编程序是宏汇编程序MASM。 C>MASM A13. 连接目标程序文件生成可执行文件 生成OBJ文件后,必须用LINK程序连接目标代码程序和库函数代码生成可执行文件,生成的文件的扩展名为EXE。 C>LINK A1 4.程序的执行 建立了EXE文件后,就可以在DOS下直接执行程序了。 C>A1汇编程序调试工具debug命令:DEBUG调试命令介绍1.

2、主要调试命令:(1) 反汇编命令U:将存储器中的二进制数据翻译成较有意义的助记符形式,以帮助理解,如图1.5所示。一般常用以下三种格式:a) -U:从当前IP处开始,对连续约32字节内容反汇编。如对TEST.EXE,刚装入DEBUG时的IP=0000,则在输入U命令后有如下显示:-U13C2:0000 B402MOV AH,0213C2:0002 B241 MOV DL,4113C2:0004 CD21 INT 2113C2:0006 B44C MOV AH,4C13C2:0008 CD21 INT 21 13C2:000A 8B4606 MOV AX,BP+06 13C2:0020 8B07

3、 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

4、=0123处开始,对连续约32字节内容反汇编。c) U 0123 0143:从指定的IP=0123处开始反汇编,直至指定的0143处结束。(2) 显示寄存器命令R:显示或修改寄存器的内容,如图1.6所示。一般常用以下形式:a) -R:显示所有寄存器当前的内容及当前将执行的指令。如对TEST.EXE,在程序运行之前,键入R命令:-RAX=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:0

5、000 B402MOV AH,02 -图1.6 显示寄存器命令执行结果在显示寄存器内容时,状态标志寄存器F表示成各个分离的标志位,其意义如下表1.1所示:表1.1 标志寄存器的标志为含义溢出方向中断符号零辅助进位奇偶进位0NVUPDIPLNZNAPONC1OVDNEINGZRACPECYb) -R AX:显示指定的AX寄存器当前的内容,并等待键入新值;如果不作修改,可直接回车。如:-R AXAX 0000:4321-c) -R F:显示标志寄存器F各个标志位的内容,并等待键入新的标志位;如果不作修改,可直接回车。如:-R FNV UP EI PL NZ NA PO NC -ZR-(3) 运行命

6、令G:使程序在DEBUG控制下运行,一般有全程、断点运行两种方式。a) -G:控制程序由当前IP处运行,直至程序结束。如果当前IP为初始值,其作用则相当于直接在DOS下运行程序,一般用于快速观察程序的运行情况,如图1.7所示。图1.7 运行命令执行结果b) -G 0008:控制程序由当前IP处运行,直至指定的断点IP=0008H处,程序暂停,显示各个寄存器的当前值及断点处指令,然后返回DEBUG提示符“-”下。如对TEST.EXE,若想观察字符串显示的入口参数是否设置好,则可以断点运行至0008处:-G 0008AX=4C41 BX=0000 CX=000A DX=0041 SP=0000 B

7、P=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命令后有如下显示:-TAX=0200 BX=0000 CX=000A DX=

8、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 单步命令执行结果单步命令一般用于需对程序运行作仔细分析的地方,如判断分支转移、观察运算结果等。若能综合运用断点及单步指令,则可大大提高DEBUG 调试的速度及效率。但应注意,当IP指针位于INT 21H一类指令处时,执行T命令将会使程序进入该功能调用子程序中,因此,这种情况下最好不用T命令,而用断点运行命令跳过该类功能调用指令。(5)

9、 修改存储单元命令 E:一般常用以下二种形式:a)E起始地址 内容表 :按内容表的内容修改从起始地址开始的多个存储单元内容,即用内容表指定的内容来代替存储单元当前内容,如图1.10所示。例如:E DS:0100 'ABC' 12 34表示从DS:0100 为起始单元的连续五个字节单元内容依次被修改为'A'、'B'、'C'、12H、34H。图1.10 修改存储单元命令执行结果b)E地址 :逐个修改指定地址单元的当前内容。如:E DS:011013B2:0110 26.55其中13B2:0110单元原来的值是26H,55H为输入的修改

10、值。若只修改一个单元的内容,这时按回车键即可;若还想继续修改下一个单元内容,此时应按空格键,就显示下一个单元的内容,需修改就键入新的内容,不修改再按空格跳过,如此重复直到修改完毕,按回车键返回DEBUG“-”提示符。如果在修改过程中,将空格键换成按“-”键,则表示可以修改前一个单元的内容。(6) 显示内存命令D:以十六进制及ASCII两种方式显示内存区的二进制数据,通常用来观察数据段内的缓冲区内容。一般常用以下二种形式:a) -D:从0000单元开始,连续显示128个内存单元的内容,如果继续键入D命令,则继续显示后128个单元内容。例如:-D DS:010013B2:0100 41 42 43

11、 12 34 21 B4 4C-CD 21 8B 46 06 8B 56 08 ABC. 4 !. L. !. F . . V.13B2:0110 55 66 47 0A 75 09 26 39 -57 0C 75 03 E9 09 FF 26 UFG.u. &9W. u.&13B2:0170 7D FF 80 72 0B 8A 5D FF-2A FF 38 A7 C4 01 75 1D > . u .-在上例中,128个单元分成8行,每行16个单元,每个单元的内容分别以十六进制形式和ASCII码形式显示。如果该单元的内容不是可显示字符,则在ASCII区内显示为“.”。b) D 0123 0143:从指定的0123单元开始显示,直至指定的0143单元结束。(7) 装载命令L:用来将被调

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论