dos汇编debug基本命令程序

合集下载

教程--Debug汇编入门

教程--Debug汇编入门

教程--Debug汇编入门教程-- Debug汇编入门2 第1课这一课很简单,用汇编来计算2+3 等于多少1. 打开debug.exe程序:开始菜单: "开始"→"运行(R)"输入: debug回车后打开debug.exe 程序2. debug.exe 是一个DOS界面的程序,输入: aa0回车输入: mov dx,2回车输入: add dx,3回车回车输入: t=a0回车输入: t3. 你必须按我所说的去做,当然如果你很厉害可以不那样做, 我给那些操作编个号:步骤1:输入: aa0步骤2:回车步骤3:输入: mov dx,2步骤4:回车步骤5:输入: add dx,3步骤6:回车步骤7:回车步骤8:输入: t=a0步骤9:回车步骤10:输入: t要注意步骤6和步骤7都是回车,就是连着回了两次车,现在来看一下屏幕信息,你们对照一下,看对不对:-aa00B08:00A0 mov dx,20B08:00A3 add dx,30B08:00A6-t=a0AX=0000 BX=0000 CX=0000 DX=0002 SP=FFEC BP=0000 SI=0000 DI=0000 DS=0B08 ES=0B08 SS=0B08 CS=0B08 IP=00A3 NV UP EI PL NZ NA PO NC 0B08:00A3 83C203ADD DX,+03-tAX=0000 BX=0000 CX=0000 DX=0005 SP=FFEC BP=0000 SI=0000 DI=0000 DS=0B08 ES=0B08 SS=0B08 CS=0B08 IP=00A6 NV UP EI PL NZ NA PO NC 0B08:00A6 6F DB6F 需要说明的是你显示的可能和我显示的有点区别,我显示屏上的那些0B08,你的显示可能并不是这个,而是另外一个值,4. 查看显示结果我们都知道3+2=5,可这个5显示在什么地方呢?在步骤10里, 输入: t 然后回车,可以看到显示一大堆东西,你仔细找找显示的信息,找到DX这个东西,它是这样的: DX=0005 0005就是计算的结果,当然,它总是用4位数来表示的,所以前面有三个0, 0005就是5,前面的三个0没用的,占个位置而已5. 验证当然一次不足以说明DX=0005中的0005就是计算结果,也许是一种巧合呢, 你可以试试其它的数字,看对不对6. 进制:"开始"→"运行",输入:debug,回车后打开debug.exe 程序然后按下面的步骤操作:步骤1:输入: aa0步骤2:回车步骤3:输入: mov dx,7步骤4:回车步骤5:输入: add dx,8步骤6:回车步骤7:回车步骤8:输入: t=a0步骤9:回车步骤10:输入: t步骤11: 回车你猜猜计算结果会是多少呢?我现在是7+8,我想当然的认为是15, 那就是: DX=0015 ,可真的是这样吗,执行完步骤11后,看看步骤11 输出的信息,找到DX的值,非常奇怪的竟然是DX=000F000F是十六进制的,十六进制的F就是十进制的15,明白000F是十六进制就行了6. 进制:"开始"→"运行",输入:debug,回车后打开debug.exe 程序然后按下面的步骤操作:步骤1:输入: aa0步骤2:回车步骤3:输入: mov dx,11步骤4:回车步骤5:输入: add dx,3步骤6:回车步骤7:回车步骤8:输入: t=a0步骤9:回车步骤10:输入: t步骤11: 回车你猜猜计算结果会是多少呢?我现在是11+3,我想当然的认为是14, 不过有了前一个7+8的例子的经验,我知道要把它转换成16进制度, 14的16进制是E,所以应该显示: DX=000E然而,我发现显示的竟然是: DX=0014其实在这样的汇编程序里,所有的数字都是十六进制的,上面的11是十六进制的11,3也是十六进制的3,所以如果用十进制来算:十六进制的11用10进制来表示是17,17+3=20,然后把20转换成十六进制是14,当然也可以直接做十六进制的加法:11+ 3--------14只要记住是逢16进1就行了,如十六进制的17+5:17+ 5--------1C9 debug.exe的命令符看一下:步骤1:输入: aa0步骤2:回车步骤3:输入: mov dx,11步骤4:回车步骤5:输入: add dx,3步骤6:回车步骤7:回车步骤8:输入: t=a0步骤9:回车步骤10:输入: t步骤11: 回车上面的11个步骤里,哪些是汇编代码呢?汇编代码只有两行:mov dx,11add dx,3那aa0和t是作什么用的?aa0和t是debug.exe的两个命令符想必大家对DOS命令不陌生吧,比如: ping 127.0.0.1这就是一个大家再熟悉不过的ping命令符,它接了一个IP地址参数,当然你还可以接其他的参数, 如: ping 127.0.0.1a是debug.exe的命令符,a的作用就是进入汇编编辑状态,aa0后面的a0是a的参数,你可以写成a a0或者a a0,和aa0是同一个意思,那这个参数a0是什么意思呢?当输入aa0回车后,看到下一行显示:0B08:00A0一个冒号隔开两个十六进制的数,前面那个可能不是0B08,不同的计算机可能不同,但后面的一定是00A0,00A0就是参数a0,你可以在打开debug.exe后输入: a100 ,就会看到:0B08:0100那t这个命令拿来作什么的?当执行完步骤7后,结束了汇编指令编辑,回到了debug.exe的命令符状态, 编辑汇编指令就好比绘制工程蓝图,而t 就是把工程蓝图交给施工队去施工, t=a0,那=a0是什么意思,t这个命令可以接参数,等号后面的a0就是参数,表示从地址a0开始执行, 那地址a0在哪里呢?0B08:00A0地址a0就是冒号后面的00A0,你看看00A0 后面的是什么汇编指令:0B08:00A0 mov dx,1100A0后面的指令是mov dx,11所以就从mov dx,11开始执行,但是得明白t 是单步执行的, 单步的意思是每次只执行一条汇编指令,所以输入t=a0 并回车后,计算机就执行mov dx,11执行完这条指令后就停止了,接着你再输入t 然后回车, 计算机就执行下一条汇编指令add dx,3 就这么简单10 测试上面学了debug.exe 的两个命令符a 和t还学了两个汇编指令mov 和add这四个东西可以组合成几百几千、无数种用法,你们尽量多测试,测试不同的用法,也可以试些奇怪的用法,如ta0 命令符...11 负数1.运行下面汇编指令:mov dx,8add dx,-4运行结果显示: DX=00004这样写够简单了,没什么疑问吧。

