汇编语言实验_Debug命令的使用
汇编实验报告(-)调试程序DEBUG的使用
汇编实验报告(-)调试程序DEBUG的使用《汇编语言程序设计》实验报告实验一调试程序DEBUG 的使用一、实验目的通过实验掌握下列知识:1、DEBUG命令:A,T,D,F,G;2、数据在内存中的存放方式和内存操作数的几种寻址方式;3、汇编指令:INC,DEC,LOOP,INT 3的应用;4、汇编语言伪指令:BYTE PTR和WORD PTR的应用。
二、内容及步骤1.DEBUG 命令使用表 1.1 DEBUG命令****命令的使用中注意:****①字母不分大小写;②②只使用16 进制数,没有后缀字母;③分隔符(空格或逗号)只在两个数值之间是必须的,命令和参数间可无分隔符;④每个命令只有按了回车键后才有效,可以用Ctrl+Break中止命令的执行;⑤命令如果不符合Debug 的规则,则将以“error”提示,并用“^”指示错误位置。
许多命令的参数是主存逻辑地址,形式是“段基地址: 偏移地址”。
其中,段基地址可以是段寄存器或数值;偏移地址是数值。
如果不输入段地址,则采用默认值,可以是缺省段寄存器值。
如果没有提供偏移地址,则通常就是当前偏移地址。
1、开机后,切换到命令提示符窗口下,出现提示符后键入命令DEBUG, 进入调试环境,显示提示符 '- '。
2、用命令 F 200 220 'AB' 将'AB'的两个ASCII码循环填入内存。
注:第一个参数200是当前段的起始偏移地址,第二个参数220是终了偏移地址,第三个参数‘AB’是被填入的数值,若不给出第二个参数则填入128(8行)个字节。
3、用命令 D200 观察内存中的十六进制码及屏幕右边的ASCII字符。
图1-1 Fill、Dump命令调用对主存操作的命令还支持地址范围这种参数,它的形式是:“开始地址结束地址”(结束地址不能具有段地址),或者是:“开始地址L 字节长度”。
D(Dump)命令显示主存单元的内容,它的格式如下(分号后的部分用于解释命令功能,不是命令本身):D [地址] ;显示当前或指定开始地址的主存内容D [范围] ;显示指定范围的主存内容图1-2 D命令调用左边部分是主存逻辑地址,中间是连续16 个字节的主存内容(16进制数,以字节为单位),右边部分是这16个字节内容的ASCII字符显示,不可显示字符用点“.”表示。
实验一DEBUG的使用
实验一 DEBUG 的使用实验目的:1.学习使用.学习使用DEBUG DEBUG DEBUG程序的各种命令。
程序的各种命令。
程序的各种命令。
2.掌握.掌握8088/868088/868088/86指令系统指令系统指令系统---------算数指令。
算数指令。
算数指令。
3.掌握用.掌握用DEBUG DEBUG DEBUG调试自编程序的方法。
调试自编程序的方法。
调试自编程序的方法。
4.掌握.掌握8088/8086 CPU 8088/8086 CPU 寄存器的用途和存储器组织及它们之间的关系。
寄存器的用途和存储器组织及它们之间的关系。
寄存器的用途和存储器组织及它们之间的关系。
5.掌握内存操作数及寻址方法。
.掌握内存操作数及寻址方法。
6.掌握汇编语言伪操作.掌握汇编语言伪操作:BYTE PTR,WORD PTR :BYTE PTR,WORD PTR。
内容及步骤:一、一、DEBUG DEBUG 命令使用命令使用: :1、 敲 DEBUG 进入进入进入 DEBUG DEBUG 环境,显示提示符环境,显示提示符环境,显示提示符 '_ ' '_ '。
2、 用命令用命令 D100 10F D100 10F 观察内存中的观察内存中的161616进制码及屏幕右边的进制码及屏幕右边的进制码及屏幕右边的ASCII ASCII ASCII字符。
字符。
字符。
3、 用命令用命令 E100 30 31 32 E100 30 31 32 ………… 3F 3F 将30H 30H~~3FH 3FH写入地址为写入地址为写入地址为100H 100H 100H开始的内存单元中,开始的内存单元中,再用再用D D 命令观察结果,看键入的命令观察结果,看键入的161616进制数是什么字符的进制数是什么字符的进制数是什么字符的ASCII ASCII ASCII码码?4、 用命令用命令 F100 10F 'A' F100 10F 'A' 将'A''A'的的ASCII ASCII码填入内存,用码填入内存,用码填入内存,用D D 命令查看结果。
汇编语言调试DEBUG命令详解
汇编语言调试DEBUG命令详解1、显示命令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 102.修改命令E① E 地址;从指定地址开始,修改(或连续修改)存储单元内容。
DEBUG首先显示指定单元内容,如要修改,可输入新数据;空格键显示下一个单元内容并可修改,减号键显示上一个单元内容并可修改;如不修改,可直接按空格键或减号键;回车键结束命令。
② E 地址数据表;从指定的地址开始用数据表给定的数据修改存储单元。
-E DS:100 F3 ‘AB’ 8D。
3.添充命令FF 范围数据表;将数据表写入指定范围的存储单元;数据个数多,忽略多出的数据,个数少,则重复使用数据表。
-F DS:0 L5 01,02,03,04,05-F DS:0 L5 01 02 03 04 05(空格分隔)-F DS:0 L5 FF ;5个字节重复使用FF4.显示修改寄存器命令RR;★显示所有寄存器和标志位状态;★显示当前CS:IP指向的指令。
显示标志时使用的符号:标志标志=1 标志=0OF OV NVDF DN UPIF EI DISF NG PLZF ZR NZAF AC NAPF PE POCF CY NC5.汇编命令AA [地址];从指定的地址开始输入符号指令;如省略地址,则接着上一个A命令的最后一个单元开始;若第一次使用A命令省略地址,则从当前CS:IP 开始(通常是CS:100)。
注释:①在DEBUG下编写简单程序即使用A命令。
②每条指令后要按回车。
③不输入指令按回车,或按Ctrl+C结束汇编。
④支持所有8086符号硬指令,伪指令只支持DB、DW,不支持各类符号名。
6.反汇编命令U① U [地址];从指定地址开始反汇编32个字节的机器指令;省略地址时,则接着上一个U命令的最后一个单元开始;若第一次使用U命令省略地址,则从当前CS:IP开始(通常是CS:100)。
汇编实验报告--利用DEBUG调试汇编语言程序段
实验一利用DEBUG调试汇编语言程序段学生姓名:何茂杰学号:2010305104 专业班级:10级计算机本科一班指导老师:文远熔实验日期:实验成绩:一、实验目的1.熟悉DEBUG有关命令的使用方法;2.利用DEBUG掌握有关指令的功能;3.利用DEBUG运行简单的程序段。
二、实验内容1.学会使用debug的A, U, T, D, E等命令。
2.编写一个程序计算Y=(X*U+V)/1000,X、Y、U、V(均为16位有符号二进制数)的存放地址自己确定。
分别使用两种以上的寻址方式对X、Y、U、V寻址。
三、实验环境PC微机DOS操作系统或Windows 操作系统四、实验要求1.仔细阅读有关DEBUG命令的内容,对有关命令,要求事先准备好使用的例子;2.学会使用debug的A, U, T, D, E等命令。
五、主要实验步骤(一)学会使用DEBUG中的简单命令:1.打开DOS,开始——运行——cmd。
2.进入DEBUG,在DOS下输入DEBUG,直接进入。
3.在DEBUG中输入D,查看D命令结果,输入D 1000,查看指定地址的数据。
4.在DEBUG中输入E100,修改地址100的数据,再输入D100,查看修改后的结果。
5.在DEBUG中输入R,查看当前寄存器的内容。
6.在DEBUG中输入A,输入以下代码:mov ax,1234mov [1000],ax输入T显示第一条命令运行结果,再次输入T,显示第二条命令运行结果,输入d1000,验证命令运行结果。
7.在DEBUG中输入A,输入以下代码:mov ax,1234mov [1000],ax输入G [=起始地址] [结束地址]↓,再输入D1000,验证命令运行结果。
8.在DEBUG中输入U [起始地址] [结束地址],从[起始地址]开始进行反汇编。
9.在DEBUG中输入Q,推出DEBUG程序。
(二)用DEBUG验证乘法、除法、加法、减法等功能:1.验证加法和带进位加,使用A命令,在DEBUG中键入以下代码:mov ax,f111mov bx,f222mov cx,2mov dx,3add ax,bxadc cx,dx使用G命令查看结果2.验证减法和带借位减法,使用A命令,在DEBUG中键入以下代码:mov ax,2mov bx,3mov cx,5mov dx,2sub ax,bxsbb cx,dx使用G命令查看结果3.验证乘法和除法,使用A命令,在DEBUG中键入以下代码:乘法:mov al,b4mov bl,11mul bl使用G命令查看结果除法:mov ax,400mov bl,b4div bl使用G命令查看结果六、实验数据及处理结果反汇编:执行情况:七、思考题启动DEBUG后,要装入某一个.EXE文件,应通过什么方法实现?答:进入DOS,输入DEBUG xxx.exe,其中xxx为文件名。
实验一 利用 DEBUG 调试汇编语言程序段
实验名称实验一利用 DEBUG 调试汇编语言程序段一、实验目的1.熟悉 DEBUG 有关命令的使用方法;2.利用 DEBUG 掌握有关指令的功能;3.利用 DEBUG 运行简单的程序段。
二、实验要求1.仔细阅读有关 DEBUG 命令的内容,对有关命令,要求事先准备好使用的例子;三、实验环境DOS 操作系统四、实验内容1.进入和退出 DEBUG 程序;1)开始—运行点确定进入DOS命令窗口图1进入DOS命令窗口2)在命令窗口中输入 dubug 进入 debug 程序图2进入 debug 程序3)进入 debug 窗口后,输入 q 命令退出 debug图3退出 debug2.学会 DEBUG 中的1)D 命令(显示内存数据 D 段地址:偏移地址)例 1:-D100 ;显示 DS 段, 0100 开始的 128 个字节内容-D ;默认段寄存器为 DS,当前偏移地址(刚进入 debug 程序偏移地址为 0100H)图4默认显示 DS 段内容-D DS:100 ;显示 DS 段, 0100H 开始的 128 个字节内容图5显示 DS 段内容-D CS:200 ;显示 CS 段, 0200H 开始的 128 个字节内容图6显示 CS 段内容-D 200:100 ;显示 DS 段, 0200:0100H 开始的 128 个字节内容图7显示 DS段0200:0100H内容-D 200 ;显示 DS 段, 0200H开始的128个字节内容图8显示 DS段0200H开始的内容-D 100 L 10 ;显示 DS 段, 100H 开始的 100H 个字节内容图9显示 DS段100H开始的100H字节内容2)E 命令(修改指定内存)例 1:-E100 41 42 43 44 48 47 46 45-D 100,L08结果:073F:0100 41 42 43 44 48 47 46 45-e 100 修改内存内容-d 100,L08 查看刚才修改的内存内容图10 修改和查看DS段100H开始的80H字节内容例 2: -E 100073F:0100 41. 42 : 42 是操作员键入此命令是将原 100 号内存内容 41 修改为 42,用 D 命令可察看。
总汇编实验二用DEBUG程序调试程序功能段
总汇编实验二用DEBUG程序调试程序功能段实验二主要是通过使用DEBUG程序调试汇编语言编写的程序功能段。
DEBUG是一个在DOS操作系统下的调试工具,它可以用来查看和修改内存中的程序和数据。
通过DEBUG,我们可以逐条执行程序功能段的指令,并观察其执行过程中的变化。
这有助于我们理解程序的运行原理,找出其中的错误,并进行调试和修复。
DEBUG程序的基本功能如下:1.查看内存中的程序和数据:DEBUG可以通过指定内存地址来查看内存中的内容。
我们可以使用d命令来显示指定地址范围内的内存内容。
这在调试程序时很有用,可以帮助我们检查变量的值是否正确。
2.修改内存中的程序和数据:DEBUG可以让我们修改内存中的程序和数据,从而实现调试和修复程序的功能。
我们可以使用e命令来修改指定地址处的内存内容。
3.单步执行程序:DEBUG可以将程序的执行过程分解为单条指令的执行,从而帮助我们逐步查看程序的执行情况。
我们可以使用t命令来单步执行程序。
4.中断程序的执行:DEBUG可以在程序执行过程中暂停执行,从而方便我们进行调试。
我们可以使用p命令来中断程序的执行。
5.显示寄存器的值:DEBUG可以显示CPU寄存器的值。
我们可以使用r命令来查看和修改寄存器的值。
这对于调试程序时检查寄存器的值非常有用。
6.显示和修改标志位:DEBUG可以显示和修改CPU的标志位。
我们可以使用f命令来查看和修改标志位的值。
这对于调试程序时检查标志位的值非常有用。
总而言之,DEBUG程序是一个功能强大的调试工具,可以帮助我们调试汇编语言程序的功能段。
通过它,我们可以查看和修改内存中的程序和数据,单步执行程序,中断程序的执行等等。
这些功能可以帮助我们找出程序中的错误,并进行调试和修复。
汇编语言程序设计实验DEBUG基本命令的使用
ERROR:
MOV AH,9
LEA DX,WARN
INT 21H
JMP RESTINT 21H
CODES ENDS
END START
调试分析
运行截图
教师评阅:
年月日
评分
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
RESTORE:
MOV AH,9
LEA DX,HINT
INT 21H
MOV AH,10
LEA DX,STRING
INT 21H
MOV BL,STRING+1
MOV BH,0
LEA SI,STRING+2
MOV BYTE PTR [SI+BX],'$'
MOV CX,BX
MOV BL,2
CHECK:
CMP STRING[BX],'A'
JL ERROR
CMP STRING[BX],'Z'
JG ERROR
ADD BL,1
LOOP CHECK
MOV BL,STRING+1
MOV BH,0
MOV CX,BX
MOV BL,2
《微机原理与汇编语言程序设计》实验(上机)报告
班级·学号姓名实验日期任课教师
实验名称
实验一DEBUG基本命令的使用
验证型
实验目的及要求:
1. 掌握DEBUG的基本命令及功能;
实验内容:
1.编写一个小程序,从键盘接收一个大写字母,存放到指定内存单元BUF1,并转换成为对应的小写字符,存放到内存单元BUF2。上机编辑、汇编、连接并运行。
实验一 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内容
汇编语言实验debug
使用DEBUG DEBUG调试工具 实验 使用DEBUG调试工具
3.显示内存命令D 3.显示内存命令D 显示内存命令 D命令可以显示0000:0000H-FFFF:FFFFH中的任何一个内存单 命令可以显示0000:0000H-FFFF:FFFFH中的任何一个内存单 0000:0000H 元的内容 查看1000:0(即物理地址10000H) 1000:0(即物理地址10000H)处的内容 -d 1000:0 查看1000:0(即物理地址10000H)处的内容 查看1000:9(即物理地址10009H)处的内容。 1000:9(即物理地址 处的内容。 -d 1000:9 查看1000:9(即物理地址 处的内容 查看1000:0 1000:C的内容 1000:0-d 1000:0 C 查看1000:0-1000:C的内容 注意: 注意: • 可指定段寄存器:-d CS:100 10F 可指定段寄存器: • 不指定段寄存器时默认显示数据段内容 • 若只指定首地址,则显示从首地址开始的128个字节:-d 100 若只指定首地址,则显示从首地址开始的128个字节: 128个字节 • 可以不指定任何地址,会显示下一组128字节内容 可以不指定任何地址,会显示下一组128 128字节内容
使用DEBUG DEBUG调试工具 实验 使用DEBUG调试工具
四、常用DEBUG命令 常用DEBUG命令 DEBUG
命令查看、改变CPU寄存器的内容; CPU寄存器的内容 1. 用R命令查看、改变CPU寄存器的内容; 命令将内存中的机器指令翻译成汇编指令; 2. 用U命令将内存中的机器指令翻译成汇编指令; 命令查看内存中的内容; 3. 用D命令查看内存中的内容; 命令改写内存中的内容; 4. 用E命令改写内存中的内容; 5. 用T命令执行一条机器指令 6. 用G命令运行至断点处 7. 用A命令以汇编指令的格式在内存中写入机器指令 8. 用C命令进行内存区域比较
debug命令的使用
实验 DEBUG命令的应用一实验要求熟悉DEBUG的应用,利用DEBUG观察寄存器的值,掌握直接汇编指令,单步调试,编辑数据等指令,为学习指令系统打好基础。
二实验步骤DEBUG程序是DOS操作系统为汇编语言程序设计者和系统管理员提供的一个通用调试工具,使用DEBUG可以直接深入到计算机系统内部,读写CPU各寄存器或存储器单元内容,并可以直接访问接口和外设的寄存器。
DEBUG的功能可分为下面几类:(1)读写、比较和显示存储器单元内容;(2)在存储器之间,存储器与磁盘之间传送数据和程序;(3)在指定存储单元中添充数据或字符串,在指定范围内查找数据或字符串;(4)设置程序起始执行地址或断点,执行程序或分段执行程序;(5)跟踪程序执行,显示处理器状态;(6)汇编或反汇编源程序;DEBUG只使用十六进制表示数据(十六进制数后不能加H),但所有数据在内存中均以二进制形式存放和运算。
DEBUG只有几十条单字母命令,功能强且易掌握,下面介绍DEBUG命令的使用方法。
(说明:下面的”< >”表示命令的一项参数,“[ ]”表示该选项为可选项。
)1、DEBUG 的进入和退出:(1)进入DEBUG的两种方法:方法一:在DOS提示符下直接键入:C> DEBUG↙(回车符)DEBUG即被调入内存并启动运行,显示DEBUG的提示符“—”。
方法二:在DOS提示符下,键入:C> DEBUG 文件名(回车符)DEBUG即被调入内存并启动运行,然后将指定的文件调入内存,并显示DEBUG 提示符“—”。
由于DEBUG可以将任一文件调入内存,所以“文件名”必须写全称,若有扩展名一定要输入扩展名。
(2)退出DEBUG时,键入命令:—Q↙就可从DEBUG状态返回DOS。
2、汇编与反汇编命令:汇编命令A和反汇编命令U是DEBUG下常使用的命令。
(1)汇编命令A格式:A [<起始地址>]功能:逐行汇编程序,主要用于小段汇编程序。
实验一DEBUG主要命令简介
OV DN EI NG ZR AC PE CY
NV UP DI PL NZ NA PO NC
· 显示和修改某个具体寄存器内容,其格式为: -R register name 例如,键入 -r ax 系统将响应如下: AX F1F4 : 即AX寄存器的当前内容为F1F4,如不修改则按Enter键, 否则,可键入欲修改的内容,如: -r bx BX 0369 : 059F 则把BX寄存器的内容修改为059F
二、 DEBUG的主要命令
1) 显示存储单元的命令D(DUMP)
格式为: -D [address] 或 -D [range]
说明:
D 2000:0100 (同时指明段地址和偏移地址) (只给出偏移地址默认的段地址是DS) 地址表示举例 D 100 D ES:100 (用符号指明段地址)
D 0100 0110 (由首地址和末地址指定范围) 范围表示举例 D 100 L 20 (由首地址和长度指定范围) D ES:100 (未指定范围,默认长度是80H)
18E4:010C C70608020202 MOV
可见以上两种格式是等效的。
WORD
PTR
[0208],0202
7) 跟踪命令T(Trace),有两种格式
·逐条指令跟踪 -T [=address] 从指定地址起执行一条指令后停下来,显示所有 寄存器内容及标志位的值。如未指定地址则从当 前的CS:IP开始执行。 ·多条指令跟踪 -T[=address][value] 从指定地址起执行n条指令后停下来,n由value 指定。
例如,按指定范围显示存储单元内容的方法为: - d 100 120 ****:0100 C7 06 04 02 38 01 C7 06 - 06 02 00 02 C7 06 08 02 G...8.G.....G... ****:0110 02 02 BB 04 02 E8 02 00 - CD 20 50 51 56 57 8B 37 ..;..h..MPQVW.7 ****:0120 8B
汇编_DEBUG的使用
格式转换程序
返 回
上机操作过程
1.编辑 1.对编辑完成的源程序在存盘时扩展名必须加写.ASM 2.一定要严格遵守汇编语言书写格式及段结构的格式来 编写程序
2.汇编
汇编过程就是将汇编语言源程序转换成机器能够识别的 目标代码程序,即OBJ的二进制文件。还可生成扩展名 为.LST的列表文件,扩展名为.CRF的符号索引文件。
DEBUG常用命令-Q命令
退出DEBUG程序的命令Q(quit)
退出DEBUG,返回到DOS 该命令无存盘功能,如需存盘应先使用W 命令
常用的DOS功能调用
书本的第8章专门讲述中断程序设计 而在讲第8章以前,我们需要用到几个常用
的DOS功能调用,所以这里先简单介绍几个 使用方法:
A命令举例:
-A 127C:0100 mov 127C:0103 mov 127C:0105 int 127C:0107 mov 127C:0109 int 127C:010B db 127C:011E -r cx CX 0000 :011E -n -w Writing 0011E -q C:\>2
DEBUG常用命令-U命令
反汇编命令U(Unassemble)
从指定地址开始,反汇编32个字节
格式为: U [地址] 例如: U 100 如果地址被省略则从上一个U命令的最后一条指令的 下一个单元开始显示32个字节。 格式为: U [range] 例如: U 100 10C 从偏移地址为100H处开始反汇编10CH个字节
1.设置入口参数(有些不需要设置的就不设置) 2.功能调用号送AH寄存器 3.发软中断指令“INT 21H”
4C号功能调用
实验1debug的使用
实验1debug的使⽤实验1 DEBUG的使⽤⼀、实验⽬的:1. 熟悉DEBUG的功能,运⾏并掌握其常⽤命令。
2. 使⽤DEBUG,观察PC机执⾏汇编指令的过程,掌握寄存器的名称与内存单元地址的形成。
⼆、实验要求:1. 遵守规章制度,爱护实验室设备。
2、熟悉Debug各个命令的⽤法。
3、熟悉寄存器的名称以及物理地址的形成。
4、写出实验报告。
三、实验内容:实验1、进⼊Debug环境,完成下列步骤,熟悉DEBUG指令。
1、⽤R命令查看寄存器的值,将AX的值修改为1,BX的值修改为10。
2、⽤D命令查看内存0:0200处的内容。
3、⽤E命令将”I am a student!!”写⼊内存0:0200处。
⽤D命令查看是否写⼊成功。
4、⽤A 命令向内存0:0210处写⼊汇编指令MOV AX,1234MOV BX,0158ADD AX, BX(注意:在⼀般的PC机中,DOS⽅式下,DOS和其他合法的程序⼀般都不会使⽤0:200~0:2FF(0:200h~0:2FFh)的256 个字节的空间。
所以,我们使⽤这段空间是安全的。
)5、使⽤U命令反汇编,并⽤T命令执⾏指令,查看执⾏后的结果,3条指令执⾏后AX的值为多少?实验2、使⽤Debug命令设置下列寄存器及存储器的内容(DS)=2000H, (BX)=0100H, (SI)=0002H, (20100)=12H, (20101)=34H, (20102)=56H, (20103)=78H, (21200)=2AH, (21201)=4CH, (21202)=B7H, (21203)=65H.,⽤汇编(A)、单步执⾏(T)等命令求解下列7个问题的答案,记录每条指令执⾏后AX的值并分析每条指令中源操作数使⽤的是何种寻址⽅式。
(1)MOV AX,1200H(2) MOV AX,BX(3) MOV AX,[1200H](4) MOV AX,[BX](5) MOV AX,1100[BX](6) MOV AX,[BX][SI](7) MOV AX,1100[BX][SI]实验3、⽤A命令写⼊汇编指令,使⽤寄存器、段寄存器、存储器和⽴即数等作为操作数,验证mov、add等指令的格式并得出结论。
DEBUG的启动及其基本命令的使用
实验一DEBUG的启动及其基本命令的使用一.实验目的:掌握DEBUG 的基本命令及其功能二.实验内容:DEBUG是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。
1、DEBUG程序的启动在DOS提示符下,可键入命令:C>DEBUG[d:][path][文件名][ 参数1][参数2]其中文件名是被调试文件的名称,它须是执行文件(EXE),两个参数是运行被调试文件时所需要的命令参数,在DEBUG程序调入后,出现提示符“-”,此时,可键入所需的DEBUG命令。
在启动DEBUG时,如果输入了文件名,则DEBUG程序把指定文件装入内存。
用户可以通过DEBUG的命令对指定文件进行修改、显示和执行。
如果没有文件名,则是以当前内存的内容工作,或者用命名命令和装入命令把需要的文件装入内存,然后再用DEBUG的命令进行修改、显示和执行。
2、DEBUG的主要命令(1)汇编命令A,格式为:-A[地址]该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。
(2)反汇编命令U,有两种格式:1)-U[地址]该命令从指定地址开始,反汇编32个字节,若地址省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。
2)-U范围该命令对指定范围的内存单元进行反汇编,例如:-U 04BA:0100 0108或–U 04BA:0100 L9此二命令是等效的。
(3)运行命令G,格式为:-G [=地址1][地址2[地址3。
]]其中地址1规定了运行起始地址,后面的若干地址均为断点地址。
(4)追踪命令T,有两种格式:1)逐条指令追踪:-T[=地址]该命令从指定地址起执行一条指令后停下来,显示寄存器内容和状态值。
2)多条指令追踪:-T[=地址][值]该命令从指定地址起执行n条命令后停下来,n由[值]确定。
(5)显示内存单元内容的命令D,格式为:-D[地址]或-D[范围](6)修改内存单元内容的命令E,它有两种格式:1)用给定的内容代替指定范围的单元内容:-E地址内容表例如:-E 2000:0100 F3 “XYZ” 8D其中F3,“X”“Y”“Z”和8D各占一个字节,用这五个字节代替原内存单元2000:0100到0104的内容,“X”“Y”“Z”将分别按它们的ASCII码值代入。
汇编教程 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的使用汇编语言是一种低级语言,它与机器语言非常接近,每一个汇编语言的指令几乎都对应着一条机器指令。
因此,了解并掌握汇编语言对于理解计算机内部工作原理以及进行底层编程是非常有帮助的。
下面,我将详细介绍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的使用
格式: E <地址> [<单元内容表>] (1) E <地址> 功能: 不断显示地址,可连续键入修改内容,直至新地址出现后
键入回车Enter为止。
(2) E <地址> <单元内容表> 其中<单元内容表>是以空格分隔的十六进制数,或用’或”
括起来的字符串,或者是二者的组合。
汇编语言程序设计
二、如何 进入Debug
方法1:在运行对话框中输入“cmd”或“command”启动 DOS命令窗口后输入“Debug”回车; 方法2:在程序/附件/命令提示符,启动DOS命令窗口后输 入“Debug”回车。 进入Debug的提示符是符号“-”。即出现提示符“-”就表 示可以接受DEBUG命令了。 按Alt+Enter键可在全屏与窗口之间切换。
汇编语言程序设计 示例:用A命令,输入下列程序并运行 -a 1000:0
mov ax, 1
mov bx, 2 mov cx, 3
add ax, bx
add ax, cx add ax, ax 直接按Enter键结束输入。 用r命令将cs修改成1000,ip修改成0,再 使用t命令单步执行程序。执行T命令时,CPU执行CS:IP指向的指令 并将IP加指令长度指向下一条指令。
汇编语言程序设计
四、Debug常用命令
? 显示 Debug 命令列表。 R 显示或改变一个或多个寄 存器的内容 D 显示查看内存中的内容。 E 从指定地址开始,将数据输 入到内存,即改写内存的内容。 A 以汇编指令的格式在内存 中写入一条机器指令。 U 反汇编字节并显示相应的 汇编指令 T 执行一条指令,然后显示 所有寄存器的内容
7、G命令
汇编语言源程序运行步骤和DEBUG的使用
汇编语言源程序运行步骤和DEBUG的使用汇编语言是一种低级语言,用于编写计算机硬件的指令。
编写汇编语
言源程序后,需要经过一系列步骤才能在计算机上运行。
同时,调试工具DEBUG可以帮助程序员查找和修复程序中的错误。
一、汇编语言源程序运行步骤:
2.汇编:将源程序转化为机器码指令的过程称为汇编。
通过使用汇编
器(如MASM、NASM等),可以将源程序翻译成可执行的机器码文件。
在
汇编的过程中,所有的指令和操作数都被翻译成计算机可以理解的二进制
形式。
3. 链接:链接是将目标文件和库文件组合成一个可执行文件的过程。
当汇编源程序时,可能会调用外部库函数,这些函数的实现通常包含在库
文件中。
链接器(如link.exe)负责将这些函数和源程序连接起来,最
终生成一个可执行文件。
4.运行:通过操作系统加载可执行文件到内存中,并开始执行。
在运
行过程中,CPU按照程序的指令一步一步地执行,计算、存储和传输数据。
执行过程中,程序可能会从输入设备读取数据并输出结果。
二、DEBUG的使用:
DEBUG是一个DOS系统中内置的调试工具,可用于查找和修复程序中
的错误。
它通过允许程序员直接与内存、寄存器和指令交互,提供了一种
直观、低级的调试方式。
1.启动DEBUG:在DOS命令行中输入DEBUG命令,启动DEBUG程序。
DEBUG启动后,会显示一个":"提示符,等待用户输入指令。
debug命令的基本使用
Debug的基本使用1.使用r命令查看或修改CPU寄存器的内容。
(1)使用r的命令查看:(2)使用r来改变寄存器中的内容:例如修改AX的值,就需输入“r ax”后按Enter键,在出现的“:”后面输入要写入的数据,并按Enter,再用r查看,修改成功,如图1所示。
图1用r来修改Ip的值,如图2所示。
2.用d来查看内存的内容。
(1)直接输入d,debug将输出3部分内容,如图3所示。
图3(2)可以使用“d 段地址:偏移地址”的格式,例如想查看内存10000H处的内容。
(3)在使用“d 段地址:偏移地址”之后,接着使用d命令,可列出后续的内容,如图5所示。
图5(4)使用d命令查看范围,格式为“d 段地址:起始偏移地址结尾偏移地址”。
例如要查看1000:0到1000:9中的内容,如图6所示。
图63.用e来改写内存中的内容。
(1)将内存1000:0-1000:9中的内容分别改为0、1、2、3、4、5、6、7、8、9,其格式为“e 起始地址数据数据数据。
”,如图7所示。
图7(2)用提问的方法改写内存的内容。
以1000:10为起始地址进行改写,其步骤为:输入“e 1000:10”,并按Enter,在显示光标后面输入想要修改的内容,如果想停止输入,就按Enter,继续就按空格键。
(在显示光标后面直接按空格键,则表示不对当前内存单元进行改写)(3)用e向内存中写入字符。
(4)用e命令向内存中写入字符串。
(5)用e命令向内存中写入机器码,用u命令查看内存中机器码的含义,用t命令执行内存中的机器码。
例如要从内存1000:0单元开始写入机器码:b80100b9020001c8,其方法如图8所示。
图8用u将从1000:0开始的内存单元中的内容翻译为汇编指令并显示出来。
(见图9)使用t命令可以执行CS:IP指向的指令。
(图10)图10执行T命令后,cpu执行CS:IP指向的指令,则1000:0处的指令b8 01 00(mov ax,0001)得到执行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一Debug命令的使用一、知识点1、DEBUG简介DEBUG.EXE是DOS提供的用于调试可执行程序的一个工具软件。
在汇编语言程序调试中很常用。
DEBUG的提示符是“-”,所有DEBUG调试命令军在此提示符下输入。
DEBUG命令都是一个字母,后跟一个或多个参数,也可使用默认参数。
DEBUG命令的使用注意问题:(1)字母不分大小写(2)只使用十六进制数,但没有带后缀字母“H”(3)命令如果不符合DEBUG的规则,则将以“error”提示,并以“^”指示出错位置。
(4)每个命令只有按下回车键后才有效,可以用Ctrl+Break终止命令的执行。
2、Debug的调入和退出以WIN2000环境为例,点击“开始/运行…”,在“运行”对话框中输入命令:cmd,然后点击“确定”,进入DOS命令行状态:C:\Documents and Settings\lfy>然后输入命令:>Debug进入Debug调试状态,出现Debug命令提示府“-”,在此提示符下可运行所需要的Debug 命令了。
退出Debug的命令:Q3、Debug常用命令(1)汇编命令A,格式为:- A [地址]功能:从指定地址开始允许输入汇编指令,并将该指令汇编成机器指令代码从指定地址开始存放。
若不指定地址,则系统从默认的地址开始存放。
按回车键退出汇编状态应用:用于调试一条指令或几条指令组成的一个程序段。
(2)显示和修改寄存器命令R,格式为:- R [寄存器名]功能:若指定寄存器,则显示指定的寄存器的内容,并可进行修改;若不要修改,则按Enter 健。
若未指定寄存器,则默认为显示所有寄存器的内容。
应用:常用于通过寄存器的值查看指令的执行结果。
(3)内存单元内容的命令E,格式为:- E 地址[内容表]功能:若指定内容表,则用内容表中的内容代替指定地址开始的存储单元的值;否则,从指定地址开始逐个单元显示其内容,并等待用户修改,按空格键则继续显示下一单元的值,按回车键结束。
例如:-E 100184E: 0100 89,78其中,184E是数据段的段地址,0100是要修改的单元的偏移地址,89为该单元的值,78为程序员键入的值。
结果0100单元的值由89H改变为78H。
应用:常用于在调试程序的过程中改变变量的初始值。
(4)显示内存单元内容的命令D,格式为:- D [地址] 或–D [范围]功能:前者为显示从指定地址开始的一段存储单元的值;后者为显示指定范围内的存储单元的值。
例如:- D 200 ;显示从DS:200单元开始的各单元的值- D 200 L10 ; 显示从DS:200单元开始的10个字节单元的值。
应用:常用于在调试过程中检查变量的值。
(5)单步执行命令T,格式为:- T [=地址]功能:从指定地址执行一条指令后停下来,显示寄存器内容和状态值。
若未指定地址,则执行当前指令的下一条指令。
(6)反汇编命令 U ,格式为:-U [地址] 或 -U 范围功能:从制定地址开始,反汇编32个字节,或对指定范围内的主存内容进行反汇编。
若没有指定地址,则接着上一个U命令的最后一个单元开始;若还没有使用过U命令,则从当前CS:IP开始。
例如:-U 100,1061343:0100 B80302 MOV AX,02031343:0103 BB0540 MOV BX,40051343:0106 01D8 ADD AX,BX其中,屏幕最左边是主存逻辑地址(段地址:偏移地址),中间是该指令的机器代码,右边是对应指令的汇编语句格式。
(7)运行命令G, 格式为:-G[ = 起始地址] [断点地址1,断点地址2,……,断点地址10]功能:从等号后的起始地址开始运行,直到遇到断点或程序正常结束。
例如:-G=100 106则程序执行从100开始的程序段,到断点106停止。
此时指令ADD AX,BX并未执行。
二、实验目的及要求1、编语言调试环境Debug的使用,重点掌握常用命令(A R D E T)的使用,其他指令在以后的学习中逐步掌握。
2、利用Debug命令,调试采用不同寻址方式的指令的执行结果,从实践中加深对寻址方式和MOV指令的理解。
三、实验内容1、Debug程序的调入和退出2、Debug常用调试命令的使用3、MOV指令、XCHG指令的调试四、实验步骤1、先进行简单的指令练习:1)D命令(显示):-d, -d 0af9:0100 , -d 0af9:0100 0107, -d ds :0100 0107 , -d 0100 0107,-d 0100 L 82)E命令(修改):-e 0af9 : 0100 41 ‘a’, -e 0100 ‘ABCD’修改后,用-D查看!3)-R寄存器显示修改命令:-r -r ax 并修改ax中内容4)汇编命令-A:做下面题。
通过-r查看寄存器变化,-t单步调试(看下题)-a 执行后默认地址,-a 段地址:偏移地址是指定地址编写程序5)-U反汇编命令:-a后编写语句,-d查看,-u进行反汇编6)-T单步执行(看下题)7)-Q 退出命令2、练习:首先输入以下程序段,然后单步执行并查看结果;改变寄存器AX的初始值后再运行,并查看结果。
带下划线的部分为程序员输入的内容。
在DEBUG环境下,所有的数据均以十六进制输入和显示。
-A137B:0100 mov ax,20137B:0103 mov bx,ax137B:0105 add ax,bx137B:0107 mov [2000],ax137B:010A-T=0100AX=0020 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=137B ES=137B SS=137B CS=137B IP=0103 NV UP EI PL NZ NA PO NC137B:0103 89C3 MOV BX,AX-T=0103AX=0020 BX=0020 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=137B ES=137B SS=137B CS=137B IP=0105 NV UP EI PL NZ NA PO NC137B:0105 01D8 ADD AX,BX-TAX=0040 BX=0020 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=137B ES=137B SS=137B CS=137B IP=0107 NV UP EI PL NZ NA PO NC137B:0107 A30020 MOV [2000],AXDS:2000=000-TAX=0040 BX=0020 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=137B ES=137B SS=137B CS=137B IP=010A NV UP EI PL NZ NA PO NC137B:010A 0000 ADD [BX+SI],AL DS:0020=FF -D 2000 L2137B:2000 40 00.;修改0100处的指令mov ax,20 将AX的初始值改为10,并重新运行-A 0100137B:0100 mov ax, 10137B:0103;最后一条指令执行的结果如下:AX=0020 BX=0010 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=137B ES=137B SS=137B CS=137B IP=010A NV UP EI PL NZ NA PO NC137B:010A 0000 ADD [BX+SI],AL DS:0010=DF ;查看2000单元的值为0020H-D 2000 l2137B:2000 20 00.;修改2000单元的值,由20h改为30h 并重新显示-E 2000137B:2000 20.30-D 2000 l2137B:2000 30 00五、拓展题MOV、XCHG的调试。
要求:用汇编命令A输入以下源程序段,用T命令单步执行,查看执行结果:寄存器或存储单元的值。
提示:在DEBUG环境下输入程序段时要省掉立即数后面的字符“H”1、MOV指令的调试:程序段:MOV AL, 55HMOV AH, ALMOV BX, 1000HMOV BYTE PTR[BX], 66H(将66H放到以寄存器间接寻址的字节单元中,-d 查看)MOV WORD PTR[BX+2], 77H (将77H放到以寄存器间接寻址的字单元中,-d查看)MOV [BX+4], AX2、XCHG指令的调试:程序段:MOV AX, 0203HMOV BX, 0405HXCHG AX, BXXCHG BL, BH3、练习寻址方式:首先用-r先查看寄存器的内容,通过-a 进行mov语句输入,然后通过-t查看寻址后寄存器的变化mov dl,20h (-a,-t)mov al,bl (-r,-a,-t)mov al,[1234] (-a,-r,-t)mov al,[bx] (-a,-r,-t)mov al,[bx]+2 (-a,-r,-t)mov al,[bi][si] (-a,-r,-t)六、实验报告写出在DEBUG状态下编写、运行程序段的过程以及调试所中遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。