微机原理与接口技术实验报告
学院:
班级: 姓名: 学号:
西安交通大学实验报告
课程 微机原理与接口技术 实验日期 年 月 日
专业班号 交报告日期 年 月 日 姓名 学号 共 页 第 1 页 实验1 数据传送、算术运算、循环程序结构 一、实验目的
1.熟悉8086汇编语言源程序的框架结构,并掌握汇编语言程序的编写、汇编、连接、 执行的过程,并利用Turbo Debugger调试汇编程序。 2.熟悉8086指令系统的数据传送指令,掌握寻址方式。
3.熟悉8086指令系统的算术运算指令。掌握循环结构汇编语言程序的编制。
二、实验任务
教材P121,第14、15题。
教材P195,第6、12题。
三、实验内容
实验1.1:教材P121,第14题
设有两个8个字节长的BCD码数据BCD1及BCD2。BCD1数以1000H为首地址在内存 中顺序存放;BCD2数以2000H为首地址在内存中顺序存放。要求相加后结果顺序存放 在以2000H为首地址的内存区中(设结果BCD数仍不超过8个字节长)。 【实验原理】
考虑两个8个字节长的BCD码相加,首先根据地址要求将数据放在对应的地址单元 中,然后做加法,BCD码相加要用到调整指令,结果才为正确的BCD数。若为分离BCD码调整指令为AAA,组合BCD码调整指令为DAA。 【程序框图】
1
开始设置初值CX=8地址指针BX=0进位标志CF=0取相对于段基址1000H和2000H偏移量为BX的两个BCD数相加调用调整指令AAA(DAA)并将结果存入[BX+2000H]中NBX<-BX+1CX<-CX-1CX是否为0Y结束 【程序源代码】 DATAS SEGMENT ORG 1000H
BCD1 DB 01H,02H,03H,04H,05H,06H,07H,08H;起始地址为1000H ORG 2000H
BCD2 DB 03H,04H,07H,08H,09H,02H,01H,00H;起始地址为2000H DATAS ENDS CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS MOV DS,AX
MOV CX,8 ;字节数送CX MOV BX,0 ;地址指针BX清零 CLC ;进位标志CF清零
L1: MOV AL,[BX+1000H] ;取BCD1的一个字节
ADC AL,[BX+2000H] ;与BCD2的一个相应字节及进位标志相加 AAA ;分离BCD码加修正 MOV [BX+2000H],AL ;和存入加上内存区 INC BX ;修改地址指针
LOOP L1 ;8个字节未加完继续循环进行 MOV AH,4CH INT 21H
CODES ENDS
2
END START
【程序运行结果】
BCD码为: BCD1 DB 01H,02H,03H,04H,05H,06H,07H,08H
BCD2 DB 03H,04H,07H,08H,09H,02H,01H,00H
相加结果: 04H 06H 00H 03H 05H 09H 08H 08H (分离BCD码)
实验1.2:教材P121,第15题
设从2000H为首地址的内存中,存放着10个带符号的字节数据,试编写“找出其中 最大的数,并存入2000H单元中“的程序。 【实验原理】
首先把十个带符号数放在要求的的存储单元中,然后再进行比较,有符号数的比 较用 JL,JC,JNG等指令,首先设计一个最小带符号数80H作为比较初值,用2000H单 元中的数分别与其它进行比较,若大于则把该单元的数存入2000H单元,否则不予处理(即“打擂台”)。
对于该题,采用的是字符串指令,由于是隐含寻址,把2000H中的数作为字符串源 操作数,其它进行一次循环则依次放入AL中,注意的是当CX为10时,DL=80H。 【程序框图】
3
相关推荐: