实验一: 调试工具DEBUG的使用

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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’

相关文档
最新文档