实验1 IBM-PC寻址方式及DEBUG的使用

合集下载

汇编实验报告(-)调试程序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的使用

实验一 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的使用方法

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

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

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

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

实验一Debug命令的使用

实验一Debug命令的使用

实验一Debug命令的使用实验一Debug命令的使用一、实验说明1、 DEBUG简介DEBUG.EXE是DOS提供的用于调试可执行程序的一个工具软件。

在汇编语言程序调试中很常用。

DEBUG的提示符是“-”,所有DEBUG调试命令军在此提示符下输入。

DEBUG命令都是一个字母,后跟一个或多个参数,也可使用默认参数。

DEBUG命令的使用注意问题:(1)字母不分大小写(2)只使用十六进制数,但没有带后缀字母“H”(3)命令如果不符合DEBUG的规则,则将以“error”提示,并以“^”指示出错位置。

(4)每个命令只有按下回车键后才有效,可以用Ctrl+Break终止命令的执行。

2、 Debug的调入和退出以Windows环境为例,点击“开始/运行…”,在“运行”对话框中输入命令:cmd,然后点击“确定”,进入DOS命令行状态,如:C:\Documents and Settings\mjy>然后输入命令:>Debug进入Debug调试状态,出现Debug命令提示府“-”,在此提示符下可运行所需要的Debug 命令了。

退出Debug的命令:Q3、 Debug常用命令(1)汇编命令A,格式为:- A [地址]功能:从指定地址开始允许输入汇编指令,并将该指令汇编成机器指令代码从指定地址开始存放。

若不指定地址,则系统从默认的地址开始存放。

按回车键退出汇编状态应用:用于调试一条指令或几条指令组成的一个程序段。

(2)显示和修改寄存器命令R,格式为:- R [寄存器名]功能:若指定寄存器,则显示指定的寄存器的内容,并可进行修改;若不要修改,则按Enter 健。

若未指定寄存器,则默认为显示所有寄存器的内容。

应用:常用于通过寄存器的值查看指令的执行结果。

(3)内存单元内容的命令E,格式为:- E 地址[内容表]功能:若指定内容表,则用内容表中的内容代替指定地址开始的存储单元的值;否则,从指定地址开始逐个单元显示其内容,并等待用户修改,按空格键则继续显示下一单元的值,按回车键结束。

实验一 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内容

DEBUG的基本命令使用

DEBUG的基本命令使用

实验一 DEBUG的基本命令使用实验名称:利用DEBUG验证寻址方式实验目的:掌握DEBUG的常用指令(R,D,E,A,U,T 指令)的使用方法,理解不同寻址方式的特点实验内容:在DEBUG中利用A命令输入以下汇编指令,并用U命令显示,利用T 命令单步跟踪指令的执行过程,利用R或者D命令观察相关寄存器或者内存单元内容的变化(相关过程和结果要体现在实验报告上)。

