汇编语言实现简单的计算器

来源:互联网 发布:古鹰 知乎 编辑:程序博客网 时间:2024/06/08 15:13

欢迎访问我的网站:omegaxyz.com
计算器实现简单的加减乘除运算(小于65536的正数)
①从键盘输入算数的等式
②不接受复合算数如3+5*7
③按‘=’号输出结果
④按‘C’号作为CLEAR清零
程序分为输入模块,判断模块,计算模块,输出模块。
其他:增加了一些特性
①能够得出两个正数相减得到的负数
②能够计算除法中的余数
③比较美观
代码过长由于增加了一些特性

DATA SEGMENTdivisors DW 10000, 1000, 100, 10, 1results DB 0,0,0,0,0,"$" ;存放五位数ASCII码data endsCODE SEGMENTASSUME CS:CODEMAIN PROC FARMOV AX,DATAMOV DS,AXLEA DX,MESSMOV AH,09HINT 21HMOV DL,0DHMOV AH,2INT 21HMOV DL,0AHMOV AH,2INT 21HNOW:MOV AX,0CALL INPUTPUSH BX;------------------------CMP AL,'+'JZ PLUSCMP AL,'-'JZ MINUSCMP AL,'*'JZ BYCMP AL,'/'JZ DIVDPLUS:CALL INPUTPOP AXADD AX,BXJMP NEXTMINUS:CALL INPUTPOP AXCMP AX,BXJL LESSSUB AX,BXJMP NEXTLESS:SUB AX,BXNEG AXPUSH AXMOV DL,'-'MOV AH,02HINT 21HPOP AXJMP NEXTBY:CALL INPUTPOP AXMUL BXJMP NEXTDIVD:CALL INPUTPOP AXCMP AX,BXJL LESS2DIV BXJMP NEXTLESS2:PUSH AXMOV DL,30HMOV AH,02HINT 21HMOV DL,'~'MOV AH,02HINT 21HPOP AXJMP NEXT;---------------------------NEXT:CALL OUTPUTJMP NOWMOV AH,4CHINT 21HRETMAIN ENDP;---------------------INPUT PROC NEARMOV BX,0NUM:MOV AH,1INT 21HCMP AL,'C'JZ CLEARCMP AL,'+'JZ EXITCMP AL,'-'JZ EXITCMP AL,'*'JZ EXITCMP AL,'/'JZ EXITSUB AL,30HJL EXITCMP AL,9JG EXITCBWXCHG AX,BXMOV CX,10MUL CXXCHG AX,BXADD BX,AXJMP NUMCLEAR:MOV DL,0DHMOV AH,2INT 21HMOV DL,0AHMOV AH,2INT 21HMOV AX,0MOV BX,0JMP NUMEXIT:RETINPUT ENDP;----------------------OUTPUT PROC NEARmov si, offset divisorsmov di, offset results mov cx,5 CAL:mov dx,0 div word ptr [si]add al,30Hmov byte ptr [di],al inc di add si,2 mov ax,dx LOOP CALmov cx,4 mov di, offset results NZ:cmp byte ptr [di],'0' jne printinc di loop NZprint:mov dx,di MOV AH,9INT 21HRETOUTPUT ENDP;---------------------CODE ENDSEND MAIN

这里写图片描述

原创粉丝点击