微机原理实验简易计算器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【实验题目】
简易计算器设计
【实验目的】
综合测试学生微机接口技术及应用能力,包括系统构思设计、电路设计搭建、软件调试等;
结合应用实际,培养学生运用微机技术服务应用、服务实际的能力。
【基本要求】
1)利用实验箱上的4x4键盘及6位数码管,实现两个16位宽的非负整数(0~65535)进行+、-、×运算,计算结果限制在范围-65535~65535,超过范围在数码管最低位显示E;
2)16个按键的分配可以自行指定;
【扩展要求】
1)按基本要求保持输入的范围不变(16位宽),扩展计算结果的范围到用足6位数码管,当计算结果超过-65535~999999时,显示E;
2)增加÷的功能,有小数显示;
【实验程序】
;该程序实现了基本要求及扩展要求的2)
DSEG SEGMENT
BUFF DB 6 DUP(?)
LED_7 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7C H,39H,5EH,79H,71H,00H,40H
POSITION DB 0DFH,0EFH,0F7H,0FBH,0FDH,0FEH UNIT10 DW 10000,1000,100,10,1
NEWNUM DB 0
COUNT DB 0
FLAG DB 0 ;是否有键按下的标志
NEGTI DB 0 ;是否为负数的标志
NUM DW 0
NUM1 DW 0
NUM2 DW 0
TAG DB 0 ;运算种类标志
POINT DB 0 ;除法结果添加小数点标志
RESULT DW 0
DSEG ENDS
CSEG SEGMENT
ASSUME DS:DSEG,CS:CSEG
START:
MOV AX,DSEG
MOV DS,AX
MOV DX,300CH ;8255初始化
MOV AL,81H
OUT DX,AL
LEA SI,BUFF MOV CX,6
NEXT:
MOV BYTE PTR[SI],16
INC SI
LOOP NEXT
CALL SHOW ;将显示缓冲区中内容在LED上一次显示出来
MOV COUNT,0 ;记按下了几位数
NEXT2:
CALL SHOW
CALL SCAN ;判断是否有按键按下
CMP FLAG,1
JZ OK
JMP NEXT2
OK:
MOV FLAG,0
MOV POINT,0
MOV DX,3000H ;判断是哪一个键被按下
MOV AL,0FFH
OUT DX,AL
MOV CH,-1 ;CH用于保存当前被扫描的列号MOV CL,07FH
XL:
ROL CL,1
INC CH
MOV DX,3000H
MOV AL,CL
.
.
.
.
.
.
.