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

合集下载

实验一-DEBUG的使用(1)

实验一-DEBUG的使用(1)

实验一DEBUG的使用一、实验目的熟练掌握DEBUG的常用命令以及使用DEBUG调试程序的一般方法。

二、实验内容1.熟悉DEBUG的常用命令通过CMD命令进入DOS方式,运行DEBUG程序,练习DEBUG常用命令(DEBUG 常用命令详细说明见五和六)。

2.使用DEBUG调试程序(1)用CMD命令进入DOS方式。

(2)运行DEBUG程序。

(3)使用A命令将以下笑脸程序逐行输入。

MOV DL,1MOV AH,2INT 21HINT 20H(4)使用T命令逐条指令运行笑脸程序,观察每条指令执行前后相关寄存器的内容变化情况。

(5)使用G命令连续运行笑脸程序,观察程序运行结果。

(6)使用R命令修改寄存器BX和CX的内容为笑脸程序的长度。

(7)使用N命令将笑脸程序命名为。

(8)使用W命令将笑脸程序写到指定磁盘的指定路径目录中。

(9)退出DEBUG,进入笑脸程序所在目录。

(10)运行笑脸程序。

观察程序运行结果。

(11)用DEBUG调试已生成的程序。

三、实验要求认真完成实验每一步骤,详细记录实验过程、现象和结果,及时整理实验报告。

四、实验作业1.用A命令或E命令将笑脸程序中第1条指令中的立即数修改为46,重复步骤(4)~(10),观察程序运行结果,分析为什么?如果要将笑脸程序修改为显示别的字符程序,如何修改程序?2.如果想无限循环显示笑脸,如何修改程序?3.写出实验体会。

五、DEBUG简介DEBUG是一种面向汇编语言的动态调试工具,共有19条命令。

DEBUG提供了可以跟踪、测试程序的环境和条件,使编程者能对. EXE和.COM文件的执行进行动态跟踪调试,能够较快地查找出文件中的逻辑错误和检查程序的运行结果。

此外,也可以在进入DEBUG后直接用小汇编语言(ASM)编写、调试一些小程序。

Microsoft DEBUG命令的具有以下共性:(1)DEBUG提示符为“-”。

(2)任何命令都以一个英文字母开头,后面跟一个或多个参数。

实验一 Debug常用命令及80x86指令的使用

实验一 Debug常用命令及80x86指令的使用

实验一 Debug常用命令及80x86指令的使用实验目的:通过实验掌握下列知识:1、DEBUG常用命令: A,U,D,E,R,T,G,Q。

2、80x86寄存器: AX/EAX,BX/EBX,CX/ECX,DX/EDX,FLAG,IP/EIP3、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,1234MOV BX,5678XCHG AX,BXMOV AH,35MOV AL,48MOV DX,75ABXCHG AX,DX2)用U命令检查键入的程序并记录,特别注意左边的机器码。

3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。

并注意标志位有无变化。

4)用G命令运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。

并注意标志位有无变化。

2、加减法指令:1)用A命令在内存100H处键入下列内容:MOV AH,34MOV AL,22ADD AL,AHSUB AL,78MOV CX,1284MOV DX,5678ADD CX,DXSUB CX,AXSUB CX,CX2)用U命令检查键入的程序及对应的机器码。

实验一 DEBUG调试工具的熟悉

实验一 DEBUG调试工具的熟悉

实验1 DEBUG的使用及程序调试方法一、实验目的通过本实验使学生掌握调试工具DEBUG的使用方法、理解汇编指令、存储单元和寄存器等有关概念,能对简单的汇编语言程序进行调试。

二、实验原理DEBUG是DOS、WINDOWS都提供的实模式(8086方式)程序的调试工具,在DOS 方式下工作。

使用它可以读写、传送、查看CPU各种寄存器中的内容、显示内存单元的内容、设置程序起始执行地址或断点、机器码级跟踪程序的运行。

用DEBUG编程简单、方便和直观,可以直接查看程序的执行情况,便于熟悉和理解指令,掌握基本编程技巧。

