实验一: 调试工具DEBUG的使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《微型计算机技术实验》
实验一:调试工具DEBUG的使用
一.实验目的
掌握调试工具DEBUG的使用方法,理解汇编指令、存储单元和寄存器等有关概念,能够对简单的汇编语言程序进行调试。
二.实验内容
(1)学习调试工具DEBUG的使用方法,熟悉DEBUG常用命令的功能和用法。
(2)利用DEBUG调试简单的汇编语言程序,体会汇编指令的功能、寄存器的作用、存储单元地址与内容的概念和作用、以及程序的执行过程。
三.实验要求
(1)掌握DEBUG的常用命令和基本的程序调试方法
(2)熟悉和掌握指令系统常用指令的功能和用法,能熟练运用DEBUG调试工具调试简单的程序
四.实验指导
1、DEBUG 命令使用
1)键入 DEBUG 进入 DEBUG 控制状态,显示提示符 '- '。
例如:C:\DEBUG
-
2)用命令 F 100 10F 'A' 将'A'的ASCII码填入内存。
(命令格式: F<范围><单元内容表>)
3)用命令 D 100 10F 观察内存中的十六进制码及屏幕右边的ASCII字符。(命令格式: D<地址范围>)
4)用命令 F 110 11F 41 重复上二项实验,观察结果并比较。
5)用命令 E 100 30 31 32 …… 3F将30H-3FH写入地址为100开始的内存单元中,再用D命令观察结果,看键入的十六进制数是什么字符的ASCII码? (命令格式: E<地址><批单元内容表>)6)用R命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内容。
7)用R命令将AX,BX内容改写为1050H及23A8H。
(命令格式: R<寄存器名>)
2、常用指令练习
1)内存操作数及各种寻址方式使用
①用A命令在内存100H处键入下列内容:
(注意:MOV 传送指令,INC加一指令,DEC 减一指令)
-A 0100
MOV AX,1234
MOV [1000],AX
MOV BX,1002
MOV BYTE PTR[BX],20
MOV DL,39
INC BX
MOV [BX],DL
DEC DL
MOV SI,3
MOV [BX+SI],DL
MOV [BX+SI+1],DL
MOV WORD PTR[BX+SI+2],2846
(在此按下CTRL+C退出A命令)
②用T命令逐条运行这些指令。
(命令格式: T[=<地址>][<条数>])
③每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注意理解是什么寻址方式。
注意:D命令显示结果中右边的ASCII字符及双字节数存放法(低对低,高对高)。
2)传送指令
①用A命令在内存100H处键入下列内容:
-A 0100↙
****:0100 MOV AX,1234↙
****:0103 MOV BX,5678↙
****:0106 XCHG AX,BX↙
****:0108 MOV AH,35↙
****:010A MOV AL,48↙
****:010D MOV DX,75AB↙
****:010F XCHG AX,DX↙
****:0111 (在此按下CTRL+C退出A命令)
注:****为段寄存器CS的值,是由计算机随机产生的。
②用U命令检查键入的程序并记录,特别注意左边的机器码。
(命令格式:U <地址>)
-U 0100↙
③用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。并注意标志位有无变化。
-T=0100↙
-T↙
-T↙
┇
3)加减法指令:
①用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
②用U命令检查键入的程序及对应的机器码。
③用T命令逐条运行这些指令,检查并记录有关寄存器及ZF情况。4)验证性实验
DATA SEGMENT
STR1 DB 'ASDFGHJK'
CN EQU $-STR1
STR2 DB 'ASDFGTYU'
FLAG DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START:MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV FLAG,1
MOV SI,OFFSET STR1
MOV DI,OFFSET STR2
MOV CX,CN
CLD
REPZ CMPSB
JZ NEXT
MOV FLAG,0
NEXT: MOV AH,4CH
INT 21H
CODE ENDS
END START
①用用文字编辑工具(常用EDIT或记事本)将源程序输入,其扩展名为‚**.ASM‛
②用MASM对源文件进行汇编,产生‚**.OBJ‛文件和‚**.LST‛文件。若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。
③用LINK将‚**.OBJ‛文件连接成可执行的‚**.EXE‛文件。
④用DEBUG的U命令进行反汇编,得到该程序所在地址的起点和终点(①进入DEBUG时输入‚DEBUG **.EXE‛②再输入U命令将**.EXE 反汇编成机器代码)
⑤用DEBUG的G命令执行该程序(连续执行G 命令,格式:G=[address1][address2] 例如:G=0000 0021)
⑥用DEBUG的D命令查看内存单元FLAG的情况
⑦修改数据段为:
DATA SEGMENT
STR1 DB ‘ASDFGHJK’
CN EQU $-STR1
STR2 DB ‘ASDFGHJK’