DOS的debug命令大全

DOS的debug命令大全

DOS的提示符下,可如下键入Debug启动调试程序:DEBUG [路径\文件名] [参数1] [参数2]Debug后可以不带文件名,仅运行Debug程序;需要时,再用N和L命令调入被调试程序。

命令中可以带有被调试程序的文件名,则运行Debug的同时,还将指定的程序调入主存;参数1/2是被调试程序所需要的参数。

在Debug程序调入后,根据有无被调试程序及其类型相应设置寄存器组的内容,发出Debug的提示符“-”,此时就可用Debug命令来调试程序。

∙运行Debug程序时,如果不带被调试程序,则所有段寄存器值相等,都指向当前可用的主存段;除SP之外的通用寄存器都设置为0,而SP指示当前堆栈顶在这个段的尾部;IP=0100h;状态标志都是清0状态。

∙运行Debug程序时,如果带入的被调试程序扩展名不是.EXE,则BX.CX 包含被调试文件大小的字节数(BX为高16位),其他同不带被调试程序的情况。

∙运行Debug程序时,如果带入的被调试程序扩展名是.EXE,则需要重新定位。

此时,CS : IP和SS : SP根据被调试程序确定,分别指向代码段和堆栈段。

DS=ES指向当前可用的主存段,BX.CX包含被调试文件大小的字节数(BX为高16位),其他通用寄存器为0,状态标志都是清0状态。

Debug的命令都是一个字母,后跟一个或多个参数:字母 [参数]命令的使用中注意:①字母不分大小写;②只使用16进制数,没有后缀字母;③分隔符(空格或逗号)只在两个数值之间是必须的,命令和参数间可无分隔符;④每个命令只有按了回车键后才有效,可以用Ctrl+Break中止命令的执行;⑤命令如果不符合Debug的规则,则将以“error”提示,并用“^”指示错误位置。

许多命令的参数是主存逻辑地址,形式是“段基地址 : 偏移地址”。

其中,段基地址可以是段寄存器或数值;偏移地址是数值。

如果不输入段地址,则采用默认值,可以是缺省段寄存器值。

汇编DEBUG命令详解

汇编DEBUG命令详解

DEBUG命令详解DEBUG是DOS中的一个外部命令,从DOS 1.0起就带有此命令,因此可见此命令的重要性了。

虽然此命令的功能非常强大,可以解决许多问题,可是对许多人来说,尤其是初学者来说,却非常不易掌握。

因此,现将DEBUG的命令详细介绍一番,以让大家知道它的使用。

Debug:A(汇编)直接将 8086/8087/8088 记忆码合并到内存。

该命令从汇编语言语句创建可执行的机器码。

所有数值都是十六进制格式,必须按一到四个字符输入这些数值。

在引用的操作代码(操作码)前指定前缀记忆码。

a [address]参数address指定键入汇编语言指令的位置。

对 address 使用十六进制值,并键入不以“h”字符结尾的每个值。

如果不指定地址,a 将在它上次停止处开始汇编。

有关将数据输入到指定字节中的信息,请单击“相关主题”列表中的 Debug E(键入)。

有关反汇编字节的信息,请单击“相关主题”列表中的 Debug U(反汇编)。

说明使用记忆码段的替代记忆码为 cs:、ds:、es: 和 ss:。

远程返回的记忆码是 retf。

字符串处理的记忆码必须明确声明字符串大小。

例如,使用 movsw 可以移动 16 位的字串,使用 movsb 可以移动 8 位字节串。

汇编跳转和调用汇编程序根据字节替换自动将短、近和远的跳转及调用汇编到目标地址。

通过使用 near 或far 前缀可以替代这样的跳转或调用,如下例所示:-a0100:05000100:0500 jmp 502 ; a 2-byte short jump0100:0502 jmp near 505 ; a 3-byte near jump0100:0505 jmp far 50a ; a 5-byte far jump可以将 near 前缀缩写为 ne。

区分字和字节内存位置当某个操作数可以引用某个字内存位置或者字节内存位置时,必须用前缀 word ptr 或者前缀 byte ptr 指定数据类型。

汇编 DEBUG主要 命令 大全 最详细

汇编 DEBUG主要 命令 大全 最详细

DEBUG主要命令DEBUG是为汇编语言设计的一种调试工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。

1.DEBUG程序的调用在DOS的提示符下,可键入命令:C:>DEBUG [d:][path][文件名][参数1][参数2]其中文件名是被调试文件的名字,它必须是可执行文件(EXE),两个参数是运行被调试文件所需要的命令参数,在DEBUG程序调入后,出现提示符“-”,此时,可键入所需的DEBUG命令。

2.DEBUG的主要命令⑴显示内存单元内容的命令D,格式为:-D [地址] 或-D [范围]例如,显示指定范围内存单元内容的方法为:-D 100 1FF18E4:0100 47 06 04 02 38 01 47 06 -06 02 00 02 47 06 08 02 G...8.G.....G...18E4:0110 02 02 3B 04 02 68 02 00 -4D 20 50 51 56 57 8B 37 ..;..h..M PQVW.7 其中左边为十六进制表示形式,右边为ASCII码表示形式,“.”表示不可显示字符。

