汇编语言实验指导书

合集下载

汇编语言实验指导书

汇编语言实验指导书

目录第一部分汇编语言程序的上机过程 (1)一、建立汇编语言的工作环境 (1)二、在计算机上运行汇编语言的步骤 (1)三、建立ASM文件 (1)四、用MASM程序产生OBJ文件 (3)五、用LINK程序产生EXE文件 (3)六、程序的执行 (3)七、举例 (3)第二部分汇编语言上机调试 (4)一、为何需要调试? (4)二、如何进行调试? (5)第三部分汇编语言上机内容 (8)实验一输出字符串 (8)实验二算术指令综合编程 (8)实验三查找子字符串 (9)实验四字符串正向、反向输出 (9)实验五信息检索 (9)实验六格式化输出 (9)实验七数组合并 (10)实验八字符统计 (10)实验九数制转换 (10)第四部分汇编语言实验参考代码 (11)实验一输出字符串 (11)实验二算术指令综合编程 (11)实验三查找子字符串 (12)实验四字符串正向、反向输出 (13)实验五信息检索 (14)实验六格式化输出 (17)实验七数组合并 (18)实验八字符统计 (20)实验九数制转换 (22)第一部分汇编语言程序的上机过程一、建立汇编语言的工作环境为运行汇编语言程序至少要在磁盘上建立以下文件:1、编辑程序,如EDIT.EXE2、汇编程序,如MASM.EXE3、连接程序,如LINK.EXE4、调试程序,如必要时,还可建立如CREF.EXE,EXE2BIN.EXE等文件。

二、在计算机上运行汇编语言的步骤1、用编辑程序建立ASM源文件,以ASM作为扩展名2、用汇编程序把ASM文件转换成OBJ文件3、用连接程序把OBJ文件转换成可执行文件4、在DOS提示符下直接键入可执行文件名即可执行该程序三、建立ASM文件建立ASM文件的编辑程序可以是DOS自身带的编辑程序EDIT.EXE,在DOS提示符下键入EDIT命令即可出现EDIT界面,其操作如下:D:\>edit源程序输入完后,以ASM作为扩展名进行保存,假设所保存的文件名为:ex.asm。

汇编语言实验一 指导书

汇编语言实验一 指导书

实验一:汇编上机指导及例示一、实验目的●了解汇编语言程序的运行环境和所需的系统程序;二、实验要求●掌握如何编辑、汇编、连接和运行汇编程序;●掌握常用的DEBUG命令。

三、实验原理题:在屏幕上显示一条'THIS IS A SAMPLE PROGRAM OF KEYBOARD AND DISPLAY'提示信息,如从键盘上输入ESC键,则结束程序,如输入的不是大写字母,则在显示器上显示出来,如输入的是大写字母,则转换为小写字母输出。

四、实验设备计算机五、实验步骤1、用用文字编辑工具(常用EDIT或记事本)将源程序输入,其扩展名为.ASM。

2、用MASM对源文件进行汇编,产生.OBJ文件和.LST文件。

若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。

3、用TYPE命令显示产生的.LST文件。

4、用LINK将.OBJ文件连接成可执行的.EXE文件。

5、在DOS状态下运行LINK产生的.EXE文件。

用于调试程序时的输入格式:DEBUG FILENAME.??? 回车其中FILENAME是主文件名,???是扩展文件名,例如我们在此前已编译好了一个文件,它的名字为:djx.exe 要对它进行调试时就在DOS提示符下打:DEBUG djx.exe 回车,便可见到 '-' 提示符,如无任何提示说明正确,可进行调试按ESC键可返回DOS。

若未出现预期结果,用DEBUG检查程序。

附: 基本debug操作1、显示内存单元的内容:-d [地址] 或 [范围]2、修改内存单元的内容:-e 地址内容表或-e 地址3、显示CPU内部寄存器和标志位状态:-r4、显示和修改某个寄存器的内容:-r 寄存器名5、汇编命令:-a 地址6、逐条指令追踪:-t [=地址] (无地址则执行IP所指示的指令)7、退出debug:-g8、多条指令追踪:-t [=地址] [n]注:该指令从指定地址起执行n条命令后停下来9、运行命令:-g [=地址1] [地址2 [地址3...]]地址1规定了运行起始地址,后面的地址均为若干断点地址10、反汇编命令:(1)-u [地址]该命令从指定地址开始,反汇编32个字节,若省略地址,则从上一个u命令的最后一条指令的下一单元开始显示32个字节(2)-u 范围该命令对指定范围的内存单元进行反汇编如:-u 04ba:0100 0108等价于:-u 04ba:0100 L9下面给出一些常见出错信息,以便查对:1、Register already defined 汇编内部出现逻辑错误2、Unknown symbol type 在符号语句的类型中,有些不能识别的东西3、Symbol is multi-defined 重复定义一个符号4、Symbol not defined 符号没有定义5、Syntax error 语句的语法与任何可识别的语法不匹配6、Symbol is reserved word 企图非法使用一个汇编程序的保留字(例:定义add为一变量)7、Not proper align/combine type SEGMENT参数不正确8、One operand must be const 这是加法指令的非法使用9、Operands must be same or 1 abs 这是减法指令的非法使用10、Already have base register 试图重复基地址11、Illegal size for item 引用的项的长度是非法的,(如:双字移位)12、Illegal register value 指定的寄存器值不能放入“reg”字段13、Must be AX or AL 某些指令只能用AX或AL14、Improper use of segment reg 段寄存器使用不合法(如:mov ds,0)15、Division by 0 or overflow 给出一个用0作除数的表达式16、Value is out of range 数值大于需要使用的17、CS register illeal usage 试图非法使用CS寄存器18、DUP is too large for linker DUP嵌套太长,以至于从连接程序不能得到所要的记录。

