微机原理实验简易计算器

上传人:ni****g 文档编号:568027849 上传时间:2024-07-23 格式:PDF 页数:7 大小:213.27KB
返回 下载 相关 举报
微机原理实验简易计算器_第1页
第1页 / 共7页
微机原理实验简易计算器_第2页
第2页 / 共7页
微机原理实验简易计算器_第3页
第3页 / 共7页
微机原理实验简易计算器_第4页
第4页 / 共7页
微机原理实验简易计算器_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《微机原理实验简易计算器》由会员分享,可在线阅读,更多相关《微机原理实验简易计算器(7页珍藏版)》请在金锄头文库上搜索。

1、-【实验题目】简易计算器设计【实验目的】综合测试学生微机接口技术及应用能力,包括系统构思设计、电路设计搭建、软件调试等;结合应用实际,培养学生运用微机技术效劳应用、效劳实际的能力。【根本要求】1) 利用实验箱上的 4x4 键盘及 6 位数码管,实现两个 16 位宽的非负整数065535进展、运算,计算结果限制在围-6553565535,超过围在数码管最低位显示E;2) 16 个按键的分配可以自行指定;【扩展要求】1) 按根本要求保持输入的围不变16 位宽 ,扩展计算结果的围到用足6 位数码管,当计算结果超过-65535999999 时,显示 E;2) 增加的功能,有小数显示;【实验程序】;该程

2、序实现了根本要求及扩展要求的2DSEG SEGMENTBUFF DB 6 DUP(?)LED_7DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,00H,40HPOSITION DB 0DFH,0EFH,0F7H,0FBH,0FDH,0FEHUNIT10 DW 10000,1000,100,10,1NEWNUM DB 0COUNT DB 0FLAG DB 0;是否有键按下的标志NEGTI DB 0;是否为负数的标志NUM DW 0NUM1 DW 0NUM2 DW 0TAG DB 0;运算种类标志POINT DB

3、0;除法结果添加小数点标志RESULT DW 0DSEG ENDSCSEG SEGMENTASSUME DS:DSEG,CS:CSEGSTART:MOV AX,DSEGMOV DS,AXMOV DX,300CH;8255 初始化MOV AL,81HOUT DX,ALLEA SI,BUFFMOV CX,6NEXT:MOV BYTE PTRSI,16INC SILOOP NEXTCALL SHOW;将显示缓冲区中容在 LED 上一次显示出来MOV COUNT,0;记按下了几位数NEXT2:CALL SHOWCALL SCAN;判断是否有按键按下CMP FLAG,1JZ OKJMP NEXT2OK:

4、MOV FLAG,0MOV POINT,0MOV DX,3000H;判断是哪一个键被按下MOV AL,0FFHOUT DX,ALMOV CH,-1;CH 用于保存当前被扫描的列号MOV CL,07FHXL:ROL CL,1INC CHMOV DX,3000HMOV AL,CL- word.zl-OUT DX,ALMOV DX,3008HIN AL,DXAND AL,0FHCMP AL,0FHJZ XL;选中下一列被扫描CMP AL,0EHJNZ FOURMOV CL,0;CL 保存行号MOV DX,3000H;将 LED 关显示MOV AL,0FFHOUT DX,ALCALL DELAY2JM

5、P NEXT2JIAFA:MOV TAG,1;置加法标志CALL TO_DEC;将输入的数转化为十进制数保JMP FREEFOUR:CMP AL,0DHJNZ BAMOV CL,4JMP FREEBA:CMP AL,0BHJNZ SHIERMOV CL,8JMP FREESHIER:CMP AL,07HJNZ XLMOV CL,12FREE:ADD CH,CL;行列值相加为按键代表的值CMP CH,9E SHUZICMP CH,12;加法JZ JIAFACMP CH,13;减法JZ JIANFACMP CH,14;乘法JZ CHENGFACMP CH,15;除法JZ CHUFACMP CH,1