这里没有指定段地址,D命令自动显示DS段的内容。

⑵修改内存单元内容的命令E,它有两种格式1)用给定内容代替指定范围的单元内容,格式为:-E 地址内容表例如:-E DS:100 F358595A8D,即用F3,58,59,5A,8D五个字节代替内存单元DS:100到DS:104的内容。

2)逐个单元相继地修改,格式为:-E 地址例如:-E DS:10018E4:0100 89.78此命令是将0100单元内容89改为78。

78是程序员从键盘输入的。

程序员在修改完一个单元后,可按“空格”键继续修改下一单元内容,直至按“回车”键结束该命令。

⑶检查和修改寄存器内容的命令R,它有三种方式1)显示CPU内部所有寄存器内容和标志寄存器中的各标志位状态-R该命令可显示AX,BX,CX,DX,SP,BP,SI,DI,DS,ES,SS,CS,IP及标志寄存器内容。

debug常见命令使用说明

debug常见命令使用说明

五、DEBUG调试程序DEBUG.EXE程序是专门为分析、研制和开发汇编语言程序而设计的一种调试工具,具有跟踪程序执行、观察中间运行结果、显示和修改寄存器或存储单元内容等多种功能。

它能使程序设计人员或用户触及到机器内部,因此可以说它是80X86CPU的心灵窗口,也是我们学习汇编语言必须掌握的调试工具。

1)DEBUG程序使用在DOS提示符下键入命令:C>DEBUG [盘符:][路径][文件名.EXE][参数1][参数2]这时屏幕上出现DEBUG的提示符“-”,表示系统在DEBUG管理之下,此时可以用DEBUG 进行程序调试。

若所有选项省略,仅把DEBUG装入内存,可对当前内存中的内容进行调试,或者再用N和L命令,从指定盘上装入要调试的程序;若命令行中有文件名,则DOS把DEBUG 程序调入内存后,再由DEBUG将指定的文件名装入内存。

2)DEBUG的常用命令(1)汇编命令A格式:A[起始地址]功能:将输入源程序的指令汇编成目标代码并从指定地址单元开始存放。

若缺省起始地址,则从当前CS:100地址开始存放。

A命令按行汇编,主要是用于小段程序的汇编或对目标程序的修改。

(2)反汇编命令U格式1:U[起始地址]格式2:U[起始地址][结束地址|字节数]功能:格式1从指定起始地址处开始将32个字节的目标代码转换成汇编指令形式,缺省起始地址,则从当前地址CS:IP开始。

格式2将指定范围的内存单元中的目标代码转换成汇编指令。

(3)显示、修改寄存器命令R格式:R[寄存器名]功能:若给出寄存器名,则显示该寄存器的内容并可进行修改。

缺省寄存器名,则按以下格式显示所有寄存器的内容及当前值(不能修改)。

AX=0000 BX=0004 CX=0020 DX=0000 SP=0080 BP=0000 SI=0000DI=0000 DS=3000 ES=23A0 CS=138E IP=0000NV UP DI PL NZ NA PO NC138E:0000 MOV AX,1234-R AX ;输入命令AX 0014 ;显示AX的内容:;供修改,不修改按回车。

调试程序Debug常用命令

调试程序Debug常用命令

20122012-4-27
7
2)D命令(显示内存单元内容) ) 命令 显示内存单元内容) 命令(
格式3:_D DS: 长度↙ 格式3:_D DS:开始偏移地址 L 长度↙ 作用: 作用:显示指定段中从开始偏移地址起由长度指定的 字节单元的内容。 字节单元的内容。 :_D DS: 例:_D DS:4 L 5↙
20122012-4-27
2
1)R命令(查看和修改寄存器内容) ) 命令 查看和修改寄存器内容) 命令(
格式1:_R (_r 格式1:_R↙(_r↙) 作用:显示所有寄存器的内容。 作用:显示所有寄存器的内容。
20122012-4-27
3
1)R命令(查看和修改寄存器内容) ) 命令 查看和修改寄存器内容) 命令(
20122012-4-27
17
6)T命令(单步运行或跟踪) 命令(单步运行或跟踪)
格式2:_T 偏移地址↙ 格式2:_T =偏移地址↙ 作用:执行指定的偏移地址处的一条指令, 作用:执行指定的偏移地址处的一条指令,执行完后 停下来, 停下来,并显示所有寄存器内容及状态标志位的值和 下一条要执行的指令。 下一条要执行的指令。 :_T 0105↙ 例:_T =0105↙
20122012-4-27
9
3)E命令(修改内存单元内容) 命令(修改内存单元内容)
格式1:_E DS: 内容表↙ 格式1:_E DS:偏移地址 内容表↙ 作用: 作用:用内容表中内容去替换从偏移地址开始的内存 单元的内容。 单元的内容。 :_E DS: dsx’ AA↙ 例:_E DS:4 ‘dsx FF 00 AA↙
调试程序Debug 调试程序Debug 常用命令简介) (常用命令简介)
Debug的启动 Debug的启动

常用DOS命令和DEBUG命令

常用DOS命令和DEBUG命令

DOS常用命令、目录操作类命令:.1、MD——建立子目录1.功能:创建新的子目录2.类型:内部命令3.格式:MD[盘符:][路径名]〈子目录名〉4.使用说明:(1)“盘符”:指定要建立子目录的磁盘驱动器字母,若省略,则为当前驱动器;(2)“路径名”:要建立的子目录的上级目录名,若缺省则建在当前目录下。

例:(1)在C盘的根目录下创建名为FOX的子目录;(2)在FOX子目录下再创建USER子目录。

C:\>MD FOX (在当前驱动器C盘下创建子目录FOX)C:\>MD FOX \ USER (在FOX 子目录下再创建USER子目录).2、CD——改变当前目录1.功能:改变当前目录2.类型:内部命令3.格式:CD[盘符:][路径名][子目录名]4.使用说明:(1)如果省略路径和子目录名则显示当前目录;(2)如采用“CD\”格式,则退回到根目录;(3)如采用“CD..”格式则退回到上一级目录。

