- 182
- 0
- 约 9页
- 2017-06-21 发布于河南
- 举报
8086汇编语言上机调试 实验报告
一、实验目的
(1)掌握常用DEBUG命令: G,D,R,T,U,Q。
(2)掌握工具软件EMU8086。
(3)掌握完整程序设计方法的格式,能正确书写数据段,代码段等。
图1 汇编语言程序的建立及汇编过程
2.1.2、汇编语言程序上机过程
1)、用编辑程序(如EDIT.EXE)建立ASM源文件;
2)、用汇编程序(如MASM.EXE)把ASM文件转汇编成OBJ文件;
3)、用连接程序(如LINK.EXE)把OBJ文件转连接成EXE文件;
4)、用调试程序(如DEBUG.COM)来调试和执行
5)、 生成EXE或COM文件
2.2 、汇编语言程序格式
存储器的物理地址由段基址和偏移地址组合而成,任何一个逻辑段,无论是代码段,数据段,堆栈段,附加段都必须进行段定义,以便连接程序把不同段和模块连接成一个可执行程序。此外,还必须明确段和段寄存器之间的关系,这可使用段分配语句来完成。
2.2.1、段定义语句
四个逻辑段不一定全部要定义,通常代码段和数据段是必须的,附加段可以省略。但当代码段中使用了串指令,必须设置附加段作目标串基址用,附加段也可用来存放数据,增大数据段容量。
(1)代码段:存放程序执行的指令
(2)数据段:存放程序所需的数据
(3)堆栈段:存放程序执行的临时信息
数据段定义格式:
DATA SEGMENT ; 数据段
RESULT_1 DB 1
RESULT_2 DB 1
RESULT_3 DB 1
DATA ENDS
附加段的定义:
EXTRA SEGMENT
DEST_BUFFER DB 50 DUP (‘?’)
EXTRA ENDS
堆栈段的定义:
STACK SEGMENT STACK ; 堆栈段
STA DB 64 DUP(0)
STACK_TOP DB 0
STACK ENDS
2.2.2、段分配语句
在8086/8088系统中存储器采用分段结构,各段容量≦64K字节,用户可以设置多个逻辑段,但只允许4个逻辑段同时有效,段分配语句用来完成将逻辑段分别定义成代码段、数据段、堆栈段和附加段。
由于ASSUME伪指令只指定某个段分配给哪个段寄存器,并将代码段的段基址自动装入CS寄存器中,而不能自动把其它段基址装入相应的段寄存器中,所以在代码段的开始要有一段初始化程序完成这一工作。对堆栈段来说除了将段基址送入SS寄存器外,还要将栈顶偏移地址置入堆栈指示器SP中。
ASSUME CS:段名, DS:段名, ES:段名, SS:段名
2.3、将000H-3E7H范围内的二进制数转换成BCD码
2.3.1、程序框图:
2.3.2、参考程序:
将 AX中的三位数拆为三个BCD码, 并存入 Result 开始的三个单元
DATA SEGMENT ; 数据段
RESULT_1 DB 1
RESULT_2 DB 1
RESULT_3 DB 1
DATA ENDS
STACK SEGMENT STACK ; 堆栈段
STA DB 64 DUP(0)
STACK_TOP DB 0
STACK ENDS
CODE SEGMENT ; 代码段
ASSUME CS:CODE , DS:DATA , ES:DATA , SS:STACK
START:
MOV AX, DATA
MOV DS, AX ; 设置数据段
MOV AX, STACK
MOV SS, AX ; 设置堆栈段
LEA SP, STACK_TOP ; 设置栈顶指针
MOV AX, 2afH
MOV CL, 100
DIV CL
MOV RESULT_1, AL ; 除以 100, 得百位数
MOV AL, AH
MOV AH, 0
您可能关注的文档
最近下载
- (人教版)数学二年级上册寒假作业-2025年秋季版,30份题组.docx
- 12YJ5-1 平屋面参考图集.docx VIP
- 富邦生物(内蒙古)有限公司年产 500 吨多杀菌素项目环境影响报告书.pdf
- 金宝血滤机Prismaflex操作流程-CRRT.pptx VIP
- 药学专业毕业论文6000字.doc VIP
- 邓丽君经典老歌之不朽名曲专辑.doc VIP
- DB32T4122-2021开发区地质灾害危险性区域评估规范1.pdf VIP
- 光波导仿真:弯曲波导仿真_(5).不同弯曲半径对波导性能的影响.docx VIP
- 有限空间应急物资检查、维护、保养记录.doc VIP
- 《无线网络与移动通讯技术》教学大纲(模板).docx VIP
原创力文档

文档评论(0)