6、1;等号时进展运算JZ YUNSUANCMP CH,10;此键清屏重新输入JZ CLEARSHUZI:INC COUNTMOV NEWNUM,CHCALL COPY;将新输入的按键值送入显示缓冲区的最末位-存MOV AX,NUMMOV NUM1,AXJMP STARTJIANFA:MOV TAG,2CALL TO_DECMOV AX,NUMMOV NUM1,AXJMP STARTCHENGFA:MOV TAG,3CALL TO_DECMOV AX,NUMMOV NUM1,AXJMP STARTCHUFA:MOV TAG,4CALL TO_DECMOV AX,NUMMOV NUM1,AXJMP

7、STARTCLEAR:JMP STARTYUNSUAN:CALL TO_DEC制数保存MOV AX,NUMMOV NUM2,AXCMP TAG,1JZ SJIAFCMP TAG,2JZ SJIANFCMP TAG,3JZ SCHENGFCMP TAG,4JZ SCHUF;继续输入第二个按键数;将第二次输入的数转化为十进- word.zl-YEAH:CALL CHULI;将结果中零的位置 16 关显示MOV TAG,0MOV NEGTI,0CALL SHOWJMP NEXT2SJIAF:CALL JIAJMP YEAHSJIANF:CALL JIANJMP YEAHSCHENGF:CALL CH

8、ENGJMP YEAHSCHUF:CALL CHUJMP YEAHMOV AH,4CHINT 21HJIA PROC NEARPUSH AXPUSH CXPUSH SIMOV AX,NUM1ADD AX,NUM2JC YC1;溢出MOV RESULT,AXCALL TO_SHOWSHUJMP OVER1YC1:LEA SI,BUFFMOV BYTE PTRSI,14INC SIMOV CX,5SS0:MOV BYTE PTRSI,16INC SILOOP SS0OVER1:POP SIPOP CXPOP AX-RETJIA ENDPJIAN PROC NEARPUSH AXPUSH CXPUS

9、H SIMOV AX,NUM1CMP AX,NUM2JA POSITIVEMOV NEGTI,1;结果为负数MOV AX,NUM2SUB AX,NUM1JC YC2JMP OVPOSITIVE:MOV AX,NUM1SUB AX,NUM2JC YC2OV:MOV RESULT,AXCALL TO_SHOWSHUJMP OVER2YC2:LEA SI,BUFFMOV BYTE PTRSI,14INC SIMOV CX,5SS2:MOV BYTE PTRSI,16INC SILOOP SS2OVER2:POP SIPOP CXPOP AXRETJIAN ENDPCHENG PROC NEARPUS

10、H AXPUSH CXPUSH SIMOV AX,NUM1MUL NUM2JC YC3MOV RESULT,AX- word.zl-CALL TO_SHOWSHUJMP OVER3YC3:LEA SI,BUFFMOV BYTE PTRSI,14INC SIMOV CX,5SS3:MOV BYTE PTRSI,16INC SILOOP SS3OVER3:POP SIPOP CXPOP AXRETCHENG ENDPCHU PROC NEARPUSH AXPUSH CXPUSH DXPUSH SIXOR DX,DXMOV AX,NUM1DIV NUM2PUSH DXMOV RESULT,AXCAL

11、L TO_SHOWSHUMOV POINT,1LEA SI,BUFFADD SI,5MOV CX,5PEA:MOV AL,SI-1MOV SI,ALDEC SILOOP PEAPOP DXMOV AX,10MUL DXXOR DX,DXDIV NUM2MOV SI,ALPOP SIPOP DXPOP CX-POP AXRETCHU ENDPCHULI PROC NEARPUSH SIPUSH CXLEA SI,BUFFADD SI,5XX:CMP BYTE PTRSI,0JNZ NOZEROMOV BYTE PTRSI,16DEC SIJMP XXNOZERO:CMP NEGTI,1JNZ Z

