西安交通大学
电子信息与工程学院自动化科学与技术系
微机原理与接口技术实验报告
实验名称 : 微机原理与接口技术
实验者姓名: XX 实验者学号: 21105040XX
所在班级: 自动化1X
报告完成日期: 2014年 1月12日
实验一
数据传送、算术运算、循环程序结构
1、实验目的
a) 熟悉8086汇编语言源程序的框架结构,并掌握汇编语言程序的编写、汇
编、连接、执行的过程,并利用Turbo Debugger调试汇编程序。 b) 熟悉8086指令系统的数据传送指令,掌握寻址方式。
c) 熟悉8086指令系统的算术运算指令。掌握循环结构汇编语言程序的编制。 2、实验内容
教材P121,第14、15题。教材P195,第6题。教材P196,第12题。 3、具体实验
第一题(P121,第14题)
设有两个8个字节长的BCD码数据BCD1及BCD2。BCD1数以1000H为首地址在内存中顺序存放;BCD2数以2000H为首地址在内存中顺序存放。要求相加后结果顺序存放在以2000H为首地址的内存区中(设结果BCD数仍不超过8个字节长)。
a) 实验原理 考虑两个8个字节长的BCD码相加,首先根据地址要求将数据放在对应的地址单元中,然后做加法,BCD码相加要用到调整指令,结果才为正确的BCD数
b) 程序框图
c) 程序源代码
DATAS SEGMENT ORG 1000H
BCD1 DB 01H,02H,03H,04H,05H,06H,07H,88H;起始地址为1000H ORG 2000H
BCD2 DB 11H,12H,13H,14H,15H,16H,17H,18H;起始地址为2000H DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS START:
MOV AX,DATAS MOV DS,AX MOV BX,0
MOV CX,8 ;设置循环次数8次 CLC ;清进位CF标志 AGAIN:MOV AL,[BX+1000H]
ADC [BX+2000H],AL;结果放在2000H开始的单元内 DAA INC BX
LOOP AGAIN;没完成则转AGAIN循环 MOV AH,4CH INT 21H CODES ENDS END START
运行: BCD1 DB 11H,12H,13H,14H,15H,16H,17H,18H
BCD2 DB 21H,22H,23H,24H,25H,26H,27H,28H
结果如下:DS:2000H为首地址的连续八个字节单元中
第二题(P121,第15题)
设从2000H为首地址的内存中,存放着10个带符号的字节数据,试编写“找出其中最大的数,并存入2000H单元中“的程序。
a) 实验原理
首先把十个带符号数放在要求的的存储单元中,然后再进行比较,有符号数的比较用JL,JC,JNG,等指令,首先设计一个最小带符号数80H作为比较初值,用2000H单元中的数分别与其它进行比较,若大于则把该单元的数存入2000H单元,否则不予处理。
对于该题,我采用的是字符串指令,由于是隐含寻址,把2000H中的数作为字符串源操作数,其它进行一次循环则依次放入AL中,注意的是当CX为10时,DL=80H。
b) 程序框图