熟悉、使用DEBUG调试工具实验报告.doc
文本预览下载声明
实验目的:
借助DEBUG程序发现汇编语言程序的错误并加以改正
实验过程:
一,在debug环境下建立和汇编程序(1)进入debugC:\debug 回车(2)输入程序并汇编-A 100 回车0AF0:0100 mov dl,38 回车0AF0:0102 mov ah,2 回车0AF0:0104 int 21h 回车0AF0:0106 int 20h 回车0AF0:0108 回车(3)运行程序-g=1008Program terminated normally如果想分析该程序的指令,可使用反汇编命令U(4)反汇编-u 100,108?? 回车0AF0:0100 B238????????? MOV???? DL,30AF0:0102 B402????????? MOV???? AH,00AF0:0104 CD21????????? INT???? 210AF0:0106 CD20????????? INT???? 200AF0:0108 56??????????? PUSH??? SI(5)将机器指令程序送到起始地址为200h的单元-e 200 b2,38,b4,02,cd,21,cd,20,56-g=2008Program terminated normally-二,常用debug命令(1)显示,修改寄存器内容显示所有寄存器内容格式:-r? 回车功能:以十六进制形式显示cpu内部个寄存器的值;以符号形式显示标志寄存器的各标志位(除tf外)的值;并将CS:IP所指的内存内容反汇编成一条指令,可视为将要执行的指令。如:-r?? 回车AX=0000? BX=0000? CX=0000? DX=0000? SP=FFEE? BP=0000? SI=0000? DI=0000DS=0AF0? ES=0AF0? SS=0AF0? CS=0AF0? IP=0200?? NV UP EI PL NZ NA PO NC0AF0:0200 B238????????? MOV???? DL,38知:cs=0AF0h,IP=0100h
修改寄存器格式:-r? 寄存器名? 回车-r dsDS 0AF:0AE0-rds的内容由原来的0af0h修改为0ae0h
修改标志值格式:-rf
例:-rfNV UP EI PL NZ NA PO NC? -ov ng 回车将of,sf的值分别修改为1。(2)汇编,反汇编指令汇编命令 A格式:-A 内存地址? 回车
例:调用dos中02h号功能显示字符‘a’,将该程序汇编到1270:100h开始的内存中。-A1270:1001270:0100 mov,ah,21270:0102 mov,dl,611270:0104 int 211270:0106 int 201270:0108-
反汇编命令 U格式:-u 内存块? 回车功能:分三列显示反汇编的结果,第一列为指令首地址,第二列为16进制形式的指令机器码,第三列为指令的助记符。-u 1270:1001270:0100 B402????????? MOV???? AH,021270:0102 B261????????? MOV???? DL,611270:0104 CD21????????? INT???? 211270:0106 CD20????????? INT???? 201270:0108 0000????????? ADD???? [BX+SI],AL1270:010A 0000????????? ADD???? [BX+SI],AL1270:010C 0000????????? ADD???? [BX+SI],AL1270:010E 0000????????? ADD???? [BX+SI],AL1270:0110 0000????????? ADD???? [BX+SI],AL1270:0112 0000????????? ADD???? [BX+SI],AL1270:0114 0000????????? ADD???? [BX+SI],AL1270:0116 0000????????? ADD???? [BX+SI],AL1270:0118 0000????????? ADD???? [BX+SI],AL1270:011A 0000????????? ADD???? [BX+SI],AL1270:011C 0000????????? ADD???? [BX+SI],AL1270:011E 0000????????? ADD???? [BX+SI],AL-
(3)执行程序
1.单步执行格式:-t=内存地址
显示全部