好文档 - 专业文书写作范文服务资料分享网站

微机原理实验报告——4位BCD码相加

天下 分享 时间: 加入收藏 我要投稿 点赞

微机原理实验报告

一、 实验名称:4位BCD码相加 二、实验目的

学习字符型与数值型数据的相互转换方法,了解BCD码输入及相加的方法。

三、实验内容

1. 在数据段中定义3个变量想x1、x2、x3,用于存储从微机键盘上输入的两个4位BCD码(低位数据占高地址存放),x3用于存储这两个BCD码的和;

2. 从键盘输入两个4位BCD码,检查是否为数字键,非数字键不接收; 3. 将输入的两个4位字符型数据转换为4位非压缩型BCD码存于数据段中的变量中;

4. 将两个4位非压缩型BCD码相加,将结果利用INT 21H的2号功能显

示在微机屏幕上。

四、程序流程图

五、实验结果

程序开始运行后,从键盘上输入的数字字符显示在屏幕上,当输入为非数字字符时则不显示,先输入四位数字后自动显示“+”,继续输入四位数字后,自动显示“=”,并将两个四位BCD码相加的结果用五位ASCII码显示在屏幕上。

六、实验心得

本次实验内容相比于前次要复杂一点,输入时选用不回显的8号功能,以达到筛选输入字符是否为数字字符的作用,非数字字符的字符不存储也不显示在屏幕上,虽然之后要再输指令显示字符比较麻烦,但使程序的功能更完善了。由于键盘输入的数字为ASCII码,做运算时要将其转换为BCD码,显示时又要转换为ASCII码。另外,数字相加时使用ADC指令,因此要考虑进位位的问题,特别是最低位相加前要使进位位清零,相加的结果要进行十进制调整,将高四位清零,进位存入CF,最终的CF位的值则要放人X3的第五位。因此本次实验虽原理简单,但细节问题较多,需要考虑完整才能顺利的完成实验。

附:程序代码

STACK SEGMENT STACK DW 100 DUP(?) STACK ENDS

DATA SEGMENT X1 DB 4 DUP(0) X2 DB 4 DUP(0) X3 DB 5 DUP(0) DATA ENDS

CODE SEGMENT ASSUME

CS:CODE,SS:STACK,DS:DATA MAIN PROC MOV AX,DATA MOV DS,AX MOV SI,OFFSET X1 MOV CX,4 NEXT1:CALL KEYIN AND AL,0FH MOV [SI],AL INC SI LOOP NEXT1 MOV DL,'+' MOV AH,2 INT 21H

MOV DI,OFFSET X2 MOV CX,4 NEXT2:CALL KEYIN AND AL,0FH MOV [DI],AL INC DI LOOP NEXT2 MOV DL,'=' MOV AH,2

INT 21H DEC SI DEC DI

MOV BX,(OFFSET X3)+4 MOV CX,4 OR AL,AL NEXT3:MOV AL,[SI] ADC AL,[DI] AAA

MOV [BX],AL DEC SI DEC DI DEC BX LOOP NEXT3 MOV AL,0 ADC AL,0 MOV [BX],AL MOV CX,5 NEXT4:MOV DL,[BX] ADD DL,30H MOV AH,2 INT 21H INC BX LOOP NEXT4 MOV AH,4CH INT 21H MAIN ENDP

KEYIN PROC NEXT5:MOV AH,8 INT 21H CMP AL,'0' JB NEXT5 CMP AL,'9' JA NEXT5

PUSH AX MOV DL,AL MOV AH,2 INT 21H POP AX RET KEYIN ENDP

CODE ENDS END MAIN

微机原理实验报告——4位BCD码相加

微机原理实验报告一、实验名称:4位BCD码相加二、实验目的学习字符型与数值型数据的相互转换方法,了解BCD码输入及相加的方法。三、实验内容1.在数据段中定义3个变量想x1、x2、x3,用于存储从微机键盘上输入的两个4位BCD码(低位数据占高地址存放),x3用于存储这两个BCD
推荐度:
点击下载文档文档为doc格式
7g83f72b0s1symu1jbsa
领取福利

微信扫码领取福利

微信扫码分享