《汇编 语言》实验 指导书

《汇编 语言》实验  指导书

孝感学院计算机科学系本科《汇编语言程序设计》实验指导书目录实验一:汇编环境与DEBUG调试 (2)实验二:8086汇编语言分支程序设计 (8)实验三:8086汇编语言循环程序设计 (10)实验四:8086汇编语言子程序程序设计 (13)实验五:8086汇编语言中断与磁盘程序设计 (17)相关说明:《汇编语言程序设计》实验的主要目的是掌握汇编程序调试的方法与一般的程序设计能力,为今后的硬件应用打下基础。

因此本实验指导书重在强调实验调试的环节,有关程序设计的具体方法及相关算法请参见教材。

此文件中用黑体字加粗的内容一般为重要信息或实验的步骤与要求,未使用黑体加粗或有下划线的内容是提示信息或问题的答案。

实验一:汇编环境与DEBUG调试目的与要求熟悉汇编环境与汇编源程序的调试,重点掌握汇编的过程与常用DEBUG命令的用法实验内容一、熟悉汇编的编程环境1.汇编语言源程序的建立:可以使用任何文本编辑器建立汇编源程序文件,如:TC、EDIT等。

但建立的文件扩展名建议为.asm,下面的源程序功能用于在屏幕上输出字符串“hello,world!”,我们通过此源程序的运行过程了解汇编的编程环境。

DATA SEGMENTBUF DB“hello,world!$”DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA DX,BUFMOV AX,9INT21HMOV AH,4CHINT21HCODE ENDSEND START在DOS提示符下键入以下编辑器命令,如:C:\MASM>EDIT或TC然后在编辑器的窗口中通过键盘输入以上源程序。

并保存为文件abc.asm.后返回到DOS提示符下。

2.将源程序文件汇编成目标程序文件:汇编功能可以使用Microsoft的MASM进行,微软的汇编程序有多个版本,但使用方法大致相同,本实验将使用MASM 5.0进行汇编。

汇编语言实验指导书

汇编语言实验指导书

MOV AX,13C3
(5) 显示内存单元内容的命令 D,格式为:
-D[地址]或-D[范围]
-d ds:0
13C3:0000 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa
13C3:0010 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa
第 1页
该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存
放在从指定地址开始的存储器中。
例如:
-a
136B:0100 mov ax,100
136B:0103 mov bx,200
136B:0106 mov cx,300
136B:0109 mov dx,400
136B:010C
-
(2) 反汇编命令 U,有两种格式:
第 I页
实验一 DEBUG 命令实验
一.实验目的: 掌握 DEBUG 的基本命令及其功能
二.实验内容: DEBUG 是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语
言程序员提供了非常有效的调试手段。 1、DEBUG 程序的启动 DEBUG 的命令格式: [drive:][path] DEBUG [d:][p][filename][.ext][param...] 其中: drive: 是指定 DEBUG 文件的磁盘驱动器标识符,DEBUG 是外部 DOS 命令,所以必须把
其余通用寄存器均置为 0,标志寄存器置为下述状态。
NV
UP
EI
PL
NE
NA
PO
NC

《汇编语言》实验指导书.

《汇编语言》实验指导书.

《汇编语言》实验指导书目录实验一Debug命令的使用 (3)实验二基本汇编指令的使用 (7)实验三汇编语言程序的调试与运行 (10)实验四系统功能调用程序的调试与运行 (15)实验五分支程序设计 (17)实验六循环程序设计 (20)实验七子程序设计 (23)实验八高级汇编语言程序设计 (25)实验九I/O程序设计 (30)实验十中断程序设计 (33)实验十一综合程序设计 (38)实验一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 健。

《汇编语言程序设计》实验指导书

《汇编语言程序设计》实验指导书

实验一简单程序编制和上机过程一.实验目的1.掌握计算机常用代码的软件转换技术。

2.熟悉DEBUG软件的使用。

3.掌握简单程序的编程方法。

二.实验内容代码转换是计算机和I/O设备进行信息交换的重要技术之一。

各种I/O设备所提供和接收的数据编码不尽相同。

为了处理这些信息,计算机必须将各种不同编码形式的信息转换成别种适当的数据形式。

例如,键盘输入的数据均为ASC Ⅱ码形式存储在内存中,通常要求将其转换成相应的数据形式。

一般实现代码转换有两种方法:1.软件法利用CPU的算术逻辑运算功能,通过运算或查表实现各种数据代码间的转换。

该方法经济但速度慢。

2.硬件法利用专用代码转换集成电路进行转换。

如74LS74可把BCD码转换为七段代码。

这种方法需要硬件费用,但速度快。

本实验要求掌握软件编码转换技术。

计算机常用的代码有二进制、八进制、十六进制、BCD码、ASCⅡ码、七段码等,它们之间的相互关系如下表所示。

本次试验的内容是ASCⅡ码转换为未组合BCD码设从键盘输入十进制数的ASCⅡ码已存放在起始地址CS :150H的单元中,把它转换成未组合BCD码后,再分别存入起始地址为CS:15AH的单元中。

