- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编工具介绍
汇编工具介绍
1.1.调试工具debug的使用及基本指令的用法
DEBUG调试程序能使用户接触到计算机内部,允许用户直接观察和修改CPU的寄存器;能观察、修改内存单元;允许直接输入机器指令并单步执行;能反汇编程序。可以说,debug是观察和了解计算机内部运行情况的有利助手。
DEBUG程序是DOS操作系统下输入、调试和运行汇编语言程序的工具软件。它用于调试汇编语言程序,能使用户接触到计算机内部,允许用户直接观察和修改CPU的寄存器;能观察、修改内存单元;允许直接输入机器指令并单步执行;能反汇编程序,可以说,debug是观察和了解计算机内部运行情况的有利助手。在WINDOWS操作系统下的DOS提示符下也可以运行DEBUG程序。DOS命令提示符下是虚拟8086模式,在DEBUG下只能运行16位机的指令。DEBUG中的数的表示都是十六进制数,且十六进制数后面不用H表示,以字母开头的十六进制数前面也可以不以0开头;DEBUG中不允许用标识符;DEBUG中不区分大小写,大小写可以混合使用。
一. DEBUG程序的启动
1.启动DEBUG可使用两种方法:
在DOS提示符下直接键入:CDEBUG↙
DEBUG即被调入内存并启动运行,显示DEBUG的提示符“—”。
在DOS提示符下直接键入:CDEBUG 文件名↙
DEBUG即被调入内存并启动运行,然后将指定的文件掉入内存,显示DEBUG的提示符“—”。文件名必须写全称。
DEBUG启动后各寄存器的状态:
以第一种方法启动DEBUG后各寄存器的状态:
段寄存器(DS,ES,SS和CS)置为DEBUG程序末尾的第一个段的段边界值;
指令指示器IP的值为0100H;
堆栈指示器SP的值为0FFEEH;
AX、BX、CX、DX、SI、DI和BP均置为0;
标志寄存器的状态为NV(OF=0),UP(DF=0),EI(IF=1),PL(SF=0),NZ(ZF=0),NA(AF=0),PO(PF=0),NC(CF=0)。
以第二种方法启动DEBUG后各寄存器的状态:
若DEBUG装入的程序是非执行程序(非.EXE文件),除BX、CX外,各寄存器的值与第一种方法启动时相同。BX、CX为文件长度。
若装入的程序是可执行程序(.EXE文件),DEBUG将其重新定位:
段寄存器CS和SS 、IP和SP置成程序中规定的值,DS和ES置为程序段前缀的段地址;
BX、CX为可执行程序的文件长度,AX、DX、SI、DI、BP置为0;
标志寄存器的状态与第一种方法启动时相同。
3.观察及修改CPU内部的各寄存器
-r (观察各寄存器的内容
AX=0000 BX=0000 CX=0000 DX=0000 SP=CFDE BP=0000 SI=0000 DI=0000
DS=10DD ES=10DD SS=10DD CS=10DD IP=0100 NV UP DI PL NZ NA PO NC
10DD:0100 7C0A JL 010C (标志寄存器的各个标志位)
(当前CS:IP所指向的指令)
标志寄存器各标志位的含义:
溢出标志OF: OV/NV(1溢出/0不溢出)
方向标志DF: DN/UP(1减/0增)
中断标志IF: EI/DI(1开中断/0关中断)
符号标志SF:NG/PL(1负/0正)
零标志ZF: ZR/NZ(1零/0非零)
辅助进位AF:AC/NA(1有/0无)
奇偶标志PF:PE/PO(1偶/0奇)
进位标志CF:CY/NC(1有/0无)
二.DEBUG的主要命令
DEBUG提供了19种命令,除Q(退出DEBUG)命令外,一般带有一个或多个参数,参数之间可用空格分隔。
1.显示内存单元的命令D(Display)
格式:D [地址] 或D[范围]
若命令中没有指定起始地址,则从上一个D命令所显示的最后一个单元开始(若以前没有使用过D命令,则将DEBUG初始化的段寄存器的内容加上地址偏移量0100H作为起始地址)。若指定的地址中只包含偏移量,则D命令认为段地址包含在DS中。
例:_D 200↙
显示的起始地址由DS内容(作为段地址)与200H(作为偏移量)组成,共显示80H个单元的内容。
例:_D DS:200 0400↙
显示DS:200H~DS:400H共20H个单元的内容。
例:_D DS:200 L 20↙
显示DS:200H开始共20H个单元的内容。
2.修改存储单元内容的命令E(Edit)
1)格式:E [地址] [内容表]
用内容表去代替指定范围内存单元的内容。例:
_E DS:100 F3“ABC”8D↙
内存单元:DS:100H~DS:104H这五个字节单元的内容由后表中五个字节内容替代。
2)格式:
文档评论(0)