DEBUG只使用十六进制表示数据(十六进制后面不加H),且对字母的大小写不敏感。

常用到的DEBUG功能:✧用DEBUG的R命令查看、改变CPU寄存器的内容✧用DEBUG的D命令查看内存中的内容✧用DEBUG的E命令修改内存中的内容✧用DEBUG的U命令将内存中的机器指令翻译成汇编指令✧用DEBUG的T命令执行一条机器指令✧用DEBUG的A命令以汇编指令的格式在内存中写入一条机器指令三、实验内容(1)学习调试工具DEBUG的使用方法,熟悉DEBUG常用命令的功能和用法。

(2)利用DEBUG调试简单的汇编语言程序,体会汇编指令的功能、寄存器的作用、存储单元地址与内容的概念和作用,以及程序的执行。

四、实验方法与步骤1.DEBUG的进入与退出DEBUG是在DOS方式下使用的程序。

在进入DEBUG前,应先以从WINDOWS 2000/XP中进入DOS方式(进入的是虚拟8086模式的DOS)。

方法:选择【开始】菜单中的【运行】命令,打开【运行】对话框,在文本框中输入“cmd”后,单击【确定】按钮或按下键盘上的【Enter】键。

在命令提示符后输入”debug”后按下键盘上的【Enter】键。

2. 显示寄存器命令 R功能:用于查看和改变CPU寄存器的内容格式:R [<寄存器>]说明:当R命令后面不指定寄存器时,显示所有寄存器的内容例1-1 显示所有寄存器的内容-rAX=0200 BX=0000 CX=0000 DX=0041 SP=FFEE BP=0000 SI=0000 DI=0000 DS=138A ES=138A SS=138A CS=138A IP=0100 NV UP EI PL NZ NA PO NC 138A:0100 B241 MOV DL,41例1-2 修改寄存器的内容-r axAX 0200100-rAX=0100 BX=0000 CX=0000 DX=0041 SP=FFEE BP=0000 SI=0000 DI=0000DS=138A ES=138A SS=138A CS=138A IP=0100 NV UP EI PL NZ NA PO NC 138A:0100 B241 MOV DL,41例1-3 用RF命令可以显示和修改标志寄存器FR中的标志位,无论修改哪一位标志位,只需要键入该标志位的表示符号(如表1.1所示),并且标志位值的键入顺序可任意。

实验一DEBUG命令实验

实验一DEBUG命令实验

实验⼀DEBUG命令实验实验⼀ DEBUG命令实验⼀.实验⽬的:掌握DEBUG 的基本命令及其功能⼆.实验内容:DEBUG是专门为汇编语⾔设计的⼀种调试⼯具,它通过步进,设置断点等⽅式为汇编语⾔程序员提供了⾮常有效的调试⼿段。

1、DEBUG程序的启动DEBUG的命令格式:[drive:][path] DEBUG [d:][p][filename][.ext][param...]其中:drive: 是指定DEBUG⽂件的磁盘驱动器标识符,DEBUG是外部DOS命令,所以必须把它从磁盘读⼊内存。

若未指定,DOS 将使⽤当前默认磁盘驱动器。

path: 是DOS查找DEBUG⽂件的⼀个⼦⽬录串表⽰的路径。

若未指定,DOS将使⽤当前⼯作⽬录。

d: 是DEBUG将要调试的⽂件所在的磁盘驱动器。

p: 是查找DEBUG将要调试的⽂件所需的⼦⽬录路径,若未指定,DOS使⽤当前⽬录。

filename[.ext] 是DEBUG将要调试的⽂件名。

param 是将被调试的程序(或⽂件)的命令⾏参数。

例如:在DOS提⽰符下,可键⼊命令:C>debugDEBUG所完成的初始化动作,假定⽂件名没有,启动DEBUG:段寄存器CS、DS、ES和SS置为DEBUG程序后的第⼀个段。

指令指针寄存器IP置为100H(程序段前缀PSP后的第⼀个语句)。