若输入的不是十进制数的ASCⅡ码,则相应存放结果单元的内容为“FF”。

提示:1.组合BCD码是一位十进制数字占一个字节,高半字节为0,低半字节为该十进制数字的BCD码。

ASCⅡ码转换为未组合BCD码只需减30H。

2.程序框图如下图所示。

3.程序执行前,需要在CS:150H内存缓冲区写入待转换的ASCⅡ码。

方法如下:方法一:用A命令-ACS:150 DB 35,39,30,41,32CS:155 ∧C方法二:用E 命令-ECS:150,35,39,30,41,32方法三:用F命令-FCS:150 L5 35,39,30,41,321.执行程序后检查执行结果可用D命令:-DCS:15ACS:15A 05,09,00,FF,02ASCⅡ码转换为未组合BCD码的程序流程图参考程序如下:ORG 100HMOV CX,0005HMOV DI,150HBB:MOV BL,0FFHMOV A,[DI]CMP AL,3AHJNB DONESUB AL,30HJB DONEMOV BL,ALDONE:MOV AL,BLMOV [DI+0AH],ALINC DILOOP BBINT 20HORG 150HDB 35H,39H,30H,41H,32H实验二顺序结构的程序设计一.实验目的1.掌握计算机常用代码的软件转换技术。

汇编语言程序设计实验指导书

实验一宏汇编MASM5.0运行环境一、实验目的1、熟悉的MASM5.0宏汇编程序运行环境2、掌握用MASM5.0运行汇编语言程序的步骤3、学习及掌握的debug程序的各种命令并调试汇编语言程序。

二、实验仪器计算机、masm汇编运行环境三、实验原理1、建立汇编语言的工作环境(1)编辑程序:EDIT .COM(2)汇编程序:MASM .EXE(3)连接过程:LINK.EXE(4)调试程序:DEBUG .EXE2、运行汇编语言程序的步骤(汇编语言程序的上机过程)在汇编实验步骤的word文档中(请下载参考)。

(1)用汇编程序建立源文件(*.asm)汇编程序:记事本,写字板或EDIT.EXE 。

(文本文件编辑器)扩展名为:.asm(2)用汇编程序(MASM、EXE)产生OBJ文件。

(3)用连接程序(LINK 、EXE)生成EXE文件。

(4)程序的执行直接输入文件名LINKEDIT记事本写字板MASM3、用DEBUG 运行、调试汇编语言程序(1)进入DEBUGC:\ DEBUG (前提DEBUG .COM 程序在C 盘)屏幕显示:- “-”这个符号是进入DEBUG的提示符,在该提示符下可键入任意DEBUG 命令,现在用A命令送程序。

(2)送程序并汇编-A 100169C:0100 MOV DL ,33169C:0102 MOV AH ,2169C:0104 MOV INT 21169C:0106 MOV INT 20169C:0101此程序已送完,并汇编成机器指令(3)现在用G命令一运送程序-G3看一下机器指令是什么样的用反汇编命令U(4)反汇编-U 100 :108段地址偏移地址指令169C :0100 B233 MOV DL ,33169C :0102 B402 MOV AH ,02169C :0104 CD21 INT 21169C :0106 CD20 INT 20169C :D108(5)用Q命令退出DEBUG 返回DOS-QC:\4、DEBUG 命令(1)汇编命令A格式1)A < 段寄存器名>:<位移> ;(段寄器)为段地址2)A <段地址> :<位移> ;(c s) 为段地址3)A <位移> ;4)A ;以CS:100作地址功能:键入该命令后显示的地址和位移并等待用户从键盘逐条键入汇编命令。

汇编语言程序设计实验指导书

重庆师范大学涉外商贸学院计算机各专业实验用书汇编语言程序设计实验指导书(第一版)张开成编前言为适应教学内容由简到繁、由易到难、由浅入深的教学特点,我们编写了这本简易实验指导书,用以指导实验教学。

该指导书分两部分,第一部分指出实验的实验目的、实验内容、实验准备、实验要求、共提出十五个实验,需三十个学时完成。

第二部分为十五个实验的全部程序,仅供学生参考。

该实验指导书由数计学院计算机教研室张开成同志编写。

2010年2月第一部分提出各实验的实验内容、实验目的、实验要求和学时分配实验一:汇编语言基本操作实验(2学时)一、实验目的:明确QE、MASM、LINK三个系统软件的作用。

掌握汇编语言程序的编辑、汇编、连接过程。

二、实验内容:1、编写一个程序:用十进制输出一个按键的AS CⅡ值。

2、从键盘上读入两个一位数(必须保证按下数字键),输出它们的积。

三、实验准备:1、预习QE、MASM、LINK 三个软件的使用方法。

2、按实验要求,编写好实验源程序。

四、实验步骤:1、用QE编辑扩展名为.ASM的源文件。

2、汇编、连接生成扩展名为.EXE的可执行文件。

3、运行程序。

五、实验报告要求:1、总结用QE编辑源程序的方法。

2、说明源程序的连接、汇编过程。

3、分析运行结果。

4、按要求写出完整的实验报告(必须列出程序清单)。

实验二:分支程序设计实验(2学时)一、实验目的:1、学会简单分支和多分支程序的设计方法。

2、掌握程序的调试方法。

二、实验内容:1、从键盘读入两个一位数,输出它们的积。

