微机原理与接口技术实验讲义
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一熟悉汇编语言环境及建立汇编的过程
一、实验目的
1.熟悉汇编语言环境。
2.掌握汇编语言的上机过程。
3.了解汇编语言程序的编程格式。
二、实验要求
通过一个小程序的编写达到以上的实验目的。
三、实验原理
1.汇编语言程序的上机过程
用汇编语言编写的程序称为源程序,源程序也不能由机器直接执行,而必须翻译成机器代码组成的目标程序,这个翻译过程称为汇编。在微型机中,当前绝大多数情况下,汇编过程是通过软件自动完成的,用来把汇编语言编写的程序自动翻译成目标的软件叫汇编程序,汇编过程如下:
四、实验步骤
1、打开编辑环境
2、输入程序
CODE SEGMENT
ASSUME CS:CODE
START: MOV AL,01H
MOV BL,40H
ADD AL,BL
MOV DL,AL
MOV AH,02H
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
3、保存源程序,以.ASM为扩展名。C:\MASM\1.ASM
4、建立汇编过程
(1)用宏汇编程序汇编源程序C:\MASM>MASM 1.ASM
汇编程序有3个输出文件【.obj】文件,【.LST】文件,【.CRF】文件,.OBJ文件是我们所需
要的文件。汇编程序还有另外一个重要功能:可以给出源程序中的错误信息。
(2)用连接程序将OBJ文件转换为可执行的EXE文件C:\MASM>LINK 1.OBJ
5、执行程序:C:\MASM>1.EXE
实验二两个多位十进制数相加的实验
一、实验目的:
1.学习数据传送和算术运算指令的用法。
2.熟悉在PC机上建立汇编链接调试和运行汇编语言程序的过程。
二、实验内容:
将两个多位十进制数相加。要求加数和被加数均以ASCII码形式各自顺序存放在以DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。
三、程序框图
四、实验原理
1.ADC 带进位相加指令的功能和指令格式
2.AAA 、DAA、 AAS、 DAS指令的功能和指令格式
3.伪指令SEGMENT 、ENDS、 ASSUME、MACRO、ENDM的使用
4.子程序的定义(PROC NEAR/FAR ENDP),以及子程序调用和返回指令:CALL、RET的使用
5.循环指令LOOP的格式以及退出循环的条件
6.中断指令的使用
五、实验参考程序
CRLF MACRO ;建立回车换行宏
MOV DL,0DH
MOV AH,02H
INT 21H
MOV DL,0AH
MOV AH,02H
INT 21H
ENDM
DATA SEGMENT ;数据段
DATA1 DB 33H,39H,31H,37H,34H ;第一个数据(作为加数)DATA2 DB 36H,35H,30H,38H,32H ;第二个数据(作为被加数)DATA ENDS
CODE SEGMENT ;代码段
ASSUME CS:CODE,DS:DATA,ES:DATA
START: MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET DATA2
MOV BX,05
CALL DISPL ;显示被加数
CRLF
MOV SI,OFFSET DATA1
MOV BX,05
CALL DISPL ;显示加数
CRLF
MOV DI,OFFSET DATA2
CALL ADDA ;加法运算
MOV SI,OFFSET DATA1
MOV BX,05
CALL DISPL ;显示结果
CRLF
MOV AX,4C00H
INT 21H
DISPL PROC NEAR ;显示子程序段
DS1: MOV AH,02H
MOV DL,[SI+BX-1] ;显示字符串中的一个字符
INT 21H
DEC BX ;修改偏移量
JNZ DS1
RET
DISPL ENDP
ADDA PROC NEAR
MOV DX,SI
MOV BP,DI
MOV BX,05
AD1: SUB BYTE PTR[SI+BX-1],30H ;将ASCII码表示的数字串SUB BYTE PTR[DI+BX-1],30H ;转化位十六进制的字符串 DEC BX
JNZ AD1
MOV SI,DX
MOV DI,BP
MOV CX,05 ;包括进位位共5位
CLC ;清进位位
AD2: MOV AL,[SI]
MOV BL,[DI]
ADC AL,BL ;带进位相加
AAA ;非组合BCD码的加法调整 MOV [SI],AL ;结果送加数区
INC SI
INC DI ;指向下一位
LOOP AD2 ;循环
MOV SI,DX
MOV DI,BP
MOV BX,05
AD3: ADD BYTE PTR[SI+BX-1],30H ;十六进制的数字串转化
ADD BYTE PTR[DI+BX-1],30H ;为ASCII码表示的数字串 DEC BX
JNZ AD3
RET
ADDA ENDP
CODE ENDS
END START
六、实验步骤
1.按实验要求编写程序
2.汇编连接程序生成可执行文件
3. 执行程序观察结果
七、拓展练习
编写程序完成两个多位十进制数相减。要求显示结果格式为:被减数
减数
相减结果