例:(1)进入到USER子目录;(2)从USER子目录退回到子目录;(3)返回到根目录。

C::\>CD FOX \USER(进入FOX子目录下的USER子目录)C:\FOX\USER>CD.. (退回上一级根目录)C:\FOX>CD\ (返回到根目录)C:\>.3、RD——删除子目录命令1.功能:从指定的磁盘删除了目录。

2.类型:内部命令3.格式:RD[盘符:][路径名][子目录名]4.使用说明:(1)子目录在删除前必须是空的,也就是说需要先进入该子目录,使用DEL(删除文件的命令)将其子目录下的文件删空,然后再退回到上一级目录,用RD命令删除该目录本身;(2)不能删除根目录和当前目录。

例:要求把C盘FOX子目录下的USER子目录删除,操作如下:第一步:先将USER子目录下的文件删空;C:\>DEL C:\FOX\USER\*.*第二步,删除USER子目录。

C:\>RD C:\FOX\USER.4、DIR——显示磁盘目录命令1.功能:显示磁盘目录的内容。

实验一 DEBUG的使用

实验一 DEBUG的使用
三.对以下源程序进行调试,记录下每一条指令的目标代码,相应寄存器变化情况和程序的最终执行结果。
源程序:MOV AL,30H
MOV BL,26H
ADD AL,BL
PUSH AX
POP DX
MOV AH,02H
INT常用指令练习
1、传送指令
1)用A命令在内存100H处键入下列内容:
0AF4:0108 int 21
0AF4:010Amov dl,43
0AF4:010Cint 21
0AF4:010E int 20
0AF4:0110
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AF4 ES=0AF4 SS=0AF4 CS=0AF4 IP=0100 NV UP EI PL NZ NA PO NC
:0206 CD20 INT 20H ;结束
步骤:a.用E命令将目标代码写入内存CS:0200H~0207H
—E DS:200 B2,33,B4,02,CD,21,CD,20
b.用G命令从200H开始执行。
—G=CS:200
屏幕显示:
3
Program terminated normally.

c.用U命令反汇编
(2)用键盘,将AX,BX,CX,DX及DS,ES清0。
2.简单程序的执行:
(1)用E命令输入一段程序并执行,其源程序,目标代码及地址分配如下:
CS:0200 B233 MOV DL,33H ;将十六进制数‘33’存入DL中
:0202 B402 MOV AH,02H ;DOS2号功能调用
:0204 CD21 INT 21H ;屏幕显示DL内容

DOS环境下常用命令及DEBUG使用方法

DOS环境下常用命令及DEBUG使用方法

XXXXXX实验报告课程名称:汇编语言实验名称:DOS环境下常用命令及DEBUG使用方法学号姓名:指导教师评定:____________________________ 签名:_____________________________一、实验目的熟悉DOS环境下常用的命令以及DEBUG调试工具的基本使用方法,为以后的实验打下基础。

二、实验器材计算机一台,DEBUG调试工具。

三、实验内容及步骤1、进入DOS环境开机——Windows——开始——运行——COMMAND——MSDOS西文方式2、进入DEBUG运行状态熟悉使用各条DEBUG命令在打开的COMMAND输入DEBUG,回车即进入DEBUG运行状态。

此时可以使用各条DEBUG命令。

(1)显示和修改寄存器的内容的命令R的用法:“—R[寄存器名|F]”“—R”命令可以显示所用寄存器的内容,包括标志寄存器的内容,以及当前CS:IP处的一条指令的机器码和汇编指令,还有涉及到的存储单元内容。

如:(2)显示指定范围内的内存单元内容的命令:“—D[ [段地址:] 起始偏移[终止偏移] ] ”如:(3)修改内存单元内容的命令:“—E [段地址:]起始偏移[修改内容列表]”用“—E”命令修改内存单元内容后可以再用“—D”命令检查是否修改成功,如:(4)填充内容列表命令:“—F[段地址:]起始偏移终止偏移填充内容列表”用“—F”命令修改内存单元内容后可以再用“—D”命令检查是否修改成功,如:(5)编写/修改汇编语句命令:“—A[ [段地址:]起始偏移]”不再继续编程时按回车结束编程。

如:(6)将指定地址范围的机器码反汇编成汇编指令命令:“—U[[段地址:]起始偏移[终止偏移]]”如:(7)单步跟踪进入命令:“—T[=[段地址:]起始偏移] [指令条数]”指令条数默认为一条指令,该命令可以从指定地址起执行指定条数指令后停下来,每条指令执行后均会显示寄存器内容和状态值。

汇编教程 DEBUG的使用

汇编教程 DEBUG的使用
汇编语言程序设计
什么是DEBUG命令
DEBUG是DOS中的一个外部命令 Debug简单的说就是除错程序,是用的DEBUG 命令: 命令: 几种常用的
(1) (2) (3) (4) (5) (6) (7) D:显示存储单元内容 E:修改存储单元内容 R:显示、修改寄存器内容 U:反汇编命令 T:跟踪命令 Q:退出命令 A:汇编命令
修改存储单元内容命令E(Enter)
两种格式 1、E address [list] 用给定的内容表来替代指定范围的存 储单元内容 2、E address 采用逐个单元相继修改的方法
跟踪命令T(Tace)
两种格式 1、T [=address] 逐条指令跟踪 2、T [=address][value] 多条指令跟踪
各标志位状态的含义
显示存储单元命令D(DUMP)
格式: D [address] 或 D [range] 按指定地址或指定范围显示存储单元内 容。 左边用十六进制表示每个字节,右边用 ASCII字符表示每个字节,.表示不可显 示的字符 如果只指定首地址,则显示从首地址开 始的80个字节的内容 如果完全没有指定地址,则显示上一个 D命令显示的最后一个单元后的内容
注意
DEBUG把键入的数字均看成十 六进制数,所以入要键入十进制 数,则其后应加以说明:100D
1、检查和修改寄存器内容命令 R(Register)
三种格式: 1、R 显示CPU内所有寄存器内容和标志位 状态 2、R register name 显示和修改某个寄存器内容 3、RF 显示和修改标志位状态
汇编命令A(Assemble)
格式: A [address] 将键入的汇编语言语句汇编成机 器代码,相继地存放在从指定地 址开始的存储区中