若为非数字键,则显示字符“E”,退出程序。

2、从键盘接收一个按键,如为小写字母,则显示“L”,是大写字母,则显示“U”,如是数字,则显示“N”,都不是则显示“*”。

三、实验准备:1、预习分支程序设计方法。

2、按实验内容要求,编写好实验源程序。

四、实验步骤:1、用QE编辑扩展名为.ASM的源文件。

2、汇编、连接生成可执行文件.EXE。

3、运行程序。

汇编语言指导书


实验内容及步骤 一、利用查表方法把DX的内容(十六进制数)转换成ASCII码 1、用A命令键入下列程序: MOV BX,1000 MOV DI,2000 MOV CX,4 LOP: PUSH CX MOV CL,4 ROL DX,CL POP CX MOV AL,DL AND AL,0F XLAT CLD STOSB LOOP LOP INT 20 2、用A命令在1000H处键入下列ASCII码并用D命令检查之: DB …0123456789ABCDEF? 用D命令检查时注意左边的ASCII码值和右边的字符。 4、用T命令逐条运行这程序到LOOP指令处,观察并记录每次运行结果,特别是SP和堆栈内容(用D命令检查)。 5、用G命令将此程序运行到结束,并用D命令检查2000H处所转换的结果。可注意屏幕右边的ASCII字符与DX是否一致。 二、数据串搬家程序: 1、用A命令键入下列程序: MOV SI,1000 MOV DI,1500 MOV CX,0F LOP: MOV AL,[SI] MOV [DI],AL INC SI INC DI LOOP LOP INT 20 2、用A命令DB伪指令在1000H键入下列字符串: ‘IBM_PC COMPUTER'
在操作时要注意提示信息,并按提示操作。 二、DEBUG 命令使用 1、键入 DEBUG 进入 DEBUG 控制状态,显示提示符 '- '。 2、用命令 F100 10F 'A' 将'A'的ASCII码填入内存。 3、用命令 D100 10F 观察内存中的十六进制码及屏幕右边的ASCII字符。 4、用命令 F110 11F 41 重复上二项实验,观察结果并比较。 5、用命令 E100 30 31 32 …… 3F将30H-3FH写入地址为100开始的内存单元中,再用D命令观察结果,看键入的十六进制数是 什么字符的ASCII码? 6、用H命令检查下列各组十六进制数加减结果并和你的手算结果比较: (1)34H,22H (2)56H,78H (3)A5,79H (4)1284H,5678H (5)A758H,347FH 7、用R命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内容。 8、用R命令将AX,BX内容改写为1050H及23A8H。 三、熟悉汇编语言的编程过程 1、首先在运行菜单中运行CMD命令,进入DOS状态。 2、切入D:盘,进入MASM。 3、用EDIT <文件名.asm> 命令编辑下列源程序。 data segment message db "Hello World!",'$' data ends code segment assume cs:code,ds:data begin:mov ax,data mov ds,ax mov dx,offset message mov ah,9 int 21h mov ah,4ch int 21h code ends end begin 4、用MASM <文件名> 命令编译源程序。(如果出错,则需要重新编 辑,修改错误)。 5、用LINK <文件名>命令连接目标文件,生成可执行文件。(可以用 DIR命令查一下—)。 6、运行该可执行文件,检查是否正常输出字符串。 实验报告要求

汇编语言实验指导书

第一章DEBUG系统的使用一、DEBUG的作用DEBUG是DOS提供的用于程序调试的系统,作为DOS的外部命令随DOS的其它外部命令一起由DOS的提供产商向用户提供。

因此用户在使用DEBUG系统时一定要注意当前用户所使用的DOS 的外部命令中是否提供该命令(若DOS命令不全,有可能没有此命令)。

二、DEBUG的使用1、DEBUG的调用由于DEBUG是DOS的外部命令,因此必须在DOS的提示符状态下进行调用。

调用的方法如下:C:\>DEBUG [FILENAME]此处FILENAME应是文件的全名,即应包括文件的主名和扩展名(若文件有扩展名),如文件不在当前目录,则还因包括文件所存放的目录名。

但文件名也可以省略,此时表示(暂时)不调用任何文件。

(DOS 的提示符不一定是“ C:\> ”,可以是其它的形式,请使用者根据具体情况自行确定。

)当进入了DEBUG 系统后,系统的状态是在屏幕的左边显示一短杠:-此时用户可以在此进行相应的调试工作。

用户也可以在调入DEBUG系统的同时调入要调试的程序,调用的方法如下:C:\>DEBUG 若在当前目录中能找到相应的文件,则系统在屏幕的左边显示一短杠:-若在当前目录中能找不到相应的文件,则系统在屏幕上显示:file not find并在屏幕的左边显示一短杠:-注意:DEBUG调试程序只能调用当前目录的文件。

2、DEBUG的调试命令(1)汇编命令A(Assemble)格式:A[address]说明:address 是要进行汇编程序(编码)输入的首地址,可省略。

如:-a16D8:0100 mov ah,216D8:0102 mov al,116D8:0104 mov bx,020016D8:0107 mov cx,000116D8:010A mov dx,000116D8:010D int 1316D8:010F int 316D8:0110-或:-a20016D8:0200 mov ah,216D8:0202 mov al,116D8:0204 mov bx,020016D8:0207 mov cx,000116D8:020A mov dx,000116D8:020D int 1316D8:020F int 316D8:0210-如在操作过程中有错误,系统会及时地通知操作者并要求操作者重新输入。

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