(1)立即寻址MOV AX,1MOV BL,02HMOV BH,34H-a13AE:0100 mov ax,113AE:0103 mov bl,0213AE:0105 mov bh,3413AE:0107-rAX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0100 NV UP EI PL NZ NA PO NC13AE:0100 B80100 MOV AX,0001-tAX=0001 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0103 NV UP EI PL NZ NA PO NC13AE:0103 B302 MOV BL,02-tAX=0001 BX=0002 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0105 NV UP EI PL NZ NA PO NC13AE:0105 B734 MOV BH,34-tAX=0001 BX=3402 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0107 NV UP EI PL NZ NA PO NC13AE:0107 0000 ADD [BX+SI],AL DS:3402=00(2)寄存器寻址在验证完(1)后,执行mov ax,bx-a13AE:0107 mov ax,bx13AE:0109-tAX=3402 BX=3402 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0109 NV UP EI PL NZ NA PO NC13AE:0109 0000 ADD [BX+SI],AL DS:3402=00 -rAX=3402 BX=3402 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0109 NV UP EI PL NZ NA PO NC13AE:0109 0000 ADD [BX+SI],AL DS:3402=00(3)直接寻址用e命令向DS:1000处写入1234H,用D命令DS:1000处内容,然后执行mov AX,[1000H]-e 13a8:1000 34 12-d 13a8:1000 100113A8:1000 34 12 4.-a13AE:0109 mov ax,[1000]13AE:010C-tAX=0000 BX=3402 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=010C NV UP EI PL NZ NA PO NC13AE:010C 0000 ADD [BX+SI],AL DS:3402=00 -rAX=0000 BX=3402 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=010C NV UP EI PL NZ NA PO NC13AE:010C 0000 ADD [BX+SI],AL DS:3402=00(4)寄存器间接寻址用E命令向DS:1000处改写5678H,用D命令观察DS:1000处内容,然后执行-e13a8:1000 78 56-d 13a8:1000 100113A8:1000 78 56 xV-a13AE:010C mov si,100013AE:010F mov ax,[si]13AE:0111-tAX=0000 BX=3402 CX=0000 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=010F NV UP EI PL NZ NA PO NC13AE:010F 8B04 MOV AX,[SI] DS:1000=0000 -tAX=0000 BX=3402 CX=0000 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0111 NV UP EI PL NZ NA PO NC13AE:0111 0000 ADD [BX+SI],AL DS:4402=00 -rAX=0000 BX=3402 CX=0000 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0111 NV UP EI PL NZ NA PO NC13AE:0111 0000 ADD [BX+SI],AL DS:4402=00(5)变址寻址执行Mov BX,1000hMov AX,[BX+1]观察指令执行后AX,BX内容,以及[BX+1]内存单元处数据-a13AE:0111 mov bx,100013AE:0114 mov ax,[bx+1]13AE:0117-tAX=0000 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0114 NV UP EI PL NZ NA PO NC13AE:0114 8B4701 MOV AX,[BX+01] DS:1001=0000 -tAX=0000 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0117 NV UP EI PL NZ NA PO NC13AE:0117 0000 ADD [BX+SI],AL DS:2000=00 -rAX=0000 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=0117 NV UP EI PL NZ NA PO NC13AE:0117 0000 ADD [BX+SI],AL DS:2000=00 -d 1001 100213AE:1000 00 00 ..(6)变址加基址寻址用E命令向DS:1000~1004处写入0AB90H,03412H,然后执行Mov BX,1000hMov SI,1Mov AX,[BX+SI]Mov CX,[BX+SI+1]-e 1000 12-e 1001 34-e 1002 90-e 1003 ab-a13AE:0117 mov bx,100013AE:011A mov si,113AE:011D mov ax,[bx+si]13AE:011F mov cx,[bx+si+1]13AE:0122-tAX=0000 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=011A NV UP EI PL NZ NA PO NC13AE:011A BE0100 MOV SI,0001-tAX=0000 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0001 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=011D NV UP EI PL NZ NA PO NC13AE:011D 8B00 MOV AX,[BX+SI] DS:1001=9034 -tAX=9034 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0001 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=011F NV UP EI PL NZ NA PO NC13AE:011F 8B4801 MOV CX,[BX+SI+01] DS:1002=AB90 -rAX=9034 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0001 DI=0000DS=13AE ES=13AE SS=13AE CS=13AE IP=011F NV UP EI PL NZ NA PO NC13AE:011F 8B4801 MOV CX,[BX+SI+01] DS:1002=AB90。

实验1debug的使用

实验1debug的使用

实验1debug的使用实验一DEBUG的使用一、实验目的:1. 熟悉DEBUG的功能,掌握其常用命令格式并能熟练使用。

2. 使用DEBUG,观察PC机执行汇编指令的过程,掌握寄存器的名称与内存单元地址的形成。

二、实验要求:1. 遵守规章制度,爱护实验室设备。

2、熟悉Debug各个命令的用法。

3、熟悉寄存器的名称以及物理地址的形成。

4、写出实验报告。

三、实验内容:实验1、 DEBUG常用指令操作进入Debug环境,完成下列步骤。

1、用R命令查看寄存器的值,将AX的值修改为1,BX的值修改为100 (十进制)。

2、用D命令查看内存00200H开始的128个单元的内容。

用E 命令将内存00200H和00202H处的内容分别改为1、2 。

3、用E命令将”I am a student!!”写入内存00200H处。

用D 命令查看是否写入成功。

4、用A 命令向内存00210H处写入汇编指令MOV AX,1234MOV BX,0158ADD AX, BX5、使用U命令反汇编,并用T命令执行上述指令,查看执行后的结果,3条指令执行后AX的值为多少?6、直接在内存中将指令“MOV BX,0158”改为“ADD BX,0158”,其他指令不变。