汇编debug命令大全

汇编debug命令大全

(11)写命令 ) 格式: 起始地址] 格式:W [起始地址 起始地址 功能: 功能: 将起始地址开始的数据写入由 CS:5CH处的文件控制块所指定的文件中。如果未 处的文件控制块所指定的文件中。 处的文件控制块所指定的文件中 指定地址则数据从CS:0100开始。 开始。 指定地址则数据从 开始 要写入文件的字节数应先放入BX和 中 注:要写入文件的字节数应先放入 和CX中。 文件大小为20字节 字节, 如:文件大小为 字节,则BX和CX中的内容应 和 中的内容应 设为: 设为: (CX)= 0014H ) (BX)=0000H ) 即: (BXCX)=00000014H ) 例 :N aa R bx R cx w cs:0 首先命名文件,名字为 首先命名文件,名字为aa; 其次把准备写入文件aa的字节数 其次把准备写入文件 的字节数 寄存器; 放入 BX和CX 寄存器 和 最后将代码段0000H单元开始的代码 最后将代码段 单元开始的代码 写入文件aa; 写入文件
(7)汇编命令 ) 格式: 起始地址 起始地址] 格式:A[起始地址 功能:允许键入汇编语言语句, 功能:允许键入汇编语言语句,并能把它们 汇编成机器代码, 汇编成机器代码,相继地存放在从指定地址开始的 存储区。 存储区。 把键入的数字均看成十六制数, 注:DEBUG把键入的数字均看成十六制数, 把键入的数字均看成十六制数 所以要键入十进制数,则其后必须加以标识符D。 所以要键入十进制数,则其后必须加以标识符 。 (8)反汇编命令 ) 格式1: 起始地址 起始地址] 格式 :U[起始地址 功能:从起始地址开始反汇编32个字节 个字节。 功能:从起始地址开始反汇编 个字节。 例:U100 如果地址被省略,则从上一个U命令的最后一 如果地址被省略,则从上一个 命令的最后一 条指令的下一个单元开始显示32个字节 个字节。 条指令的下一个单元开始显示 个字节。 格式2: 起始范围 起始范围] 格式 : U[起始范围 功能:对指定范围的存储单元进行反汇编。 功能:对指定范围的存储单元进行反汇编。 例:U100 10C

汇编_DEBUG的使用

汇编_DEBUG的使用

汇编_DEBUG的使用汇编语言是一种低级语言,它与机器语言非常接近,每一个汇编语言的指令几乎都对应着一条机器指令。

因此,了解并掌握汇编语言对于理解计算机内部工作原理以及进行底层编程是非常有帮助的。

下面,我将详细介绍DEBUG的使用方法和功能。

1.DEBUG的启动和退出:在DOS命令行下输入DEBUG命令,即可启动DEBUG。

DEBUG启动后,会显示一个短横线"-”,表示等待执行命令。

在DEBUG中输入"q"命令,即可退出DEBUG。

2.DEBUG的命令格式和常用命令:-a:将键盘输入的ASCII码写入指定地址-d:显示内存中的指定地址的内容-e:修改内存中的指定地址的内容-g:从指定地址开始执行程序-r:查看和修改寄存器的值-t:查看和修改标志寄存器的值-u:以汇编代码的格式显示内存中的指令-w:将内存中的内容写入指定文件-n:加载并执行指定文件-i:打印当前的执行指令-f:在段间切换3.DEBUG的常用调试操作:- 通过“d”命令查看内存中的指令和数据内容,可以使用不同的参数来控制显示格式,如"d 100"表示从100H地址处开始显示,"d cs:100"表示从CS:100H地址处开始显示。

-通过“e”命令修改内存中的指令和数据内容。

- 通过“r”命令查看和修改寄存器的值,如"r ax"表示查看和修改AX寄存器的值。

-通过“u”命令以汇编代码的格式显示内存中的指令。

-通过“g”命令从指定地址开始执行程序。

-通过“n”命令加载并执行指定的二进制文件。

4.示例:下面给出一个使用DEBUG调试的示例过程:-启动DEBUG,进入DEBUG命令行界面。

-使用“n”命令加载一个二进制文件。

-使用“d”命令查看内存中的指令和数据,以及寄存器的值。

-使用“e”命令修改内存中的指令和数据。

-使用“g”命令执行程序。

-使用“r”命令查看和修改寄存器的值。

DEBUG命令

DEBUG命令

8.查找,比较和移动内存数据命令. 8.查找,比较和移动内存数据命令.S/C/M 查找 对内存中的数据进行比较, 对内存中的数据进行比较,移动及查找某 一特定字节. 一特定字节. 移动内存命令M(Move) 移动内存命令M 移动内存命令 格式: <源地址范围><目的地址 源地址范围><目的地址> 格式:M <源地址范围><目的地址> 如:-MDS:00 1F 100
DEBUG下的提示符" DEBUG下的提示符"-" 下的提示符
命令格式: 参数] 2. 命令格式: 命令 [参数] 命令 DEBUG的所有命令动词均由一个字母(大小写均可)构成! DEBUG的所有命令动词均由一个字母(大小写均可)构成! 的所有命令动词均由一个字母 DEBUG下的所有数字均为十六进制数! DEBUG下的所有数字均为十六进制数! 下的所有数字均为十六进制数 参数 地址表示方法: 地址表示方法: [addresss] 段地址: 段地址:偏移量 段寄存器:偏移量 段寄存器: 如:1419:000 1419: 或:DS:0000 DS: 地址范围表示方法:段地址: 地址范围表示方法:段地址:始偏移量 末偏移量 [rang] 长度(字节数) 或:段地址:起始偏移量 L长度(字节数) 段地址: 1419: 如: 1419:100 1FF 1419: 或: 1419:100 L100
6.运行命令G 6.运行命令G(Go) 运行命令 [address3…]} -G[=address1] [address2 [address3 ]} 从指定地址1开始运行,后面为断点地址. 从指定地址1开始运行,后面为断点地址.如不指定 则从当前CS IP开始运行 CS: 开始运行. 则从当前CS:IP开始运行. 如:-G=100 10A