堆栈指针SP置为段末或/doc/1f7311358.html暂驻部分的结束地址(其中较⼩的那个地址)。

其余通⽤寄存器均置为0,标志寄存器置为下述状态。

NV UP EI PL NE NA PO NC如果在DOS提⽰符下,可键⼊命令,包含⽂件名:C>debug name.exe段寄存器DS和ES指向PSP。

寄存器BX和CX含有程序长度。

注意:字母不分⼤⼩写;只使⽤16进制数,不加H;分割符只在两个数值之间是必须的,命令和参数之间可有可⽆;键⼊回车键执⾏命令,Ctrl+Break或Ctrl+C中⽌命令的执⾏;如命令不符合DEBUG的规则,则提⽰“error”并使⽤“^”指⽰错误位置。

1DEBUG命令的功能及使用

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基本命令的使用

汇编语言程序设计实验DEBUG基本命令的使用
JMP RESTORE
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.1 实验目的(1)学习如何在Windows的命令模式下启动DEBUG。

(2)掌握DEBUG的常用基本命令。

(3)学习如何使用DEBUG查看CPU和内存以及进行跟踪调试。

1.2 实验设备及软件环境装有DOS系统及MASM6.X的微机一台。

1.3 预备知识1 什么是DEBUG?Debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。

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

2 常用的Debug命令及其含义3 启动DEBUG(1)打开Windows命令窗口选择“开始”→“运行”→输入“cmd”命令(2)启动DEBUG在命令窗口中启动DEBUG,将显示连接符“-”,这时可输入各种DEBUG命令。

(3)关于使用命令的几点说明:●在提示符“-”下才能输入命令,在按“回车”键后,该命令才开始执行;●命令是单个字母,命令和参数的大小写可混合输入●可用F1、F2、F3、Ins、De l、→等编辑键来编辑本行命令●当命令出现语法错误时,将在出错位置显示“^Error”●在DEBUG中使用的数都是以十六进制来表示的1.4 实验内容1 R命令作用:查看、改变CPU寄存器的内容(1)显示所有寄存器之中的内容:输入R我们重点关注AX、BX、CX、DX、CS及IP寄存器的内容,其他寄存器SP、BP、SI、DI、ES、SS及标志寄存器先不予理会。

此外,并列出了CS:IP所指向的内存单元处所存放的机器码,并将它翻译为汇编指令。

(2)改变寄存器中的内容:输入R AX在提示符“:”后输入1111,即可将AX的值设置为1111。

在输入R命令,查看修改后的寄存器值。

练习:(1)用R命令修改IP的值,并查看此时CS:IP的指向,存放的机器码以及对用的汇编指令;(2)用R命令修改CS的值,并查看此时CS:IP的指向,存放的机器码以及对用的汇编指令;2 D命令作用:查看指定范围内的内存中的内容(1)直接输入D命令DEBUG将输出3部分内容,查看执行结果。

实验一熟悉使用调试工具软件DEBUG

实验一熟悉使用调试工具软件DEBUG

实验一熟悉使用调试工具软件DEBUG引言调试是软件开发过程中不可或缺的一部分。

通过调试工具软件DEBUG,我们可以查找和修复程序中的错误、检查变量的值、跟踪代码的执行路径等等。

本实验旨在帮助学生熟悉DEBUG的基本功能和使用方法。

一、实验目标1.熟悉DEBUG软件的界面和基本功能;2.学会使用DEBUG软件进行程序的调试和跟踪;3.掌握DEBUG软件中的断点设置和单步执行等功能。

二、实验环境1. 操作系统:Windows 10;2.调试工具软件:DEBUG。

三、实验步骤[DEBUG软件界面截图](1)Registers窗口显示寄存器的内容,包括通用寄存器、段寄存器等;(2)Disassembly窗口显示汇编指令的内容;(3)Dump窗口显示内存中的内容;(1)r:显示寄存器的内容;(2)u:显示当前汇编指令的地址和指令;(3)d:显示内存中的内容。