然后用G命令执行这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.,并用命令查看设置是否成功。

实验3、理解指令的执行过程将下面3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方mov ax, 1add ax, axjmp 2000:003分析jmp指令的功能和执行过程。

DEBUG命令使用及寻址方式使用

DEBUG命令使用及寻址方式使用

实验一 DEBUG‎命令使用及‎8088指‎令使用一、实验目的1、熟悉使用D‎EBUG命‎令2、用DEBU‎G命令进行‎七种寻址方‎式的验证二、DEBUG‎学习指导DEBUG‎是专门为汇‎编语言设计‎的一种调试‎工具,它通过步进‎,设置断点等‎方式为汇编‎语言程序员‎提供了非常‎有效的调试‎手段。

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

在启动DE‎B UG时,如果输入了‎文件名,则DEBU‎G程序把指‎定文件装入‎内存。

用户可以通‎过DEBU‎G的命令对‎指定文件进‎行修改、显示和执行‎。

如果没有文‎件名,则是以当前‎内存的内容‎工作,或者用命名‎命令和装入‎命令把需要‎的文件装入‎内存,然后再用D‎E BUG的‎命令进行修‎改、显示和执行‎。

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[=地址] 该命令从指‎定地址起执‎行一条指令‎后停下来,显示寄存器‎内容和状态‎值。

IBM PC机的指令系统和寻址方式课件

IBM PC机的指令系统和寻址方式课件

MOV DS, ES MOV DS, 2000H
21
例: MOV AX, DATA_SEG MOV DS, AX
例: MOV AL, ‘E’
; MOV AL, 45H
例: MOV BX, OFFSET TABLE
例: MOV AX, Y[BP][SI]
返回
22
进栈指令: 执行操作:
PUSH SRC (SP) (SP) - 2 ( (SP)+1, (SP) ) (SRC)
; mov dl, ‘H’
; 显示字符‘H’ ; mov dl, ‘A’
; 显示字符‘A’
11
(2)寄存器间接寻址 mov cx, count mov bx, offset string
next: mov dl, [bx] mov ah, 2 int 21h inc bx loop next
(3)寄存器相对寻址 mov cx, count mov si, 0
MOV AX, [SI][DI]
9
7. 相对基址变址寻址方式*
有效地址 =
(BX)
+
(SI)
+
8位 位移量
(BP)
(DI) 16位
MOV AX, MASK[BX][SI] 或 MOV AX, MASK[BX+SI] 或 MOV AX, [MASK+BX+SI]
* 适于堆栈处理和数组处理
10
例:编写一段显示字符串STRING的程序
(5)DOS显示字符串功能 mov dx, offset string
mov ah, 9 int 21h
; string的偏址 dx ; lea dx, string

debug命令的使用

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 [<起始地址>]功能:逐行汇编程序,主要用于小段汇编程序。

实验1 DEBUG命令的使用

实验1 DEBUG命令的使用

山西大学计算机与信息技术学院实验报告姓名江乐晚学号2009241035 专业班级2010级计科课程名称IBM-PC 汇编语言程序设计实验日期成绩指导老师李桂成批改日期实验名称DEBUG命令的使用一.实验目的:在本次实验“DEBUG命令的使用”中,学会在DOS模式下运用DEBUG命令来编写指令,并显示其结果,检查是否与自己算出的相同。

二.实验内容:操作:用-a写入实验所要求的每条指令,全部输完以后,-t显示执行完每一条后的每个寄存器的变化,标志位的变化。

1.将下列程序段中的每条指令执行之后,AX寄存器及CF,SF,ZF和OF的内容是什么?MOV AX,0DEC AXADD AX,7FFFHADD AX,2NOT AXSUB AX,0FFFFHADD AX,8000HSUB AX,1AND AX,58D1HSHL AX,1 ;逻辑左移SAR AX,1 ;算数右移NEG AX ;求补ROR AX,1 ;循环右移每条指令执行后结果如下:AX寄存器CF SF ZF OF指令结果MOV AX,00000 NC PL NZ NVDEC AX FFFF NC NG NZ NV ADD AX,7FFFH7FFE CY PL NZ NV ADD AX,28000 NC NG NZ OV NOT AX7FFF NC NG NZ OV SUB AX,0FFFFH8000 CY NG NZ OV ADD AX,8000H0000 CY PL ZR OV SUB AX,1FFFF CY NG NZ NV ADD AX,58D1H58D1 NC PL NZ NV SHL AX,1B1A2 NC NG NZ OV SAR AX,1D8D1 NC NG NZ NV NEG AX272F CY PL NZ NV ROR AX,19397 CY PL NZ OVAX寄存器存放的是每条指令运行完后的结果。