汇编语言源程序运行步骤和DEBUG的使用

汇编语言源程序运行步骤和DEBUG的使用

汇编语言源程序运行步骤和DEBUG的使用汇编语言是一种低级语言,用于编写计算机硬件的指令。

编写汇编语
言源程序后,需要经过一系列步骤才能在计算机上运行。

同时,调试工具DEBUG可以帮助程序员查找和修复程序中的错误。

一、汇编语言源程序运行步骤:
2.汇编:将源程序转化为机器码指令的过程称为汇编。

通过使用汇编
器(如MASM、NASM等),可以将源程序翻译成可执行的机器码文件。


汇编的过程中,所有的指令和操作数都被翻译成计算机可以理解的二进制
形式。

3. 链接:链接是将目标文件和库文件组合成一个可执行文件的过程。

当汇编源程序时,可能会调用外部库函数,这些函数的实现通常包含在库
文件中。

链接器(如link.exe)负责将这些函数和源程序连接起来,最
终生成一个可执行文件。

4.运行:通过操作系统加载可执行文件到内存中,并开始执行。

在运
行过程中,CPU按照程序的指令一步一步地执行,计算、存储和传输数据。

执行过程中,程序可能会从输入设备读取数据并输出结果。

二、DEBUG的使用:
DEBUG是一个DOS系统中内置的调试工具,可用于查找和修复程序中
的错误。

它通过允许程序员直接与内存、寄存器和指令交互,提供了一种
直观、低级的调试方式。

1.启动DEBUG:在DOS命令行中输入DEBUG命令,启动DEBUG程序。

DEBUG启动后,会显示一个":"提示符,等待用户输入指令。

汇编语言debug常用调试命令详解

汇编语言debug常用调试命令详解

汇编语⾔debug常⽤调试命令详解显⽰修改寄存器命令RR;★显⽰所有寄存器和标志位状态;★显⽰当前CS:IP指向的指令。

显⽰标志时使⽤的符号:标志标志=1 标志=0OF OV NVDF DN UPIF EI DISF NG PLZF ZR NZAF AC NAPF PE POCF CY NC显⽰命令D① D [地址]② D [范围]如不指定范围,⼀次显⽰8⾏×16个字节。

-D ;默认段寄存器为DS,当前偏移地址-D DS:100 / -D CS:200-D 200:100-D 200;200为偏移地址,默认段寄存器DS-D DS:100 110/ -D 100 L 10修改命令E① E 地址;从指定地址开始,修改(或连续修改)存储单元内容。

DEBUG⾸先显⽰指定单元内容,如要修改,可输⼊新数据;空格键显⽰下⼀个单元内容并可修改,减号键显⽰上⼀个单元内容并可修改;如不修改,可直接按空格键或减号键;回车键结束命令。

② E 地址数据表;从指定的地址开始⽤数据表给定的数据修改存储单元。

-E DS:100 F3 ‘AB’ 8D。

.反汇编命令U① U [地址];从指定地址开始反汇编32个字节的机器指令;省略地址时,则接着上⼀个U命令的最后⼀个单元开始;若第⼀次使⽤U命令省略地址,则从当前CS:IP开始(通常是CS:100)。

② U 范围;对指定范围的单元进⾏反汇编。

-U-U100-U100L10汇编命令AA [地址];从指定的地址开始输⼊符号指令;如省略地址,则接着上⼀个A命令的最后⼀个单元开始;若第⼀次使⽤A命令省略地址,则从当前CS:IP开始(通常是CS:100)。

注释:①在DEBUG下编写简单程序即使⽤A命令。

②每条指令后要按回车。

③不输⼊指令按回车,或按Ctrl+C结束汇编。

④⽀持所有8086符号硬指令,伪指令只⽀持DB、DW,不⽀持各类符号名。

跟踪命令(单步执⾏命令)T① T;从当前IP开始执⾏⼀条指令。

汇编语言程序设计debug调试命令

汇编语言程序设计debug调试命令
内容。 (8) Q(退出): 退出DEBUG,该操作不保护文件。 -Q
标志位:
“1”
“0”
OF:溢出标志 —— OV溢出, NV没溢出
DF:方向标志 —— DN减量, UP增量
IF:中断允许标志 —— EI允许, DI禁止
SF:符号标志 —— NG负数, PL正数
ZF:“0”标志
—— ZR为“0”, NZ不为“0”
下次课预习内容:顺序结构程序设计
要求:1、实验指导书及实验报告上的预习内容 2、预习验收时要提供设计的源程序磁盘或笔写程序
-E CS:211 21 2A
;从CS:211H开始输入2个字节的内容
-E 110 ‘anything’
;输入从DS:110H开始的字符串
⑹ D(显示存储器的内容):
默认寄存器是DS,格式是:
-D段地址:偏移地址
;显示80H个字节的内容。
-D
显示从上一次结束处开始的80H个字节 的内容。
⑺ R(显示修改寄存器内容) -R ;显示所有寄存器内容。 -RDS ;显示并可修改DS的内容。 -RF ;显示并可修改标志寄存器
实验数据记录注意事项:
1、实验报告第三页:表格中标志位与计算机 自动给出的不是一一对应的,要求记录1/0
2、实验报告第四、五页:列出调试运行后的程序清单
因为行汇编不识别标号,所以:用行汇编运行的程
序中没有行号,转移指令处是绝对地址。
验收内容:
1、用T命令执行完程序最后一条指令处的界面:
-T =段地址:0
-G=段地址:偏移地址
-G
;从程序当前位置执行到
程序结束
-G =200 260
;从指定200H地址开始执行, 遇到断点