汇编语言实验指导书王勇刘辉上海电力学院计算机系二00六年四月目录实验一 DEBUG命令实验 (1)实验二字符串传递实验 (7)实验三循环程序实验 (15)实验四多重循环实验 (21)实验五分支程序实验 (28)实验六子程序参数传递实验 (34)实验七子程序嵌套实验 (37)实验八中断处理实验 (42)实验九BIOS中断实验 (46)实验十建立文件实验 (50)实验十一读文件实验 (55)实验十二综合性实验 (60)实验一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置为段末或暂驻部分的结束地址(其中较小的那个地址)。

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

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

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

2、DEBUG的主要命令(1)汇编命令A,格式为:-A[地址]该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。

例如:-a136B:0100 mov ax,100136B:0103 mov bx,200136B:0106 mov cx,300136B:0109 mov dx,400136B:010C-(2)反汇编命令U,有两种格式:1)-U[地址]该命令从指定地址开始,反汇编32个字节,若地址省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。

例如:-u13C9:0000 1E PUSH DS13C9:0001 2BC0 SUB AX,AX13C9:0003 50 PUSH AX13C9:0004 B8C313 MOV AX,13C313C9:0007 8ED8 MOV DS,AX13C9:0009 B8C613 MOV AX,13C613C9:000C 8EC0 MOV ES,AX13C9:000E 8D360000 LEA SI,[0000]13C9:0012 8D3E0000 LEA DI,[0000]13C9:0016 FC CLD13C9:0017 B92800 MOV CX,002813C9:001A F3 REPZ13C9:001B A4 MOVSB13C9:001C CB RETF13C9:001D 0000 ADD [BX+SI],AL13C9:001F 0000 ADD [BX+SI],AL2)-U范围该命令对指定范围的内存单元进行反汇编,例如:-u 13c9:000e 001b13C9:000E 8D360000 LEA SI,[0000]13C9:0012 8D3E0000 LEA DI,[0000]13C9:0016 FC CLD13C9:0017 B92800 MOV CX,002813C9:001A F3 REPZ13C9:001B A4 MOVSB-(3)运行命令G,格式为:-G [=地址1][地址2[地址3。

]]其中地址1规定了运行起始地址,后面的若干地址均为断点地址。

例如:-g1cAX=13C6 BX=0000 CX=0000 DX=0000 SP=FFFC BP=0000 SI=0028 DI=0028DS=13C3 ES=13C6 SS=13C3 CS=13C9 IP=001C NV UP EI PL ZR NA PE NC13C9:001C CB RETF-(4)追踪命令T,有两种格式:1)逐条指令追踪:-T[=地址]该命令从指定地址起执行一条指令后停下来,显示寄存器内容和状态值。

-tAX=0000 BX=0000 CX=007D DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=13B3 ES=13B3 SS=13C3 CS=13C9 IP=0001 NV UP EI PL NZ NA PO NC 13C9:0001 2BC0 SUB AX,AX-2)多条指令追踪:-T[=地址][值]该命令从指定地址起执行n条命令后停下来,n由[值]确定。

-t 3AX=0000 BX=0000 CX=007D DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=13B3 ES=13B3 SS=13C3 CS=13C9 IP=0001 NV UP EI PL NZ NA PO NC 13C9:0001 2BC0 SUB AX,AXAX=0000 BX=0000 CX=007D DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=13B3 ES=13B3 SS=13C3 CS=13C9 IP=0003 NV UP EI PL ZR NA PE NC13C9:0003 50 PUSH AXAX=0000 BX=0000 CX=007D DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000 DS=13B3 ES=13B3 SS=13C3 CS=13C9 IP=0004 NV UP EI PL ZR NA PE NC13C9:0004 B8C313 MOV AX,13C3(5)显示内存单元内容的命令D,格式为:-D[地址]或-D[范围]-d ds:013C3:0000 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa 13C3:0010 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa 13C3:0020 61 61 61 61 61 61 61 61-00 00 00 00 00 00 00 00 aaaaaaaa........ 13C3:0030 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa 13C3:0040 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa 13C3:0050 61 61 61 61 61 61 61 61-00 00 00 00 00 00 00 00 aaaaaaaa........ 13C3:0060 1E 2B C0 50 B8 C3 13 8E-D8 B8 C6 13 8E C0 8D 36 .+.P.. (6)13C3:0070 00 00 8D 3E 00 00 FC B9-28 00 F3 A4 CB 00 00 00 ...>....(....... -(6)修改内存单元内容的命令E,它有两种格式:1)用给定的内容代替指定范围的单元内容:-E地址内容表例如:-E 2000:0100 F3 “XYZ” 8D其中F3,“X”“Y”“Z”和8D各占一个字节,用这五个字节代替原内存单元2000:0100到0104的内容,“X”“Y”“Z”将分别按它们的ASCII码值代入。

2)逐个单元相继地修改:-E地址例如:-E 100:18E4:0100 89.78此命令是将原100号单元的内容89改为78。

78是程序员键入的。