12、HENGINC SIMOV BYTE PTRSI,17ZHENG:POP CXPOP SICHULI ENDPTO_DEC PROC NEARPUSH SIPUSH AXPUSH BXPUSH CXLEA SI,BUFFMOV AL,COUNTXOR AH,AHADD SI,AXDEC SIXOR AX,AXXOR CH,CHMOV CL,COUNTAGAIN:ADD AX,AXMOV BX,AXADD AX,AXADD AX,AXADD AX,BXMOV BH,0MOV BL,SIADD AX,BX- word.zl-DEC SILOOP AGAINMOV NUM,AXPOP CXPOP B

13、XPOP AXPOP SIRETTO_DEC ENDPTO_SHOWSHU PROC NEARPUSH SIPUSH DIPUSH AXPUSH BXPUSH CXLEA DI,BUFFADD DI,5LEA SI,UNIT10MOV AX,RESULTMOV BYTE PTRDI,0DEC DILOP0:XOR CL,CLMOV BX,SILOP1:SUB AX,BXLOP3INC CLJMP LOP1LOP3:ADD AX,BXMOV DI,CLINC SIINC SIDEC DICMP BX,1JNZ LOP0POP CXPOP BXPOP AXPOP DIPOP SIRETTO_SHO

14、WSHU ENDP-SHOW PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH SIPUSH DICMP POINT,1;是否需添加小数点JNZ NOPOINTMOV CH,0FFHAA3:LEA SI,BUFFLEA DI,POSITIONMOV AL,SILEA BX,LED_7XLATMOV DX,3004HOUT DX,ALMOV DX,3000HMOV AL,DIOUT DX,ALCALL DELAY;延时,使一位稳定显示INC SIINC DIMOV AL,SILEA BX,LED_7XLATOR AL,80H;填小数点MOV DX,3004HOU

15、T DX,ALMOV DX,3000HMOV AL,DIOUT DX,ALCALL DELAY;延时,使一位稳定显示INC SIINC DIMOV CL,4AA2:MOV AL,SILEA BX,LED_7XLATMOV DX,3004HOUT DX,ALMOV DX,3000HMOV AL,DIOUT DX,ALCALL DELAY;延时,使一位稳定显示- word.zl-INC SIINC DIDEC CHJZ REALSTOPDEC CLJNZ AA2JMP AA3NOPOINT:MOV CH,0FFHAA1:LEA SI,BUFFLEA DI,POSITIONMOV CL,6AA:MO

16、V AL,SILEA BX,LED_7XLATMOV DX,3004HOUT DX,ALMOV DX,3000HMOV AL,DIOUT DX,ALCALL DELAY;延时,使一位稳定显示INC SIINC DIDEC CHJZ REALSTOPDEC CLJNZ AAJMP AA1REALSTOP:POP DIPOP SIPOP DXPOP CXPOP BXPOP AXRETSHOW ENDPDELAY PROC NEARPUSH BXPUSH CXMOV BX,3FFHDEL1:-MOV CX,0FFFHDEL2:LOOP DEL2DEC BXJNZ DEL1POP CXPOP BXRE

17、TDELAY ENDPDELAY2 PROC NEARPUSH BXPUSH CXMOV BX,3FHDEL3:MOV CX,0FFHDEL4:LOOP DEL4DEC BXJNZ DEL3POP CXPOP BXRETDELAY2 ENDPSCAN PROC NEARPUSH AXPUSH DXKS:MOV DX,3000HMOV AL,0OUT DX,ALMOV DX,3008HIN AL,DXAND AL,0FH;屏蔽高四位CMP AL,0FHJZ JIESHUMOV FLAG,1JIESHU:POP DXPOP AXRETSCAN ENDPCOPY PROC NEAR- word.zl-PUSH SIPUSH CXPUSH AXMOV CX,5LEA SI,BUFFADD SI,5NEXT1:MOV AL,SI-1MOV SI,ALDEC SILOOP NEXT1-MOV AL,NEWNUMMOV SI,ALPOP AXPOP CXPOP SIRETCOPY ENDPCSEG ENDSEND START- word.zl-

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号