在DOS下的DEBUG命令的详细用法

在DOS下的DEBUG命令的详细用法
在DOS下的DEBUG命令的详细用法 在DOS下的DEBUG命令的详细用法 名称 解释 格式 a (Assemble) 逐行汇编 a [address] c (Compare) 比较两内存块 c range address d (Dump) 内存16进制显示 d [address]或 d [range] e (Enter) 修改内存字节 e address [list] f (fin) 预置一段内存 f range list g (Go) 执行程序 g [=address][address...] h (Hexavithmetic) 制算术运算 h value value i (Input) 从指定端口地址输入 i pataddress l (Load) 读盘 l [address [driver seetor> m (Move) 内存块传送 m range address n (Name) 置文件名 n filespec [filespec...] o (Output) 从指定端口地址输出 o portadress byte q (Quit) 结束 q r (Register) 显示和修改寄存器 r [register name] s (Search) 查找字节串 s range list t (Trace) 跟踪执行 t [=address] [value] u (Unassemble) 反汇编 u [address ]或range w (Write) 存盘 w [address[driver sector secnum> ? 联机帮助 ? debug小汇编a命令 debug小汇编a命令是一个很有用的功能,许多的小程序都要他来做。 编一些小程序比汇编要来得方便,快洁。 在Debug中,中断是非常有用的,首先,让我们先了解一下中断。 所谓中断,其实,就是,当你做某事时,有人过来找你有其他事,你先放下手中的事(计算机中,称为保护现场) ,再去与叫你的那个人办事去,等完了,你又回,接着做刚才的事。这是个很通俗的讲法。 计算机在运行时,也会出现这种情况,我们叫之中断。 下面是他的一些常用中断向量的入口值详解:(记住哦,很用的...呵呵) IBM PC 中断 int10 ooH 屏幕方式设置 入口:AH=0,AL=显示方式代码(0--6) 0:40*25 黑白 1:40*25 彩色 2:80*25 黑白 3:80*25 彩色文本 4:320*200 彩色 5:320*200 黑白 6:640*200 黑白图形模式 7:80*25 单色字符(单色显示器) 0BH 色彩设置 入口:AH=0B,BL=0 设背景色,BH=0--15 BL=1 设调色码,BH=0--1 0CH 写图形点 入口:AH=0C,CX:DX=列号:行号,AL=颜色 ODH 读图形点 入口:AH=0D,CX:DX=列号:行号 返回:AL=颜色 0EH 在当前页、当前光标处写字符 入口:AH=0E,AL=字符的ASCII码,BL=前景色 OFH 显示器状态 入口:AH=0F 返回:AL=当前显示器方式,AH=屏幕列数,BH=当前页号 01H 光标设置 入口:AH=1,CH=光标起始行号(00--0C),CL=光标结束行号(00--0C) 注:CH > CL 02H 光标定位 入口:AH=2,BH=页号,DH:DL=起始行:列 03H 读光标位置 入口:AH=3,BH=页号。 返回:DH:DL=起始行:列 06H 窗口上卷 入品:AH=6,AL=窗口上卷行数,CH:CL-DH:DL 窗口坐标 注:AL=0 卷动整个窗口 07H 窗口下卷 入口:AH=7,AL=窗口下卷行数,CH:CL-DH:DL 窗口坐标 08H 读当前光标处字符和属性 入口:AH=8,BH=页号。 返回:AH:AL=字符的颜色:字符的ASCII码 注:颜色代码见下对照表 第 1 页

利用DEBUG调试汇编语言程序段

利用DEBUG调试汇编语言程序段

利用DEBUG调试汇编语言程序段利用DEBUG调试汇编语言程序段一.实验目的1.熟悉DEBUG有关命令的使用方法;2.利用DEBUG掌握有关指令的功能;3.利用DEBUG运行简单的程序段。

二.实验内容1.进入和退出DEBUG程序;1)开始—运行,输入cmd,点确定进入命令窗口2)在命令窗口中输入dubug进入debug程序3)进入debug窗口后,输入q命令退出debug2.学会DEBUG中的1)D命令(显示内存数据D 段地址:偏移地址)例1:-D100 ;显示DS段, 0100开始的128个字节内容说明:指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。

①D SEGREG[起始地址] [L 长度];显示SEGREG段中(缺省内默认为DS), 以[起始地址] (缺省内为当前的偏移地址),开始的[L 长度] (缺省内默认为128)个字节的内容.②D SEGREG[段地址:偏移地址];显示SEGREG段中(缺省内默认为DS), [段地址:偏移地址] 开始的[L 长度] (缺省内默认为128)个字节内容-D ;默认段寄存器为DS,当前偏移地址(刚进入debug程序偏移地址为0100H)-D DS:100 ;显示DS段, 0100H开始的128个字节内容-D CS:200 ;显示CS段, 0200H开始的128个字节内容-D 200:100 ;显示DS段, 0200:0100H开始的128个字节内容-D 200;显示DS段, 0200H开始的128个字节内容-D 100 L 10 ;显示DS段, 100H开始的100H个字节内容2)E命令(修改指定内存)例1:-E100 41 42 43 44 48 47 46 45-D 100,L08结果:08F1:0100 41 42 43 44 48 47 46 45例2:-E 100:08F1:0100 76 42 :42是操作员键入此命令是将原100号内存内容76修改为42,用D命令可察看。