(7)检查和修改寄存器内容的命令R,它有三种方式:1)显示CPU内部所有寄存器内容和标志位状态;格式为:-RR命令显示中标志位状态的含义如下表所示:2)显示和修改某个指定寄存器内容,格式为:-R 寄存器名例如打入:-R AX系统将响应如下:AX FIF4:表示AX当前内容为F1F4,此时若不对其作修改,可按ENTER键,否则,打入修改后内容,如:-R BXBX 0369:059F则BX内容由0369改为059F3)显示和修改标志位状态,命令格式为:-RF系统将给出响应,如OV DN EI NG ZR AC PE CY-这时若不作修改可按ENTER键,否则在“-”号之后键入修改值,键入顺序任意。

如OV DN EI NG ZR AC PE CY-PONZDINV(8)命名命令N,格式为:-N 文件名此命令将文件名格式化在CS:5CH的文件控制块内,以便使用L或W命令把文件装入内存进行调试或者存盘。

(9)装入命令L,它有两种功能:1)把磁盘上指定扇区的内容装入到内存指定地址起始的单元中,格式为:-L 地址驱动器扇区号扇区数2)装入指定文件,格式为:-L [地址]此命令装入已在CS:5CH中格式化的文件控制块所指定的文件。

在用L命令前,BX和CX中应包含所读文件的字节数。

(10)写命令W,有两种格式:1)把数据写入磁盘的指定扇区:-W 地址驱动器扇区号扇区数2)把数据写入指定文件中:-W [地址]此命令把指定内存区域中的数据写入由CS:5CH处的FCB所规定的文件中。

在用W命令前,BX和CX中应包含要写入文件的字节数。

(11)退出DEBUG命令Q,该命令格式为Q它退出DEBUG程序,返回DOS,但该命令本身并不把在内存中的文件存盘,如需存盘,应在执行Q命令前先执行写命令W。

三.实验要求:四.实验报告:写出在DEBUG状态下编写、运行程序的过程以及调试所中遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。