通过执行这些指令,我们可以查看和了解程序的运行状态和内存存储的内容。

(1)g:运行程序;(2)t:执行一条指令,并显示执行结果;(3)p:执行一行汇编代码,并显示执行结果。

通过执行这些指令,我们可以跟踪程序的执行路径和变量的值。

6. 在Disassembly窗口中,双击一条汇编指令可以设置断点。

设置断点后,程序执行到断点处会自动停止。

在调试过程中,我们可以查看断点前后的变量值,检查程序是否按照预期执行。

(1)bp:查看断点列表;(2)bl:清除断点列表中的断点;(3)bd:删除一个断点。

通过执行这些指令,我们可以管理和控制断点,实现更精细的调试过程。

8. 在DEBUG软件界面中,点击工具栏上的“跟踪”按钮,可以选中“Trace over”、“Trace into”和“Animate”等选项。

这些选项分别表示在执行过程中是否显示详细过程、是否跳过函数调用、是否动画演示执行过程等。

通过选择不同的选项,我们可以根据需要自定义调试过程。

四、实验总结通过本次实验,我们了解了DEBUG软件的基本功能和使用方法。

实验一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的基本命令使用

实验一 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指令的功能和执行过程。

实验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码字符(不可显示的字符用"."代替)。

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

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

实验一DEBUG主要命令简介

实验一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命令的使用

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-的基本命令及其功能

实验一--掌握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学时。

二、实验目的掌握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由[值]确定。

实验一 DEBUG命令实验

实验一  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↙功能:计算两个十六进制数的和,差。

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

实验一掌握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) 进入Debug
Debug是在DOS方式下使用的程序。

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

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

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

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

2. debug.exe放在D:根目录,然后安装,安装完成以后,点击快捷方式进入Dos界面:
3.输入mount c d:\ 接着输入c:
Dosbox
5.接着,你就可以使用Debug:
debug
6.备注:debug.exe放在D:根目录下,你也可以把debug.exe放在任何一个文件夹下面。

其中这个文件夹就是mount c d:所对应的。

一.(1) 使用Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU 中相关寄存器中内容的变化。

(逐条执行,每条指令执行结果截图)
机器码汇编指令
b8 20 4e mov ax,4E20H
05 16 14 add ax,1416H
bb 00 20 mov bx,2000H
01 d8 add ax,bx
89 c3 mov bx,ax
01 d8 add ax,bx
b8 1a 00 mov ax,001AH
bb 26 00 mov bx,0026H
00 d8 add al,bl
00 dc add ah,bl
00 c7 add bh,al
b4 00 mov ah,0
00 d8 add al,bl
04 9c add al,9CH
提示:可用E命令和A命令以两种方式将指令写入内存。

注意用T命令执行时,CS:IP 的指向。

(2) 将下面3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。

mov ax,1
add ax,ax
jmp 2000:0003
(3) 查看内存中的内容
PC机主板上的ROM中写有一个生产日期,在内存FFF00H~FFFFFH的某几个单元中,请找到这个生产日期并试图改变它。

(内存ffff:0005~ffff:000C(共8个字节单元中)处)
无法改变,修改之后内容并没有变。

【下篇】用机器指令和汇编指令编程
一.实验内容
1. 预备知识:Debug命令的补充
(1) 在D命令中使用段寄存器
格式:“d 段寄存器:偏移地址”,以段寄存器中的数据为段地址SA,列出从SA:偏移地址开始的内存区间中的数据。

以下是4个例子:
①-r ds
:1000
-d ds:0 ;查看从1000:0开始的内存区间中的内容
②-r ds
:1000
-d ds:10 18 ;查看1000:10~1000:18中的内容
③-d cs:0 ;查看当前代码段中的指令代码
④-d ss:0 ;查看当前栈段中的内容
(2) 在E、A、U命令中使用段寄存器
在E、A、U这些可以带有内存单元地址的命令中,也可以同D命令一样,用段寄存器表示内存单元的段地址。

