微机原理实验1

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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指令的区别,对我们以后的学习有很大的帮助。

相关文档
最新文档