汇编基础DEBUG

汇编基础DEBUG

在DEBUG中输入数据有两种方法: 提示方法和非提示方法。

在用提示方法时,用户可以输入要求输入数据的命令,后跟数据所要输入的地址。

然后用户就可以看到该地址中已有内容及一个冒号提示符。

此时用户可以在提示符下输入一个新的值或者按下回车键或CTRL+C回到短横(-)提示符。

在运用非提示方法时,用户可以输入要输入数据的内存地址以及要输入的字节。

但与使用字处理程序或正文编辑程序时不一样,在使用DEBUG时,用户不能直接移动光标到一入口点输入或修改数据,而要一次输入一个或几个字节。

在使用DEBUG时可以只涉及内存中的数据,从而一般都要指定所要处理的内存地址,地址的输入格式是: [段地址]: [位移]。

如果没有输入地址,DEBUG将假定为当前内存段,从位于地址100H的字节开始。

前100H字节保留给程序段前缀使用,这一专用区域用于建立DOS与程序之间的联系。

DEBUG总是用四位十六进制数表示地址。

用两位数表示十六进制数据。

讲到这里大家应该对DEBUG有了初步的了解,但是光知道这些可不够,接下来我来讲讲DEBUG的命令格式和命令。

当输入DEBUG调用了DEBUG程序,就会出现一个短横提示符,用户就可以在这一短横后输入DEBUG程序的命令。

有些DEBUG命令会显示一个内存地址并产生一个作为提示符的冒号。

在这些提示符后,用户可以输入一个新值以改变所显示位置原来的值。

如果用户不输入一个新值而是按下回车或CTRL+C,那么原来的值不会改变。

一般用不着把地址和命令名字分开。

例如,用转储命令D察看100号地址的数据,那么这个命令可以用以下任一种形势输入:D100D, 100D 100如果输入的命令中出现了错误,DEBUG将在下一行对着错误的位置标记出来,例如:-s100 d 12^Error* A[地址] 汇编命令功能: 将指令直接汇编成机器码输入到内存中。

说明: 用于小段程序的汇编及修改目标程序,所有输入的数字均采用十六进制,用户装入内存的汇编语句是连续存放的,若没有指定地址,并且前面没有使用汇编命令,改语句被汇编到CS:0100区域。

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

dos汇编debug基本命令程序
DOS汇编(Debug)基本命令程序
在学习和编写DOS汇编语言程序时,了解和掌握调试程序是非常重要的。

DOS提供了一个非常有用的调试器,即Debug。

Debug是一个基本的汇编语言调试程序,它可以让程序员在运行程序时进行单步执行,查看寄存器和内存的内容,以及进行程序的调试和错误修复。

本文将介绍DOS汇编(Debug)基本命令程序。

一、启动Debug
要启动Debug,可以在DOS命令提示符下输入"debug"命令,然后按Enter键。

此时,会显示Debug的提示符"-",表示Debug 已经启动。

二、基本命令
Debug提供了一系列命令,用于执行和调试汇编语言程序。

下面是一些常用的基本命令:
1. a(assemble):将汇编指令翻译成机器码,并将其写入内存中。

例如,输入"a 100"表示从内存地址100开始输入汇编指令。

2. d(dump):显示内存中的内容。

可以使用"d"命令来查看内存中的指令和数据。

例如,输入"d 100"表示从内存地址100开始显示内存内容。

3. e(enter):修改内存中的指令或数据。

可以使用"e"命令来修改内存中的指令或数据。

例如,输入"e 100"表示修改内存地址100处的内容。

4. g(go):执行程序。

使用"g"命令可以让程序开始执行。

例如,输入"g"表示开始执行程序。

5. r(register):显示和修改寄存器的内容。

可以使用"r"命令来查看和修改寄存器的内容。

例如,输入"r ax"表示显示或修改AX寄存器的内容。

6. t(trace):单步执行程序。

使用"t"命令可以让程序以单步执行的方式运行。

例如,输入"t"表示程序执行一条指令后停下来等待下一步操作。

7. u(unassemble):反汇编指令。

使用"u"命令可以将机器码指令反汇编成汇编指令。

例如,输入"u 100"表示从内存地址100开始反汇编指令。

8. q(quit):退出Debug。

使用"q"命令可以退出Debug调试器。

三、示例程序
下面是一个简单的示例程序,演示了如何使用Debug调试器来执行和调试DOS汇编语言程序。

```
a 100
mov ax, 12
mov bx, 34
add ax, bx
int 21h
int 20h
```
在Debug中输入以上汇编代码,然后按Enter键。

Debug会将汇编指令翻译成机器码,并将其写入内存地址100处。

接下来,使用"d"命令来查看内存中的指令和数据。

输入"d 100",然后按Enter键,会显示内存地址100开始的内容。

可以看到,指令和数据已经被写入内存。

然后,使用"r"命令来查看AX和BX寄存器的内容。

输入"r ax"和"r bx",然后按Enter键,会显示AX和BX寄存器的内容。

接着,使用"t"命令以单步执行的方式运行程序。

输入"t",然后按Enter键,程序会执行一条指令后停下来等待下一步操作。

可以使用"r"命令来查看寄存器和内存的内容,以及使用"u"命令来反汇编指令。

使用"q"命令退出Debug调试器。

通过以上示例,我们可以看到Debug调试器的基本用法。

它可以帮助我们执行和调试DOS汇编语言程序,查看和修改寄存器和内存的内容,以及修复程序中的错误。

总结
DOS汇编(Debug)基本命令程序是学习和编写DOS汇编语言程序的重要环节。

掌握Debug调试器的基本命令,可以帮助我们执行和调试汇编程序,查看和修改寄存器和内存的内容,以及修复程序中的错误。

在实际应用中,我们可以根据具体的需求和情况,灵活运用Debug调试器,提高程序的质量和效率。

相关文档
最新文档