CF = NC = 0 无进位CF = CY = 1 有进位SF = PL = 0 符号为负SF = NG = 1 符号为正ZF = NZ = 0 不为0 ZF = ZR = 1 为0OF = NV = 0 无溢出OF = OV = 1 溢出\ 运行结果与上述计算结果相同。

实验一 用DEBUG熟悉指令功能和寻址方式

实验一 用DEBUG熟悉指令功能和寻址方式

实验一用DEBUG熟悉指令功能和寻址方式一、实验性质:验证型二、实验目的:掌握debug的使用,能建立和运行汇编语言程序掌握寻址方式DEBUG的命令DEBUG的命令都用单个字母表示,其后可以跟一个或多个参数,参数之间用空格或逗号分隔。

DEBUG的命令参数大多数是地址或地址范围,其地址书写格式为:[段地址:]偏移地址其中的段地址可以用段寄存器名表示,也可以用一个十六进制数表示。

如:ES:10043A5:200地址范围的书写格式为:Ⅰ.[段地址:]起始偏移地址终止偏移地址Ⅱ.[段地址:]起始领衔地址L长度如:CS:10010F和CS:100L10所指的地址范围是一致的。

当输入的命令不正确时,DEBUG将在该行底下指出错误所在。

注意:在DEBUG下,输入的数据和显示的数据都是十六进制数,不用在数据后加“H”A汇编与反汇编命令1.汇编命令A格式:A[地址]功能:从键盘输入汇编程序,并逐条地把汇编指令翻译成机器代码指令存入对应内存单元。

说明:如果不指定汇编地址,则以CS:IP为地址。

例:0BB6:0000-0005写入三条指令。

2.反汇编命令U格式:U[地址]/[地址范围]功能:将指定地址范围内的机器代码翻译成汇编源程序指令显示出来,并同时显示地址及代码。

注意:反汇编时一定确认指令的起始地址,否则得不到正确的结果。

例:反汇编看CS:0005-0011单元的指令。

B显示与修改内存单元内容的命令1.显示内存单元内容命令D格式1:D[地址]格式2:D地址范围只写一个D,表示显示从当前地址单元开始的128个单元中的字节数据说明:D命令在屏幕上显示的内容分为三部分,左边是每一行存储单元的起始地址,中间是各字节单元的内容,右边是各单元内容对应的ASCII码字符(不可显示的字符用"."代替)。

指定要显示的单元的逻辑地址,即写出完整的段地址和偏移地址。

指定要显示数据区起始单元的地址和最后一个单元的地址。

IBM-PC汇编语言程序实验报告

IBM-PC汇编语言程序实验报告

华北电力大学实验报告名称:汇编语言程序设计综合实验院系:信息工程系班级:网络工程10k1 学号:学生姓名:指导教师:设计天数:成绩:日期:年月日实验一用表格形式显示ASCII字符一、实验说明:按15行X16列的表格显示表示ASCII码为10H—100H的所有字符,即以行为主的顺序及ASCII码递增的次序一次显示对应的字符。

每16个字符为一行,每行中的相邻来那个字符之间用空白(ASCII为0)隔开。

(1)显示每个字符可使用功能号为02的现实输出功能调用,使用方法如下:mov ah,02hmov dl,输出字符的ASCII码int 21h本题中可把dl初始化为10H,然后不断使其加1(用INC指令)以取得下一个字符的ASCII码。

(2)显示空白符时,用其ASCII码置入dl寄存器。

每行结束时,用显示回车(ASCII为0dh)和换行符(ASCII为0ah)来结束本行并开始下一行。

(3)由于逐个显示相继的ASCII字符时,需要保存并不断修改dl寄存器的内容,而现实空白、回车、换行符时也需要使用dl寄存器,为此可使用堆栈来保存相机的ASCII字符。

具体使用方法:在显示空白或回车、换行符前用指令push dx把dl的内容保存到堆栈中去。

在现实空白或回车、换行符后用指令pop dx恢复dl寄存器的原始内容。