实验二字符串传递实验一.实验目的:掌握字符串的传递过程二.实验内容:P146 例4.30 把40个字母a的字符串从源缓冲区传送到目的缓冲区DOS命令行格式下,按F5键可以输出上次输入的命令把DOS命令行格式下运行结果直接写入文件,用重定向符命令>>C:\MASM 58.ASM MORE >> G:\MASM\RESULT\58.DOC1、编译: c:\masm .asm2、链接: c:\link .obj3、调试: c:\debug .exe4、运行: c:\ .exe1)先用命令U反汇编整个程序,查看每条指令的物理地址,1、编译: C:\masm 430.asmMicrosoft (R) Macro Assembler Version 5.00Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.Source listing [NUL.LST]:Cross-reference [NUL.CRF]:50792 + 450136 Bytes symbol space free0 Warning Errors0 Severe Errors2、链接: c:\link 430.objMicrosoft (R) Overlay Linker Version 3.60Copyright (C) Microsoft Corp 1983-1987. All rights reserved.Run File [430.EXE]:List File [NUL.MAP]:Libraries [.LIB]:LINK :warning L4021: no stack segment3、调试: c:\debug 430.exe1)、先用命令U反汇编整个程序,查看每条指令的物理地址,其显示内容的含义为:内存地址指令代码反汇编的程序代码-u0B75:0000 1E PUSH DS0B75:0001 2BC0 SUB AX,AX0B75:0003 50 PUSH AX0B75:0004 B86F0B MOV AX,0B6F ;数据段的首地址ds 0b6f0B75:00078ED8 MOV DS,AX0B75:0009 B8720B MOV AX,0B72 ;附加段的首地址es 0b720B75:000C 8EC0 MOV ES,AX0B75:000E 8D360000 LEA SI,[0000]0B75:0012 8D3E0000 LEA DI,[0000]0B75:0016 FC CLD0B75:0017 B92800 MOV CX,00280B75:001A F3 REPZ0B75:001B A4 MOVSB0B75:001C B402 MOV AH,02 ;为了在DOS格式下,程序运行完毕后可以看到运行结果,特地增加了一个输入语句0B75:001E CD21 INT 21-u0B75:0020 CB RETF2)、从上一步结果中找到数据段的首地址0B6F,附加段的首地址0B72,查看里面存储的数据,数据段从首地址0B6F开始40个字节中存储了40个字符a:-d 0b6f:00000B6F:0000 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa 0B6F:0010 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa 0B6F:0020 61 61 61 61 61 61 61 61-00 00 00 00 00 00 00 00 aaaaaaaa........ 0B6F:0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0B6F:0040 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0B6F:0050 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0B6F:0060 1E 2B C0 50 B8 6F 0B 8E-D8 B8 72 0B 8E C0 8D 36 .+.P.o....r. (6)0B6F:0070 00 00 8D 3E 00 00 FC B9-28 00 F3 A4 B4 02 CD 21 ...>....(......!-d 0b72:0000;附加段从首地址0B72开始40个字节中存储了40个空字符0B72:0000 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0B72:0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0B72:0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0B72:0030 1E 2B C0 50 B8 6F 0B 8E-D8 B8 72 0B 8E C0 8D 36 .+.P.o....r. (6)0B72:0040 00 00 8D 3E 00 00 FC B9-28 00 F3 A4 B4 02 CD 21 ...>....(......! 0B72:0050 CB 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0B72:0060 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa 0B72:0070 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa3)、从反汇编地址中找到把数据段的首地址0B6F传给寄存器AX的指令地址0B75:0007,用G命令执行到地址0007,然后用T命令单步执行,看寄存器AX,DS,ES的内容的变化-G0007AX=0B6F BX=0000 CX=0111 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000DS=0B5F ES=0B5F SS=0B6F CS=0B75 IP=0007 NV UP EI PL ZR NA PE NC0B75:0007 8ED8 MOV DS,AX-TAX=0B6F BX=0000 CX=0111 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000DS=0B6F ES=0B5F SS=0B6F CS=0B75 IP=0009 NV UP EI PL ZR NA PE NC0B75:0009 B8720B MOV AX,0B72-TAX=0B72 BX=0000 CX=0111 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000DS=0B6F ES=0B5F SS=0B6F CS=0B75 IP=000C NV UP EI PL ZR NA PE NC0B75:000C 8EC0 MOV ES,AX-TAX=0B72 BX=0000 CX=0111 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=000E NV UP EI PL ZR NA PE NC0B75:000E 8D360000 LEA SI,[0000] DS:0000=6161-TAX=0B72 BX=0000 CX=0111 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=0012 NV UP EI PL ZR NA PE NC0B75:0012 8D3E0000 LEA DI,[0000] DS:0000=6161-TAX=0B72 BX=0000 CX=0111 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=0016 NV UP EI PL ZR NA PE NC0B75:0016 FC CLD4)、让程序执行到传送准备工作完成后的地址0B75:0016 FC CLD ,查看源偏移地址SI 和目标偏移地址DI的值,以及移动次数存放的寄存器CX,然后用T命令单步执行,看寄存器源地址(DS:DI)和目标地址(ES:SI)的内容的变化-g0016AX=0B72 BX=0000 CX=0111 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=0016 NV UP EI PL ZR NA PE NC0B75:0016 FC CLD-tAX=0B72 BX=0000 CX=0111 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=0017 NV UP EI PL ZR NA PE NC0B75:0017 B92800 MOV CX,0028AX=0B72 BX=0000 CX=0028 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=001A NV UP EI PL ZR NA PE NC0B75:001A F3 REPZ0B75:001B A4 MOVSB-tAX=0B72 BX=0000 CX=0027 DX=0000 SP=FFFC BP=0000 SI=0001 DI=0001DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=001A NV UP EI PL ZR NA PE NC0B75:001A F3 REPZ0B75:001B A4 MOVSB-tAX=0B72 BX=0000 CX=0026 DX=0000 SP=FFFC BP=0000 SI=0002 DI=0002DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=001A NV UP EI PL ZR NA PE NC0B75:001A F3 REPZ0B75:001B A4 MOVSB-tAX=0B72 BX=0000 CX=0025 DX=0000 SP=FFFC BP=0000 SI=0003 DI=0003DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=001A NV UP EI PL ZR NA PE NC0B75:001A F3 REPZ0B75:001B A4 MOVSB-d ds:0000;进行了三次传送操作后,查看一下源缓冲区和目的缓冲区的内容0B6F:0000 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa 0B6F:0010 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa 0B6F:0020 61 61 61 61 61 61 61 61-00 00 00 00 00 00 00 00 aaaaaaaa........ 0B6F:0030 61 61 61 00 00 00 00 00-00 00 00 00 00 00 00 00 aaa............. 0B6F:0040 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0B6F:0050 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0B6F:0060 1E 2B C0 50 B8 6F 0B 8E-D8 B8 72 0B 8E C0 8D 36 .+.P.o....r. (6)0B6F:0070 00 00 8D 3E 00 00 FC B9-28 00 F3 A4 B4 02 CD 21 ...>....(......! -d es:00000B72:0000 61 61 61 00 00 00 00 00-00 00 00 00 00 00 00 00 aaa............. 0B72:0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0B72:0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0B72:0030 1E 2B C0 50 B8 6F 0B 8E-D8 B8 72 0B 8E C0 8D 36 .+.P.o....r. (6)0B72:0040 00 00 8D 3E 00 00 FC B9-28 00 F3 A4 B4 02 CD 21 ...>....(......! 0B72:0050 CB 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0B72:0060 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa 0B72:0070 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa-r;用R命令查看一下各个寄存器的内容:AX=0B72 BX=0000 CX=0025 DX=0000 SP=FFFC BP=0000 SI=0003 DI=0003DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=001A NV UP EI PL ZR NA PE NC0B75:001A F3 REPZ0B75:001B A4 MOVSB;用E命令修改源缓冲区的内容,然后执行传送操作,看目的缓冲区的内容的变化:-e 0b6f:00040B6F:0004 61.67 61.68 61.69 61.700B6F:0008 61.71 61.71-d ds:00000B6F:0000 61 61 61 61 67 68 69 70-71 71 61 61 61 61 61 61 aaaa ghipqq aaaaaa 0B6F:0010 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa 0B6F:0020 61 61 61 61 61 61 61 61-00 00 00 00 00 00 00 00 aaaaaaaa........ 0B6F:0030 61 61 61 00 00 00 00 00-00 00 00 00 00 00 00 00 aaa............. 0B6F:0040 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0B6F:0050 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0B6F:0060 1E 2B C0 50 B8 6F 0B 8E-D8 B8 72 0B 8E C0 8D 36 .+.P.o....r. (6)0B6F:0070 00 00 8D 3E 00 00 FC B9-28 00 F3 A4 B4 02 CD 21 ...>....(......!-tAX=0B72 BX=0000 CX=0024 DX=0000 SP=FFFC BP=0000 SI=0004 DI=0004DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=001A NV UP EI PL ZR NA PE NC0B75:001A F3 REPZ0B75:001B A4 MOVSB-tAX=0B72 BX=0000 CX=0023 DX=0000 SP=FFFC BP=0000 SI=0005 DI=0005DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=001A NV UP EI PL ZR NA PE NC0B75:001A F3 REPZ0B75:001B A4 MOVSB-tAX=0B72 BX=0000 CX=0022 DX=0000 SP=FFFC BP=0000 SI=0006 DI=0006DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=001A NV UP EI PL ZR NA PE NC0B75:001A F3 REPZ0B75:001B A4 MOVSB-tAX=0B72 BX=0000 CX=0021 DX=0000 SP=FFFC BP=0000 SI=0007 DI=00070B75:001A F3 REPZ0B75:001B A4 MOVSB-tAX=0B72 BX=0000 CX=0020 DX=0000 SP=FFFC BP=0000 SI=0008 DI=0008DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=001A NV UP EI PL ZR NA PE NC0B75:001A F3 REPZ0B75:001B A4 MOVSB-;源缓冲区变化了的内容传送到了目的缓冲区,结果如下:-d es:00000B72:0000 61 61 61 61 67 68 69 70-00 00 00 00 00 00 00 00 aaaa ghip........ 0B72:0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0B72:0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0B72:0030 1E 2B C0 50 B8 6F 0B 8E-D8 B8 72 0B 8E C0 8D 36 .+.P.o....r. (6)0B72:0040 00 00 8D 3E 00 00 FC B9-28 00 F3 A4 B4 02 CD 21 ...>....(......! 0B72:0050 CB 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0B72:0060 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa 0B72:0070 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa-rAX=0B72 BX=0000 CX=0020 DX=0000 SP=FFFC BP=0000 SI=0008 DI=0008DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=001A NV UP EI PL ZR NA PE NC0B75:001A F3 REPZ0B75:001B A4 MOVSB;用F命令修改源缓冲区的内容,然后执行传送操作,看目的缓冲区的内容的变化:-f 0b6f:0006 0009 "yupkh"-tAX=0B72 BX=0000 CX=001F DX=0000 SP=FFFC BP=0000 SI=0009 DI=0009DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=001A NV UP EI PL ZR NA PE NC0B75:001A F3 REPZ0B75:001B A4 MOVSB-tAX=0B72 BX=0000 CX=001E DX=0000 SP=FFFC BP=0000 SI=000A DI=000ADS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=001A NV UP EI PL ZR NA PE NC0B75:001A F3 REPZ0B75:001B A4 MOVSB-tAX=0B72 BX=0000 CX=001D DX=0000 SP=FFFC BP=0000 SI=000B DI=000B0B75:001A F3 REPZ0B75:001B A4 MOVSB-tAX=0B72 BX=0000 CX=001C DX=0000 SP=FFFC BP=0000 SI=000C DI=000CDS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=001A NV UP EI PL ZR NA PE NC0B75:001A F3 REPZ0B75:001B A4 MOVSB-tAX=0B72 BX=0000 CX=001B DX=0000 SP=FFFC BP=0000 SI=000D DI=000DDS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=001A NV UP EI PL ZR NA PE NC0B75:001A F3 REPZ0B75:001B A4 MOVSB;把源缓冲区中从地址0b6f:0006 到0009的内容改为"yupk",但在执行此次块修改命令F 前,源缓冲区的前8个字符已经传送到目的缓冲区,所以此次块修改命令F执行后,源缓冲区内容从地址0b6f:0006 到0009的内容改为"yupk",执行若干次传送指令后,目的缓冲区内从ES:0008到0009之间的内容接收了源缓冲区的内容"pk",如下结果:-d es:00000B72:0000 61 61 61 61 67 68 69 70-70 6B 61 61 61 00 00 00 aaaaghip pk aaa... 0B72:0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0B72:0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0B72:0030 1E 2B C0 50 B8 6F 0B 8E-D8 B8 72 0B 8E C0 8D 36 .+.P.o....r. (6)0B72:0040 00 00 8D 3E 00 00 FC B9-28 00 F3 A4 B4 02 CD 21 ...>....(......! 0B72:0050 CB 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0B72:0060 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa 0B72:0070 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa5)、完全执行程序,最后再显示目标地址(ES:SI)的内容的变化:-g001cAX=0B72 BX=0000 CX=0000 DX=0000 SP=FFFC BP=0000 SI=0028 DI=0028DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=001C NV UP EI PL ZR NA PE NC0B75:001C B402 MOV AH,02-d es:00000B72:0000 61 61 61 61 67 68 69 70-70 6B 61 61 61 61 61 61 aaaa ghippk aaaaaa 0B72:0010 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa 0B72:0020 61 61 61 61 61 61 61 61-00 00 00 00 00 00 00 00 aaaaaaaa........ 0B72:0030 1E 2B C0 50 B8 6F 0B 8E-D8 B8 72 0B 8E C0 8D 36 .+.P.o....r. (6)0B72:0040 00 00 8D 3E 00 00 FC B9-28 00 F3 A4 B4 02 CD 21 ...>....(......!0B72:0050 CB 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0B72:0060 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa 0B72:0070 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa-O-Q三.实验要求:四.实验报告:写出在DEBUG状态下编写、运行程序的过程以及调试所中遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。

相关文档
最新文档