资源描述:
《在debug环境下建立和汇编程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、在debug环境下建立和汇编程序一,(1)进入debugC:debug回车(2)输入程序并汇编-A100回车0AF0:0100movdl,38回车0AF0:0102movah,2回车0AF0:0104int21h回车0AF0:0106int20h回车0AF0:0108回车(3)运行程序-g=1008Programterminatednormally如果想分析该程序的指令,可使用反汇编命令U(4)反汇编-u100,108回车0AF0:0100B238MOVDL,30AF0:0102B402MOVAH,00AF0:0104CD21INT210AF
2、0:0106CD20INT200AF0:010856PUSHSI(5)将机器指令程序送到起始地址为200h的单元-e200b2,38,b4,02,cd,21,cd,20,56-g=2008Programterminatednormally・二,常用debug命令介绍(1)显示,修改寄存器内容显示所冇寄存器内容格式:-r回车功能:以十六进制形式显示cpu内部个寄存器的值;以符号形式显示标志寄存器的各标志位(除tf外)的值;并将CS:IP所指的内存内容反汇编成一•条指令,可视为将要执行的指令。如:-r回车AX=0000BX=OOOOCX=OOOOD
3、X=OOOOSP=FFEEBP=OOOOSI=0000DI=0000DS=OAFOES=OAFOSS=OAFOCS=OAFOIP=0200NVUPElPLNZNAPONC0AF0:0200B238MOVDL,38矢□:cs=OAFOh,IP=0100h修改寄存器榕式:一r寄存器名回车-rdsDSOAF:OAEO-rds的内容由原来的OafOh修改为OaeOh修改标志值格式:-rf例:-rfNVUPElPLNZNAPONC-ovng回车将of,sf的值分别修改为1。⑵汇编,反汇编指令汇编命令A格式:一A内存地址回车例:调用dos中02h号功能显示
4、字符'訂,将该程序汇编到1270:100h开始的内存中。-A1270:1001270:0100mov,ah,21270:0102mov,dl,611270:0104int211270:0106int201270:0108-反汇编命令U格式:一u内存块回年功能:分三列显示反汇编的结果,第一列为指令首地址,第二列为16进制形式的指令机器码,第三列为指令的助记符。-u1270:1001270:0100B402MOVAH,021270:0102B261MOVDL,611270:0104CD21INT211270:0106CD20INT201270:01
5、080000ADD[BX+SI],AL1270:010A0000ADD[BX+SI],AL1270:010C0000ADD[BX+SI],AL1270:010E0000ADD[BX+SI],AL1270:01100000ADD[BX+SI],AL1270:01120000ADD[BX+SI],AL1270:01140000ADD[BX+SI],AL1270:01160000ADD[BX+SI],AL1270:01180000ADD[BX+SI],AL1270:011A0000ADD[BX+SI],AL1270:011C0000ADD[BX+SI
6、],AL1270:011E0000ADD[BX+SI],AL・(3)执行程序1•单步执行格式:一t=内存地址冋车格式:一p=内存地址回车功能:用命令中的内存地址的段地址和偏移地址修改CS和ip,然后执行由cs:ip指向的内存单元处的一条指令,显示各寄存器的值,并反汇编下一条指令,返回debug状态。例:-t=1270:100AX=0200BX=OOOOCX=0000DX=0000SP=FFEEBP=OOOOSI=0000DI=0000DS=OAEOES=OAFOSS=OAFOCS=1270IP=0102OVUPElNGNZNAPONC1270:
7、0102B261MOVDL,61-执行结果:ah=2,cs值不变,ip的值增加2,cs:ip指向第二条指令2.多步执行格式:一t=内存地址执行指令的条数格式:一p=内存地址执行指令的条数命令t和p的不同:one:带重复前缀rep/repnz/repz的串操作指令和loop/loopz/loopn等循环指令是与cs和关的指令。用t命令执行这类指令时,每执行一次,ex值减一,就停卜.来返回debug;而p命令执行时,一肓执行到cx=0,执行其后的下一条指令,才返冋debugtwo:调用指令call及中断调用指令int,由于这类指令修改了cs和ip,
8、使程序结构产生转向。用t命令则在cs:ip(子程序)入口处停下来返回debug,nJ"用t命令进行跟踪。而用P命令则显示call和int的下一条指令如