二、程序代码:code segmentassume cs:codestart:mov dx,0010h ;初值为10hnext:mov cx,0010h ;16列loop1:mov ah,02h;int 21h ;显示输出dl字符inc dx ;dx加1push dx ;把dx推进栈保存mov dl,0 ;显示空白符int 21hpop dx ;把dx之前的数取回来loop loop1 ;当cx=0时会自动跳出loop1循环push dx ;保存dx的数,即为了保存ascii码mov dl,0ah ;显示回车int 21h ;02的显示输出功能调用mov dl,0dh ;显示换行符int 21hpop dx ;把dx之前的数取回来cmp dx,100h ;最后的字符的ascii码为100h,相比较jb next ;小于时就跳会nextmov ah,4ch ;带返回码终止int 21hcode endsend start三、运行结果实验二查找匹配字符串一、实验说明程序接受用户键入的一个关键字以及一个句子。

IBM-PC汇编语言程序设计实验报告

IBM-PC汇编语言程序设计实验报告

目录实验1 利用DEBUG调试汇编语言程序段 (1)实验2 初级程序的编写与调试实验(一) (5)实验3 初级程序的编写与调试实验(二) (14)实验4 汇编语言程序上机过程 (19)实验5 分支程序实验 (22)实验6 循环程序实验 (26)实验7 子程序实验 (30)实验1 利用DEBUG调试汇编语言程序段一.实验目的1.熟悉DEBUG有关命令的使用方法;2.利用DEBUG掌握有关指令的功能;3.利用DEBUG运行简单的程序段。

二.实验环境PC微机DOS操作系统、Windows操作系统三.实验内容1.进入和退出DEBUG程序;1)开始—运行,输入cmd,点确定进入命令窗口2)在命令窗口中输入dubug进入debug程序3)进入debug窗口后,输入q命令退出debug2.学会DEBUG中的1)D命令(显示内存数据D 段地址:偏移地址)-D100 ;显示DS段, 0100开始的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命令(修改指定内存)-E DS:100 F3 ‘AB’ 8D ; 把DS段中0100H开始的四个字节修改为F3 ‘AB’(A和B的ASCII 码) 8D也可以按下面的方式实现3)R命令(显示当前寄存器的内容)4)T命令(设置陷井,单步执行)5)A命令(将指令直接汇编成机器码输入到内存中。

)使用A命令在0100H开始输入指令mov ax, 10 inc cx mov bl, al单步执行上述指令6)G命令等的使用(执行A命中输入的汇编指令)使用A命令在0100H开始输入指令mov ax, 10 inc cx mov bl, al int 3然后使用g命令执行上面的例子设断点在100H处然后用T命令单步执行实验2 初级程序的编写与调试实验(一)一.实验目的1.进一步熟悉DEBUG命令;2.掌握数据在内存中的存放方式和内存操作数的几种寻址方式,段寄存器和物理地址计算;3.熟悉数据传送指令、算术运算指令、逻辑指令、数据串传送程序和数据串传送指令MOVS、STOS及重复前辍REP;4.掌握简单的汇编语言程序编写与调试。

实验一--掌握DEBUG-的基本命令及其功能

实验一--掌握DEBUG-的基本命令及其功能

实验一--掌握DEBUG-的基本命令及其功能实验一掌握DEBUG 基本命令及其功能【上篇】查看CPU和内存,用机器指令和汇编指令编程一.实验目的:掌握DEBUG 的基本命令及其功能掌握win7 win8 使用DEBUG功能二.实验内容:1. 预备知识:Debug的使用(1) 什么是Debug?Debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。

使用它,可以查看CPU 各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。

(2) 我们用到的Debug功能●用Debug的R命令查看、改变CPU寄存器的内容;●用Debug的D命令查看内存中的内容;●用Debug的E命令改写内存中的内容;●用Debug的U命令将内存中的机器指令翻译成汇编指令;●用Debug的T命令执行一条机器指令;用Debug的A命令以汇编指令的格式在内存中写入一条机器指令。

(3) 进入DebugDebug是在DOS方式下使用的程序。

我们在进入Debug前,应先进入到DOS方式。

用以下方式可以进入DOS:①重新启动计算机,进入DOS方式,此时进入的是实模式的DOS。

②在Windows中进入DOS方式,此时进入的是虚拟8086模式的DOS。

