汇编实验指导书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理与汇编语言程序设计
实验指导书
信息与通信工程学院 Copyright © 2010.09
目录
上机实验环境 (1)
实验一、寄存器与存储器 (2)
实验二、DEBUG调试程序 (6)
实验三、源程序建立与汇编 (9)
实验四、顺序程序设计 (13)
实验五、分支程序设计 (15)
实验六、循环程序设计 (17)
实验七、子程序设计 (19)
实验八、中断调用程序设计 (21)
实验九、宏汇编程序设计 (23)
实验十、模块化程序设计 (25)
实验十一、与C语言混合编程 (26)
上机实验环境
【硬件环境】
目前8086汇编语言程序一般在IMB PC/XT及兼容机上运行,因此要求机器具备基本配置的IMB PC/XT及兼容机就可以了,对机器的硬件环境没有特殊的要求。
【软件环境】
1. 操作系统:MS-DOS
2. 源程序编辑程序:纯文本编辑器,如:EDIT、EDLIN、记事本等
3. 汇编程序:MASM5.0、TASM3.0以上。
4. 连接程序:LINK
5. 调试程序:DEBUG
实验一、寄存器与存储器
【实验目的】
初步认识调试程序DEBUG,掌握调试程序时常用的命令与操作。
【实验内容】
1. 调试程序DEBUG的启动与退出。
2. 显示与修改寄存器的内容。
3. 显示与修改存储器的内容。
【实验准备】
1. 复习计算机中数据的表示。
2. 复习8086CPU内部结构,特别是8086CPU中的寄存器。
3. 复习8086CPU存储器组织,存储器的分段、逻辑地址、物理地址等概念。
4. 复习汇编语言程序上机过程,特别是DEBUG命令。
【实验步骤】
1. 调试程序DEBUG的启动与退出。
1) 启动DEBUG:在DOS提示符下键入:DEBUG↵。进入后显示DEBUG 提示符‘-’,如下图:
2) DEBUG帮助:在DEBUG提示符下键入:?↵。DEBUG会列出所有命令及使用方法简单提示,如下图:
3) 十六进制数加减法:在DEBUG提示符下键入:H 1234 ABCD↵。观察结果。
4) 退出DEBUG:在DEBUG提示符下键入:Q↵。即可退出,进入DOS。
2. 显示与修改寄存器的内容。
1) 显示所有寄存器内容:在DEBUG提示符下键入:R↵。显示:
2) 显示和修改指定寄存器内容:在DEBUG提示符下键入:RAX↵。显示AX内容,如需修改,则直接键入要修改的值(图中1234),若不想修改,直接
回车便可,如下图:
3) 显示修改标志寄存器:在DEBUG提示符下键入:RF↵。显示当前标志,如需修改,则直接键入要修改的值(可按任意顺序),若不想修改,直接回车便可,注意标志位的缩写:0标志—NV UP DI PL NZ NA PO NC
1标志—OV DN EI NG ZR AC PE CY,如下图:
4) 请参照上述操作步骤,显示和修改各寄存器内容及标志寄存器内容,观察结果并记录。
3. 显示与修改存储器的内容。
1) 显示存储器的内容,格式:D[地址]或D[范围],如:
D100↵:显示100H单元开始的80个字节的内容。
D100 11F↵:显示100H~11F单元的内容。
D100L8↵:显示100H单元开始的8个字节的内容。
D↵:显示上一个D命令显示单元的后续80个字节的内容。
如下图:
2) 修改存储器的内容,格式:E地址[数据数据...]。注意:地址不能省略,但数据可以省略。省略数据列表时可以交互输入, 空格继续, 回车结束。如:
E DS:1000 1A 2B 3C 4D 5E,‘WINDOWS’↵:将字节列表中给出的11个字节填入DS:1000开始的存储单元。
E100↵:将从100单元开始逐个修改存储单元内容。
如下图:
【实验要求】
1. 叙述使用DEBUG调试程序的过程。
2. 分析实验过程中出现的错误的原因。
实验二、DEBUG调试程序
【实验目的】
掌握DEBUG调试程序中的汇编与调试命令,并利用DEBUG进行简单的程序设计。
【实验内容】
1. 汇编与反汇编命令。
2. 程序调试命令。
3. 简单程序设计。
【实验准备】
1. 复习汇编语言程序上机过程。
2. 复习8086数据传送类指令。
3. 复习8086算术运算指令。
【实验步骤】
1. 汇编与反汇编命令。
1) 汇编命令:格式:A[地址],若省略地址,则默认为当前的CS:IP。如:
A100 :从100单元开始逐句输入汇编指令,回车后DEBUG自动翻译成机器码,如下图:
2) 反汇编命令:格式:U[地址]或U[地址范围],若省略地址,则默认为当前的CS:IP。如:
U100 :将100H单元开始的32个字节的内容翻译成汇编指令并显示,如下图:
2. 程序运行跟踪命令。
1) 运行命令:格式:G[=地址],若省略地址,则默认为当前的CS:IP。初次调试时不建议采用,可能会因为程序设计不当,造成意想不到的结果。
2) 跟踪命令:格式:T[=地址] [指令条数],若省略地址,则默认为当前的CS:IP。跟踪命令从指定的地址开始执行指令条数规定的指令后暂停,并显示寄存器内容和当前标志值。若不指定指令条数,则默认为1,即为单步跟踪。如下图:de
3) 参照步骤1、2所述,观察并记录一下指令执行的结果:MOV、ADD、ADC、SUB、SBB、INC、DEC。