汇编8086虚拟机编程简易加减乘除计算器
题目要求
设计一个计算器,完成2个小于等于4位的十进制有符号整数(-9999~9999)的“+、-、、/”运算。屏幕显示“please enter number1”,等待接受数字并回显,回车表明数字输入结束;换行显示”please enter operator +、-、、/“,如果输入正确的运算符则输出‘’please enter number2“。在输入数字并回车后以十进制的方式显示运算结果。循环上述过程。
如果数字或运算符输入错误,给出提示(自行设计提示语)并再次输入。如果运算结果超出-9999~9999的范围,提示发生溢出,并返回头重新输入。
数据段定义
STRP DB 01H,02H,03H,04H,05H,0DH,0AH,'$' ;一条花边的ASCII码
STR1 DB 'please enter number1:',0DH,0AH,'$' ;四条提示语句
STR2 DB 'please enter operator+,-,*,/:',0DH,0AH,'$'
STR3 DB 'please enter number2:',0DH,0AH,'$'
STR4 DB 'error,please enter again:',0DH,0AH,'$'
STR5 DB 'result=:',0DH,0AH,'$'
SR1 DW 0H ;存放第一个输入的数
SR2 DW 0H ;存放运算符号的标志数 个人定义+为1,-为2,*为3,/为4
SR3 DW 0H ;存放第二个输入的数
SR4 DW 0H ;存放运算结果的16进制数
FLA1 DW 1H ;存放第一个数的正负符号
FLA2 DW 1H ;存放第二个数的正负符号
RES DB 4 DUP('*') ;存放正序的结果ASCII码,多余位为’*‘
start部分
START: ;程序开始执行的第一条指令的标号,标号名可变
MOV AX,STACK1 ;堆栈段初始化,可以改变段名
MOV SS,AX
; MOV SP,TOP ;供参考
MOV SP,100 ;根据自己设置的深度填写
MOV AX,DATA1 ;数据段初始化,可以改变段名
MOV DS,AX ;如果需要定义扩展段,请仿照上述语法添加
MOV BX,0 ;清零
MOV AX,0
MOV CX,0
MOV DX,0
MOV SR1,AX
MOV SR2,BX
MOV SR3,AX
MOV SR4,AX
MOV RES,'