三.实验任务解决方案1. 从网上下载Dosbox和debug.exe(文件夹中有)。

2. d ebug.exe放在D:根目录,然后安装,安装完成以后,点击快捷方式进入Dos界面:3.输入mount c d:\ 接着输入c:01 d8 add ax,bx89 c3 mov bx,ax01 d8 add ax,bxb8 1a 00 mov ax,001AH bb 26 00 mov bx,0026H 00 d8 add al,bl00 dc add ah,bl00 c7 add bh,alb4 00 mov ah,000 d8 add al,bl04 9c add al,9CH提示:可用E命令和A命令以两种方式将指令写入内存。

实验报告一:DEBUG命令的使用

实验报告一:DEBUG命令的使用

DEBUG命令的使用
一、实验目的
1.练习简单的DOS命令(DIR, CD,MD ,CLS)
2.学习使用DEBUG程序的常用命令。

(R,D,E, A,U,T, G,Q)
3.了解8086内存地址空间分配
二、实验任务
1.用DIR命令查看当前工作目录的文件。

2.用命令 CD进入下一级子目录,用命令 MD建立子目录。

3.用命令 CLS清屏。

4.用R命令查看8086/8088 CPU在开机后执行的第一条指令。

(8086/8088 CPU在开机后
执行的第一条指令在内存FFFF:0H开始处。


实验步骤:
5.用命令D查看DS:200~22F和F000:200~22F两内存块内容,用命令F将字符“A”
分别填入这两个内存块,比较填入前后结果,了解可读写内存RAM和只读内存ROM 的区别。

实验步骤及实验现象:
6.PC机主板上的ROM中写有一个生产日期,在内存FFF00H~FFFFFH的某个单元中,
请找到这个生产日期并试图改变它。

实验步骤:
三、实验报告
1.记录CPU在开机后执行的第一条指令。

2.说明可读写内存RAM和只读内存ROM的区别。

3.记录任务4、5、6的产生的现象,说明原因。

4.针对实验目的认真做小结。

IBM PC汇编语言实践操作

IBM  PC汇编语言实践操作

IBM PC汇编语言实践操作本章主要介绍了汇编语言源程序的编辑、汇编、连接的方法,DEBUG调试命令及其使用方法一、编辑源程序汇编语言源程序:用汇编语句编写的解决应用问题的程序。

汇编程序:将汇编语言源程序翻译成机器语言程序的系统。

汇编:将汇编语言程序翻译成机器语言程序的过程。

在编辑汇编语言源程序时,对计算机硬件工作环境无特殊要求,对软件工作环境要求也很简单,只需用建立ASCII码文本文件的软件即可。

(1)编辑软件行编辑软件:全屏编辑软件:WPS、、、WORD、PE等。

当输入、建立和修改源程序时,可任选一种编辑软件,不要用格式控制符,要求编辑完成的文件扩展名一定是.ASM。

(2)汇编程序有汇编ASM.EXE、宏汇编MASM.EXE及TASM等,一般使用宏汇编MASM.EXE,因它比ASM.EXE功能强。

TASM适用于8086/8088~Pentium系列指令系统所编写的汇编语言程序,是比较先进的汇编工具。

(3)连接程序用连接程序LINK.EXE或TLINK.EXE,将MASM.EXE产生的机器代码程序(.OBJ)文件连接成可执行程序.EXE,TLINK比LINK更先进。

(4)辅助工具程序(.EXE)进行汇编语言程序调试和文件格式转换的程序有: 动态调试程序EXE2BIN.EXE 文件格式转换程序CREF.EXE 交叉引用程序编辑、汇编、连接、调试过程如图1.1所示。

TD(turbo Debugger简称)也是动态调试程序,可在DOS和Windows环境下运行,用户界面十分友好。

二、汇编源程序用编辑软件建立的源程序.ASM文件,必须经过汇编才能产生.OBJ文件。

为此,需键入:C:>MASM <源文件名>或C:>MASM按前一种格式键入,屏幕上显示:Microsoft(R) Macro assemble Version 5.00Copyright(C) Microsoft Corp 1981-1985,1987 ALL rights reservedOBJ filename[<file>.obj]:Source listing[nul.lst]:Cross-reference[nul.crf]:以上信息中方括中为该项提示的缺省回答值,冒号后面等待用户输入信息,若不改变缺省值则直接按回车键。

寻址方式与DEBUG的使用

寻址方式与DEBUG的使用

寻址方式和DEBUG的使用一、实验目的:(1)熟悉DEBUG的调试命令和DEBUG的调试指令的使用方法2)掌握各种寻址方式和指令的功能二、实验要求(1)掌握DEBUG的调试R 、A、U、D、E、T命令使用方法(2)掌握数据传送、算术和逻辑运算指令的功能三、实验步骤1、首先进入DEBUG状态,用R命令修改各寄存器的内容,以满足题目的要求。

