汇编语言 实验1 DEBUG的使用

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

 

《汇编语言程序设计》实验是学习本课程的每个考生必须要通过的一个重要的实践环节,根据“汇编语言程序设计自学考试大纲”规定:上机实验单独作为本课程的实验考核成绩。《汇编语言程序设计》是一门实践性很强的课程,只有多上机操作,对汇编语言源程序进行编辑、汇编、连接、调试和运行全过程的训练,才能加深对本课程基本知识的理解,才能熟练地掌握程序设计的方法与技巧,才能学好本课程。

本实验指导书是完全按照《汇编语言程序设计自学考试大纲》中“实验大纲”的要求编写的,为便于考生较好完成上机操作和实验报告,特此作出如下说明和要求:

(1)做好上机实验的准备工作:应考者对每个实验需要进行预习,了解相关内容和具体要求,熟悉上机操作步骤,学会相关系统软件的使用,掌握各种操作调试命令。

(2)编写源程序:按照实验题目的要求,应考者要事先独立完成汇编语言源程序的编写工作,并对源程序进行认真的静态检查,减少错误的发生。

(3)完成实验报告:做完上机实验,应考者要严格按照实验报告的格式要求写出实验报告。实验报告的内容为:实验名称、实验的目的、实验的内容和要求、实验步骤、实验结果并附上源程序清单和程序流程图。

 


实验一  DEBUG的使用

 

(一)实验目的

1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。

2、掌握8086/8088的寻址方式及多字节数据的处理方法。

(二)实验设备

硬件环境:IBM-PC及其兼容机

软件环境:操作系统DOS3.0版本以上

          调试程序DEBUG.COM

(三)实验内容和要求

实验内容:

  1. 利用DEBUG程序中的“E”命令,将两个多字节数“12345678H”和“FEDCBA98H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。
  2. 分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。

实验要求:

本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。

(四)预习要求

1、复习DOS启动方式和DOS有关命令的使用;

2、阅读本书后的附录,熟悉掌握DEBUG调试程序中的A、D、E、G、Q、R、T、U命令的书写格式及功能;

3、复习寻址方式和相关的数据传送指令及算术运算指令。

(五)实验步骤

1、启动DOS操作系统

2、运行DEBUG.COM程序(若当前盘为C)

   C:>DEBUG↙

   – ;(“–”为DEBUG提示符,仅当屏幕出现该提示符后,才可输入DEBUG命令)

3、用“A”命令编辑和汇编源程序

   –A ↙

   186E:0100    MOV  AX,[0200]↙

   186E:0103    MOV  BX,[0202]↙

   186E:0107    ADD  AX,[0204]↙

   186E:010B    ADC  BX,[0206]↙

   186E:010F    MOV  [0208],AX↙

   186E:0112    MOV  [020A],BX↙

   186E:0116    ↙

4、用“U”命令反汇编验证源程序

   –U CS:0100↙

   186E:0100   A10002    MOV  AX,[0200]

   186E:0103   8B1E0202  MOV  BX,[0202]

   186E:0107   03060402   ADD  AX,[0204]

   186E:010B   131E0602  ADC   BX,[0206]

   186E:010F   A30802    MOV  [0208],AX

   186E:0112   891E0A02  MOV  [020A],BX

   186E:0116   

   –

注意:

  1. 检查源程序是否有错误,若有则返回到第3步用“A 地址”命令进行修改,直到程序无错误。
  1. DEBUG约定在其命令或源程序中所涉及到的数据均被看作十六进制数,其后不用“H”说明。
  1. 在DEBUG下,源程序中不能使用“标号”、“变量”和一些伪指令。
  2. 在DEBUG下,大小写不敏感。

 

5、程序未执行前,用“R”命令观察,相关寄存器的内容。

–R↙

如:(AX)=     ,(BX)=     ,(SI)=     

   (DI)=     ,(CS)=     ,(IP)=     

6、在程序未执行前,用“D”命令观察DS:0200H,DS:0204H、DS:0208H单元的内容

    –D  200 20B ↙

7、用“G”命令运行源程序

    –G  =100  0116 ↙

8、再用“D”命令观察DS:0200H~DS:020BH字节单元中的内容

    –D  200  20B↙

9、用“T”单步操作命令对源程序单步执行,观察AX、BX、CS、IP寄存器内容的变化,并与预计的结果相比较。

注意:

  1. D命令显示内存数据,注意观察多字节数据在内存中的存放方式。
  1. 指令执行的时候,IP寄存器随着变化,注意观察。

(六)实验结果分析

1、程序运行结果:(AX)=     ,(BX)=     

                 DS:0208H四字节单元的内容:                    

2、试用寄存器间接寻址方式编写程序段,完成上述程序段的功能。(参考下列程序流程图)

(七)、附加题目:

  1. 从DS:0000H开始的5个16位带符号数分别记为x,y,z,v,w,用E命令初始化为:540,1,-1,1080,0,  试求w=(v-(x*y+z-540))/x
  2. 完成BX中1的个数的统计。
  3. 用串操作指令将DS:0000开始20个字初始化为:0DDCCH。并将这20个字的内容复制到其后的20个字里。
;实验内容
E DS:0200 78 56 34 12
E DS:0204 98 BA DC FE

;直接寻址
MOV AX, [0200]
ADD AX, [0204]
MOV [0208], AX
MOV AX, [0202]
ADC AX, [0206]
MOV [020A], AX
;寄存器间接寻址
MOV BX, 0200
MOV AX, [BX]
ADD AX, [BX+4]
MOV [BX+8], AX
MOV AX, [BX+2]
ADC AX, [BX+6]
MOV [BX+0A], AX

;答案为111111110H

;附加题目1
E DS:0000 1C 02 01 00 FF FF 38 04 00 00

MOV BX, 0
MOV AX, [BX]
IMUL WORD PTR [BX+2]
ADD AX, [BX+4]
SUB AX, 021C
SUB AX, [BX+6]
NEG AX
IDIV WORD PTR [BX]
MOV [BX+8], AX

;答案为0002H

;附加题目2
;别忘给BX赋值
MOV CX, 10
MOV AX, 0
ROL BX, 1
ADC AX, 0
LOOP ;填入ROL BX, 1的偏移地址

;附加题目3
MOV CX, 14
MOV SI, 0
MOV WORD PTR [SI], DDCC
ADD SI, 2
DEC CX
JNZ ;填入MOV WORD PTR [SI], DDCC的偏移地址

MOV AX, DS
MOV ES, AX

CLD
MOV SI, 0
MOV DI, 28
MOV CX, 14
REP MOVSW

;大吉大利,今晚AC

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值