实验一 Debug常用命令及80x86指令的使用
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基本命令的使用
A:汇编命令,录入指令
A 4000:0100回车从4000:0100开始的单元装入指令
U:反汇编命令,查看指令
U:4000:0100回车查看4000:0100开始的单元装入指令
R:显示所有寄存器的内容
R AX回车显示并可修改指定寄存器的内容
IP:程序指针
执行程序时,用R指令,先将程序指针指向程序起始地址。
(假设程序起始地址为0110)
D:显示存储单元内容
D 3000:0100回车显示存储单元3000:0100开始的内容
D 回车继续显示下一屏存储单元的内容。
E:修改存储单元的内容
E 3000:0100回车修改3000:0100开始的存储单元的内容
3000:0100 **12 **34 **56 **78回车将3000:0100~3000:0103单元的内容分别修改为12、34、56、78。
T:执行单条指令
T回车从当前IP地址处执行一条指令,显示所有寄存器的内容,IP指向下一条指令。
1DEBUG命令的功能及使用
实验一DEBUG命令的功能及使用一实验目的掌握汇编语言基本运行环境和熟悉DEBUG调试程序的命令。
包括:学习使用指令,掌握常用的指令功能和简单程序设计;掌握DEBUG调试程序的命令,熟悉程序输入、存储器和CPU寄存器及标志位的检查方法,单步、断点、连续等运行程序的调试方法。
二实验内容DEBUG的主要命令功能与格式1.汇编命令A格式:A [[<段寄存器名>/<段地址>:] <段内偏移>]上式等价于:(1)A <段寄存器名>:<段内偏移>(2)A <段地址>:<段内偏移>(3)A <段内偏移>(4)A功能:键入该命令后显示段地址和段内偏移并等待用户从键盘逐条键入汇编命令,逐条汇编成代码指令,顺序存放到段地址和段内偏移所指定的内存区域,直到显示下一地址时用户直接键入回车键返回到提示符“-”。
注:其中(1)用指定段寄存器的内容作段地址,(3)用CS的内容作段地址,(4)以CS:100作地址。
以后命令中提及的各种‘地址’形式,均指(1)、(2)、(3)中A后的地址形式。
2.显示内存命令D格式:D [<地址>/<范围>]上式等价于:(1)D <地址>(2)D <范围>(3)D功能:以两种形式显示指定范围的内存内容。
一种形式为十六进制内容,一种形式为以相应字节的内容作为ASCII码的字符,对不可见字符以‘.’代替。
注:其中(1)以CS为段寄存器。
(3)显示CS:100起始的一片内容。
3.修改内存命令E格式:E <地址> [<单元内容表>]上式等价于:(1)E <地址>(2)E <地址> <单元内容表>其中<单元内容表>是以逗号分隔的十六进制数,或用’或”括起来的字符串,或者是二者的组合。
功能:(1)不断显示地址,可连续键入修改内容,直至新地址出现后键入回车Enter 为止。
汇编语言程序设计实验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命令的使用
实验一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 地址[内容表]功能:若指定内容表,则用内容表中的内容代替指定地址开始的存储单元的值;否则,从指定地址开始逐个单元显示其内容,并等待用户修改,按空格键则继续显示下一单元的值,按回车键结束。
实验1 Debug命令使用
实验1 查看CPU和内存,用机器指令和汇编指令编程1. 预备知识:Debug的使用我们以后所有的实验中,都将用到Debug程序,首先学习一下它的主要用法。
(1)什么是Debug?Debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。
使用它,可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。
(2) 我们用到的Debug功能。
●用Debug的R命令查看、改变CPU寄存器的内容;●用Debug的D命令查看内存中的内容;●用Debug的E命令改写内存中的内容;●用Debug的U命令将内存中的机器指令翻译成汇编指令;●用Debug的T命令执行一条机器指令;●用Debug的A命令以汇编指令的格式在内存中写入一条机器指令。
Debug的命令比较多,共有20多个,但这6个命令是和汇编学习密切相关的。
(3) 进入Debug。
Debug是在DOS方式下使用的程序。
我们在进入Debug前,应先进入到DOS方式。
用以下方式可以进入DOS。
①重新启动计算机,进入DOS方式,此时进入的是实模式的DOS。
②在Windows中进入DOS方式,此时进入的是虚拟8086模式的DOS。
下面说明在Windows中进入Debug的一种方法。
选择【开始】菜单中的【运行】命令,如图1所示,打开【运行】对话框,如图2所示,在文本框中输入“command”后,单击【确定】按钮。
图2 在文本框中输入“command”图1 选择【运行】命令进入DOS方式后,如果显示为窗口方式,可以按下Alt+Enter键将窗口变为全屏方式。
然后运行Debug程序,如图3所示。
图3 运行Debug程序(4)用R命令查看、改变CPU寄存器的内容。
我们已经知道了AX、BX、CX、DX、CS、IP这6个寄存器,现在看一下它们之中的内容,如图4所示。
其他寄存器如SP、BP、SI、DI、DS、ES、SS、标志寄存器等我们先不予理会。
实验一 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常用命令的使用【实验目的】(1)汇编语言源程序的编辑、汇编、连接的方法(2)掌握DEBUG常用命令的使用,如汇编命令A、反汇编命令U,查看寄存器命令R,查看内存单元命令D,修改内存单元命令E,填充内存单元命令F,设断点热行命令G及单步执行命令T等;DEBUG常用命令分类命令格式功能说明汇编与反汇编-A[地址] 从指定地址开始汇编程序地址默认值为:CS:IP-U[地址] 从指定地址开始反汇编32字节目标码-U 起始地址终止地址在指定地址范围内反汇编目标码运行与跟踪-G=起始地址][断点1…断点10]在指定地址开始执行到断点为止地址默认值为:CS:IP-T[=地址] 在指定地址执行一条指令后暂停-T[=地在指定地址执行n条指令后址]n 暂停存储单元读写移动比较与搜索-D[地址] 从指定地址开始显示80H字节存储单元内容地址默认值为:CS:IP-D起始地址终止地址显示指定地址范围内存储单元内容-E地址修改内容从指定地址开始逐个单元修改存储内容-S起始地址终止地址被查字符串从指定地址范围内查找字符串段地址默认值为DS寄存器读修改-R 显示所有寄存器的当前值-R 寄存器名显示指定寄存器的当前值,且可修改RF 显示F寄存器各标志位的当前值,且可修改输入输出-I端口地址读入端口地址中的值-O 端口地址值将指定值写到端口地址中退出-Q 结束DEBUG运行,返回DOS。
DEBUG命令使用及寻址方式使用
实验一 DEBUG命令使用及8088指令使用一、实验目的1、熟悉使用DEBUG命令2、用DEBUG命令进行七种寻址方式的验证二、DEBUG学习指导DEBUG是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。
1、DEBUG程序的启动在DOS提示符下,可键入命令: C>DEBUG[d:][path][文件名][ 参数1][参数2]其中文件名是被调试文件的名称,它须是执行文件(EXE),两个参数是运行被调试文件时所需要的命令参数,在DEBUG程序调入后,出现提示符“-”,此时,可键入所需的DEBUG命令。
在启动DEB UG时,如果输入了文件名,则DEBUG程序把指定文件装入内存。
用户可以通过DEBUG的命令对指定文件进行修改、显示和执行。
如果没有文件名,则是以当前内存的内容工作,或者用命名命令和装入命令把需要的文件装入内存,然后再用DE 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[=地址] 该命令从指定地址起执行一条指令后停下来,显示寄存器内容和状态值。
用DEBUG熟悉Intel80x86指令(一)
用DEBUG熟悉Intel80x86指令(一) 一、数据传送指令以程序MOV.asm为例DATAS SEGMENT;此处输入数据段代码DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX;此处输入代码段代码MOV CX,8000HMOV AL,DS:[100H]MOV AL,'E'MOV DS:[100H],ALLEA BX,[SI+100H]LDS SI,DS:[12H]LES DI,ES:[12H]MOV AX,DATASMOV DS,AXXCHG BX,[SI]XLATPUSH AXPUSH BXMOV AX,10HMOV BX,10HPOP BXPOP AXPUSHFPOPFLAHFSAHFMOV AH,4CHINT 21HCODES ENDSEND START1、MOV(传送)指令写法:MOV target,source功能描述:将源操作数source的值复制到target中去,source值不变。
MOV指令的机器语言有7种格式:(1)MOV mem/reg1,mem/reg2双操作数指令不允许两个操作数都使用存储器,因而两个操作数中必须有一个是寄存器。
这种方式不允许指定段寄存器。
(2)MOV reg,datareg指定寄存器,data为立即数。
这种方式也不允许指定段寄存器。
(3)MOV ac,memac为累加器。
(4)MOV mem,ac(5)MOV segreg,mem/regsegreg指定段寄存器,但不允许使用CS寄存器。
(6)MOV mem/reg,segreg(7)MOV mem/reg,dataMOV传送的信息可以从寄存器到寄存器,立即数到寄存器,立即数到存储单元,从存储单元到寄存器,从寄存器到存储单元,从寄存器或存储单元到除CS外的段寄存器(注意,立即数不能直接送给段寄存器),从段寄存器到寄存器或存储单元。
实验一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的使用
实验一DEBUG的使用实验1 DEBUG的使用一、实验目的:通过实验掌握下列知识:1、DEBUG命令的使用;2、8088系统中数据在内存中的存放方式和内存操作数的几种寻址方式。
二、实验类型:验证三、实验内容和步骤1、将AX,BX,CX,DX的值分别改为100H,200H,300H,400H2、将标志位CF,SF,ZF值改为13、将2000H:1000H开始的连续3个字节单元的值分别改为12H,34H,56H4、将3000H:1000H开始的连续20H个字节单元的内容全部改写55H5、写一段程序,求2000H:1000H开始的连续3个字节单元的和,将结果保存到2000H:2000H 字节单元中(设不会溢出)6、设2000H:1000H,2000H:1004H两个字单元的内容分别为1234H,5678H,写一段程序实现将两个字单元的值进行交换7、内存操作数及各种寻址方式使用程序内容:MOV AX,1234MOV [1000],AXMOV BX,1002MOV BYTE PTR[BX],20MOV DL,39INC BXMOV [BX],DLDEC DLMOV SI,3MOV [BX+SI],DLMOV [BX+SI+1],DLMOV WORD PTR[BX+SI+2],2846操作步骤1)用A命令键入上述程序,并用T命令逐条运行。
2)每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。
注意D命令显示结果中右边的ASCII字符及字数据的存放方法。
8、求累加和程序:程序内容:MOV BX,1000MOV CX,10SUB AX,AXLOP: ADD AL,[BX]ADC AH,0INC BXJ: LOOP LOPINT3操作步骤:1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替。
2)用命令N AA将此程序命名为文件AA(文件名可任取)。
实验一 debug命令的使用
GUIZHOU UNIVERSITY实验报告实验课程名称微型计算机实验项目名称DEBUG命令的使用学院理学院专业班级电技091 学生姓名学号指导教师贵 州 大 学 实 验 报 告 纸 系 别 理学院 班 级 电技091 姓 名学号课 程 名 称 微型计算机 成 绩评 定 教师签名 实 验 时 间2011年 月 日实验一 DEBUG 命令的使用一.实验目的:掌握DEBUG 的基本命令及其功能二.实验任务:1、用DIR 命令查看当前工作目录的文件。
先用R 命令 -r cs 查看CS 寄存器中内容,并将其值改为0FFFFH,再用R 命令查看IP 寄存器中的内容,并将其改为0H,最后用R 命令查看CPU 寄存器中的内容,第一条指令为 :JMP F000:EO5B2、用命令COPY 将DEBUG .COM 复制到当前工作目录,目的文件名为BUG 。
3、用命令DEL将文件BUG删除。
4、用R命令查看8086/8088CPU在开机后执行的第一条指令。
(8086/8088CPU在开机后执行的第一条指令在内存FFFF:0H开始处)用命令D查看DS:200~22F和F000:200~22F两内存块内容,用命令E将字符“A”分别填入这两个内存块,比较填入前后的结果,了解可读写用R命令查看可知ds=08ad,用-d 08ad:200 22f 查看的这段内存中的内容为用-d f000:200 22f 查看的相应内存中的内容是5、内存RAM和只读内存ROM的区别。
6、PC机主板上的ROM中写有一个生产日期,在内存FFF000~FFFFFH的某个单元中,请找到这个生产日期并试图改变它。
用D命令查看内存FFF00H到FFFFFH中的内容:-D FFFF0: 0000 00FF,即可查看该段内存中的内容:如上图右下角所示所示,有一个日期:06\24\107、向内存从B8100H开始的单元中填写数据,如:-e B810:0000 01 01 02 02 03 03 04 04填写不同的数据观察产生的现象;改变填写的地址。
实验一 DEBUG命令实验
实验一DEBUG命令实验一、实验目的1、熟悉常用debug命令的使用方法和功能,为今后调试程序做准备。
2、熟悉8086内部寄存器的作用和8086的内存组织结构。
二、实验内容:1.进入文件:操作:开始----运行------cm d↙-----debug↙屏幕显示debug提示符“-“在该提示符下可以输入各种debug命令。
在debug状态下默认十六进制。
2.查看内存单元内容命令:D格式:—D地址↙—D地址范围↙(即首地址末地址)例如:—D 1000:2000↙显示128个字节内容—D 2000↙显示128个字节内容2000是偏移地址—D 200 300↙显示100个字节内容200,300是偏移地址3.修改内存单元命令:E格式:—E 地址↙A: 逐个修改内存单元内容,按空格键下移,回车键结束。
—E 地址内容清单↙例如:—E DS:100↙(:1234_2345↙然后查看下)—D DS:100↙B: 用清单中的内容替换指定地址开始的内存单元内容。
例如:—E 200 “abcdef”↙(然后用D命令查看下)4.填充内存单元内容命令:F格式:—F 地址范围内容清单↙—F 起始地址L 字节个数清单↙用清单中的值填写指定范围内的存储单元。
字节个数应为十六进制数。
例如:—F 18E4:0100 0105“123456”↙—F 200 L 10 “A”↙5.显示和修改寄存器内容命令:R格式:①—R↙显示cpu内部所有寄存器内容和标志位状态。
②—R寄存器名↙显示和修改某个指定寄存器内容。
例如:—R AX↙③—RF↙显示和修改标志位状态。
6.内存比较命令:C格式: —C 源数据块首地址L 长度目的数据块首地址↙功能:比较两个数据块的内容。
例如:—C 100 L 20 200↙若两个数据块的内容相同,则不显示任何信息,若不同,则显示出不同字节单元的内容及其地址。
7.十六进制运算命令:H格式:—H 数据1 数据2↙功能:计算两个十六进制数的和,差。
实验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指令的功能和执行过程。
实验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使用进阶及80X86汇编初步
实验一:Debug使用进阶及80X86汇编初步实验目的:1、通过本次实验熟悉debug工具的使用及DOS系统功能调用。
2、掌握debug编程基本语言,并运用之实现求一些毫无规律任意数的平方和实验仪器:PC机实验内容:课堂上曾书写一个求12+22+……+102的示例程序(见后面附录),请改写该程序,实现求一些毫无规律的任意数的平方和。
将这些数定义在内存中,假设这些数据都是字节型的非零无符号数(即1~255),请选用合适的Debug命令定义它们,约定数据值0作为结束标记。
要求:将结果放在数据寄存器中,请编写程序,并设计实验过程(用合适的debug命令),验证程序执行的正确性;若结果要求存放在内存中,请编写程序,并设计实验过程(用合适的debug命令),验证程序执行的正确性;注:编写程序和定义初始数据、查看程序运行结果都在Debug下直接进行。
每次运行程序时请改变这些平方和数据的值以及数据元素个数,以多方验证程序正确性。
实验提示:程序中需要用到寄存器间接寻址方式,示例语句:MOV SI, 0200;MOV BL, [SI]附:课堂上的示例程序实验步骤:1、启动debug程序鼠标单击“开始->程序->附件->命令提示符”,打开DOS(其实虚拟DOS)窗口,出现命令提示符键入debug并回车,出现debug程序的提示符,一个短杆。
2、在界面内输入如下指令:AMOV DX,0000 将寄存器DX赋值为0MOV SI,0200 将SI赋为0200地址MOV BL,[SI] 将SI地址的值赋给BLCMP BL,00 比较BL 与0的值JZ 0116 当BL值为0时跳转至0116即程序终止MOV AL,BL BL赋给ALMUL BL 做乘方运算ADD DX,AX 把AX的值与DX值相加并传到DX中INC SI SI的值加1JMP 0106 跳至0106进行循环INT 20 结束程序3、对地址的内容赋值如下:E 0200 1 2 3 4 5 0说明:0为中断值,当BL得值为0时程序终止,对SI地址中的值可以任意赋,以达到求一些毫无规律的任意数的平方和。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一 Debug常用命令及80x86指令的使用
实验目的:
通过实验掌握下列知识:
1、DEBUG常用命令: A,U,D,E,R,T,G,Q。
2、80x86寄存器: AX/EAX,BX/EBX,CX/ECX,DX/EDX,FLAG,IP/EIP
3、80x86常用指令: MOV/MOVSX/MOVZX,ADD/ADC,SUB/SBB,DAA,XCHG等。
内容及步骤:
一、DEBUG 命令使用:
1、打 DEBUG 进入 DEBUG 控制,显示提示苻 '_ '。
2、用命令 E 18E4:100 'A' 将'A'的ASCII码填入内存。
3、用命令 D 18E4:100 观察内存中的16进制码及屏幕右边的ASCII字符。
4、用命令 E 18E4:100 41 重复上二项实验,观察结果并比较。
5、用命令 E 18E4:100 30 31 32 …… 3F将30H-3FH写入地址为100开始的内存
单元中,再用D命令观察结果,看键入的16进制数是什么字符的ASCII码?
6、用R 命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF
和AF的内容。
7、用R命令将AX,BX内容改写为1050H及23A8H。
二、808x86常用指令练习
1、传送指令
1)用A命令在内存100H处键入下列内容:
MOV AX,1234
MOV BX,5678
XCHG AX,BX
MOV AH,35
MOV AL,48
MOV DX,75AB
XCHG AX,DX
2)用U命令检查键入的程序并记录,特别注意左边的机器码。
3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。
并注意标志位有无变化。
4)用G命令运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。
并注意标志位有无变化。
2、加减法指令:
1)用A命令在内存100H处键入下列内容:
MOV AH,34
MOV AL,22
ADD AL,AH
SUB AL,78
MOV CX,1284
MOV DX,5678
ADD CX,DX
SUB CX,AX
SUB CX,CX
2)用U命令检查键入的程序及对应的机器码。
3)用T命令逐条运行这些指令,检查并记录有关寄存器及ZF情况。
4)用G命令运行这些指令,检查并记录有关寄存器及ZF情况。
思考:这次运行还是打入T,行不行?怎么办?用R命令检查一下IP的内容。
注意T命令与IP 的关系。
3、带进位加减法:
1)用A命令在内存200H处键入下列内容,并用U命令检查:
MOV AH,12
MOV AL,84
MOV CH,56
MOV CL,78
ADD AL,CL
ADC AH,CH
MOV DH,A7
MOV DL,58
SUB DL,7F
SBB DH,34
2)用T命令逐条运行这些指令,检查并记录有寄存器及CF内容。
3)上面这段程序若改用16位操作指令达到同样结果,怎么改?试修改并运行之。
2)要求:用A 命令键入,U命令检查,T命令逐条运行并记录有关寄存器及AF内容。
实验报告要求:
1、16进制数加减法手算结果及实验结果
2、80x86常用指令练习部分的逐条运行记录,思考结果及自编程序运行记录 (列出自编程序)。
附:
DEBUG 使用:
1、打 DEBUG 进入 DEBUG,显示提示苻 '_ '。
2、退出DEBUG命令:Q
3、显示内存命令:D 起始地址结束地址
4、修改内存命令:E 起始地址,连续修改打空格键。
打回车键退出E命令。
5、检查寄存器命令:R
标志位显示 1 0
CF CY NC
ZF ZR NZ
SF NG PL
AF AC NA
OF OV NV
PF PE PO
DF DN UP
IF EI DI
6、修改寄存器命令:R 寄存器名
7、小汇编命令:A 起始地址,不输入指令打回车键退出A命令。
8、反汇编命令:U 起始地址结束地址
9、文件命名命令:N 盘号:文件名
10、读文件命令:L 内存地址
11、写文件命令:W 内存地址
12、运行命令:G=起始地址结束(断点)地址
13、单步命令:T=起始地址运行指令数,进入子程序内部。