2、用A命令写入要实验的指令。

3、用U命令查看写入内存的指令。

4、用E命令修改内存的内容。

5、用D命令查看写入内存的内容。

6、用T命令(跟踪命令)单步执行,观察运行的结果。

7、T命令后,用D命令(显示内存单元命令)观察内存单元的内容和运行的结果。

四、实验内容:1.利用DEBUG命令(R、D和E等命令),完成如下寄存器和内存单元的初始化,并写出所用的debug命令。

注意:存储单元为字时,高、低字节写入的顺序。

AX=1020H BX=5060H CX=A0B0H DX=E0F0HSP=FFFFH BP=0200H SI=3040H DI=7080HDS=2000H ES=0300H SS=0400H CS=0100H(2000H:0100H) = 4567H(2000H:5060H) = DEF3H2.利用DEBUG命令(A、U 、T和G等命令)分别输入并执行以下各条指令,利用DEBUG命令查看并记录每条指令执行后的结果(后3题用T命令执行)。

注意:在每次运行新指令时,必须保持寄存器和内存单元的初始化结果。

1) MOV AH,DL AH=?2) MOV AX,[0100H] AX=?3) MOV AX,[BX] AX=?4) PUSH CX SP=? (SP)=?5) MOV AX,[BP] AX=?6) JMP 0100H IP=?7) MOV BX,2000JMP BX IP=?8) MOV BX,2000JMP [BX] IP=?3.使用debug调试下列程序段,并写出运行结果。

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

宁德师范学院计算机系
实验报告
(2013 —2014 学年第1学期)
课程名称汇编语言程序设计
实验名称实验一IBM-PC寻址方式及DEBUG的使用专业计本(1)
年级11级
学号姓名
指导教师
实验日期2013年10月1日
实验步骤、实验结果及分析:
1、(1)、在DOS或Windows的命令行窗口执行命令Debug.exe,进入Debug程序环境.用-r查询各初始值,结果如下:
(2)用E命令键人上述机器语言程序和数据段的初值。

—E DS:000 23 01 25 00
—E DS:006 2A 2A 2A (2A为*,是为便于查看数据段内容而设置)
—E CS:100 A1 00 00 03 06 02 00
—E CS:107 A3 04 00 CB
(3)用D命令检查数据段、代码段内容。

—D DS:0
—D CS:100 结果如下:
(4)用T命令逐条执行上述程序,注意观察每条指令执行后相应寄存器的变化。

(5)用U命令反汇编本程序。

—U 100 10A
(6)用R命令修改IP的内容为0100重新执行上述程序。

—R IP
显示:输入0100
(7)用G命令运行程序。

—G =CS:0100 107
观察:IP=0107 AX=0148
—G =CS:0100 10A
观察:IP=010A AX= 0148
2.自己试着写段程序:
-A 100↙
16C6:0100 DB‘1234567890‘↙
16C6:010A CLD↙
16C6:010B MOV SI,100↙
16C6:010E MOV DI,200↙
16C6:0111 MOV CX,A↙
16C6:0114 REP MOVSB↙
16C6:0116↙
-G =10A 116↙;运行上述程序(起始地址10AH,结束地址116H)。

-D 100 10A↙;显示DS:100开始10个字节内容
-D ES:200 20A↙显示ES:100开始10个字节内容
实验分析:
DEBUG命令使用含义及格式如下:
-A:编辑和汇编源程序。

格式:-A 地址
-U:反汇编验证源程序。

格式:-U 地址
-R:观察或修改寄存器的内容。

-D:显示存储单元的内容。

格式:-D 地址
-E:修改存储单元的内容。

格式1:-E 地址
注:1、报告内的项目或设置,可根据实际情况加以补充和调整
2、教师批改学生实验报告应在学生提交实验报告10日内。

相关文档
最新文档