以下是3个例子:
①-r ds
:1000
-e ds:0 11 22 33 44 55 66 ;在从1000:0开始的内存区间中写入数据
②-u cs:0 ;以汇编指令的形式,显示当前代码段中的代码,0代码的偏移地址
③-r ds
:1000
-a ds:0 ;以汇编指令的形式,向从1000:0开始的内存单元中写入指令
(3) 下一条指令执行了吗?
在Debug中,用A命令写一段程序:
mov ax,2000
mov ss,ax
mov sp,10 ;安排2000:0000~2000:000F 为栈空间,初始化栈顶。

mov ax,3123
push ax
mov ax,3366
push ax ;在栈中压入两个数据。

在用T命令单步执行mov ax,2000后,显示出当前CPU各个寄存器的状态和下一步要执行的指令:mov ss,ax;在用T命令单步执行mov ss,ax后,下一条指令应该是mov sp,10,却变成了mov ax,3123?
注意,在用T命令单步执行mov ss,ax 前,ax=0000,ss=0b39,sp=ffee,而执行后ss=2000,sp=0010。

ss变为2000是正常的,这正是mov ss,ax的执行结果。

而能够将sp设为0010的只有指令mov sp,10,看来,mov sp,10一定是得到了执行。

在用T命令执行mov ss,ax的时候,它的下一条指令mov sp,10也紧接着执行了。

整理一下我们分析的结果:在用T命令执行mov ss,ax的时候,它的下一条指令mov sp,10也紧接着执行了。

一般情况下,用T命令执行一条指令后,会停止继续执行,显示出当前CPU各个寄存器的状态和下一步要执行的指令,但T命令执行mov ss,ax的时候,没有做到这一点。

不单是mov ss,ax,对于如:mov ss,bx,mov ss,[0],pop ss等指令都会发生上面的情况,
这些指令有哪些共性呢?它们都是修改栈段寄存器SS的指令。

结论:Debug的T命令在执行修改寄存器SS的指令时,下一条指令也紧接着被执行。

二.实验任务
(1) 使用Debug,将上面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。

(逐条执行,每条指令执行结果截图)
mov ax,ffff
mov ds,ax
mov ax,2200
mov ss,ax
mov sp,0100
mov ax,[0] ;ax= C0EA
add ax,[2] ;ax= C0FC
mov bx,[4] ;bx= 30F0
add bx,[6] ;bx= 6021
push ax ;sp= 00FE ;修改的内存单元的地址是 2200:00FE
内容为 C0FC
push bx ;sp= 00FC ;修改的内存单元的地址是 2200:00FC
内容为 6021
pop ax ;sp= 00FE ;ax= 6021
pop bx ;sp= 0010 ;bx= C0FC
push [4] ;sp= 00FE ;修改的内存单元的地址是 2200:00FE 内容为 30F0
push [6] ;sp= 00FC ;修改的内存单元的地址是 2200:00FC 内容为 2F31
(2) 使用Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器中内容的变化。

(逐条执行,每条指令执行结果截图)如果有问题请说明原因汇编指令
mov ax,1000H
mov ds,ax
mov ds,[0]
add ds,ax
Ds为段寄存器,无法用在算术运算指令中。

(3) 仔细观察下图中的实验过程,然后分析:为什么2000:0~2000:f中的内容会发生改变?
发生改变的数据分别是SS、IP、CS 等的值,其数据发生了改变,是对定义栈段时部分运行环境变量进行暂存。

[实验一补充:Masm5.0解决方案]
1从网上下载Dosbox和masm5。

2先把masm5目录放在D:中(也可以自己选择路径),然后安装Dosbox,安装完成以后,点击快捷方式DOSBox 0.74进入软件虚拟的Dos界面,如下所示
3. 把需要编译的asm程序放在masm5目录中,输入mount c d:\masm5 (虚拟加载你
的d:\masm5).接着输入c:
4. masm hw.asm
4. link hw.obj
6. 当你使用dir命令的时候,可以看到我们已经生成了HW.exe 可执行文件
8. 输入hw。

相关文档
最新文档