微机原理实验1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
指令系统实验
一、实验目的
(1)、熟悉数据传送指令、算术运算指令、逻辑运算指令的应用
(2)、了解各指令对标志寄存器的影响
(3)、掌握循环结构的程序设计方法
(4)、掌握数据块传送程序的设计方法
(5)、掌握传送指令的应用
(6)掌握多字节书相加程序的设计方法
二、实验内容
(1)、多字节十进制加法程序设计
将两个多字节十进制数相加,要求被加数和加数均已组合BCD码的形式各自存放在以DA TA1和DATA2为首的连续5个内存单元中,结果送回被加数单元。
编程思路提示:
该题目要求掌握ADC指令和DAA指令的应用。
为实现置顶功能,应从以下几个方面考虑:
a、组织数据时,要按照高位在搞地址,低位在低地址的原则。
b、要完成多字节数据相加,最低字节用ADD指令,其他高位字节则要用ADC指令。
c、因为被加数和加数都以BCD数表示,所以加法指令之后要有加法调整指令。
d、题目要求完成10个字节的十进制数相加,所以要用循环指令程序。
三、实验设备
(1)、普通PC电脑一台。
(2)、masm软件。
开始
程序初始化
SI指向被加数
DI指向加数
CX中送5
CF清零
执行ADC指令
执行DAA指令
送结果并调整指针
CX-1=0?
结束
实验设计
程序清单:
DATA SEGMENT 数据段
DATA1 DB 27H,36H,45H,25H,23H //定义5段字节变量
DATA2 DB 18H,78H,56H,43H,65H //定义5段字节变量
DATA ENDS
CODE SEGMENT // 代码段
ASSUME CS:CODE,DS:DA TA //2个寄存器分别和哪些段有关
START: MOV AX,DATA
MOV DS,AX
LEA SI,DA TA1 //SI<---DA TA1变量的偏移地址
LEA DI,DATA2 // DI<---DATA2变量的偏移地址
MOV BX,00H //立即数寻址BX<---00H
MOV CX,05H // 立即数寻址CX<---05H
CLC
SUM: MOV AL,[SI+BX]
ADC AL,[DI+BX] //两个寄存器中相对应地址的数相加+CF
DAA //加法的十进制调整
MOV [BX],AL //DS+BX的存储器<---AL的内容
INC BX //BX+1
LOOP SUM //循环求和程序
CODE ENDS
END START
程序运行效果截图:
图1. 程序运行效果
四、实验心得体会
我们通过在edit环境下输入源程序,通过汇编连接,生成可执行文件后,进入debug 调试环境得到加法之后的内容,我们熟悉指令系统的基本操作,掌握了单循环程序设计方法,掌握数据传送程序的方法,明白了ADC,DAA,AAA指令的区别,对我们以后的学习有很大的帮助。