文档详情

汇编语言实现四则运算.doc

发布:2021-09-20约3.52千字共6页下载文档
文本预览下载声明
DISP MACRO VAR MOV AH,2 MOV DL,VAR INT 21H ENDM DATAS SEGMENT DATA0 DB PLEASE INPUT A NUMBER(0-999):,$ DATA1 DB over flow input again:,$ DATA2 DB PLEASE INPUT ANOTHER NUMBER(EXP:123),$ DATA3 DB PLEASE INPUT AN OPREATOR:,$ DATA4 DB THE OPERATOR IS WRONG,INPUT AGAIN:,$ OPER DB ? FLAG DB 0 FLAG1 DB 0 DATA DW 3 DUP(?) DATAS ENDS STACKS SEGMENT DW 256 DUP(?) STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX MOV DI,OFFSET DATA0 ;提示信息 CALL DISPL MOV SI,0 ;SI作为数组下标 CALL INPUT CALL NEWLINE MOV DI,OFFSET DATA3 ;提示信息 CALL DISPL AGAIN: MOV AH,1 ;1号功能输入四则运算符 INT 21H CMP AL,+ ;判断输入的是不是+,-,*,/ JE NEXT0 CMP AL,- JE NEXT0 CMP AL,* JE NEXT0 CMP AL,/ JE NEXT0 CALL NEWLINE ;输入的运算符不合法,重新输入 MOV DI, OFFSET DATA4 CALL DISPL JMP AGAIN NEXT0: MOV OPER,AL ;保存运算符 CALL NEWLINE MOV DI,OFFSET DATA2 ;输入第二个操作数 CALL DISPL MOV SI,2 CALL INPUT MOV AX,DATA[0] MOV BX,DATA[2] CMP OPER,+ ;判断是那种操作,进行运算 JE NEXT1 CMP OPER,- JE NEXT2 CMP OPER,* JE NEXT3 CMP OPER,/ JE NEXT4 NEXT1: ;加法运算 CLC ADC AX,BX JNC N1 MOV FLAG,1 ;判断是否进位 N1: MOV DATA[4],AX ;运算结果放入内存 JMP OUTPUT NEXT2: ;减法运算 CLC SBB AX,BX JNC N2 MOV FLAG,1 ;判断是否借位 NEG AX N2: MOV DATA[4],AX ;运算结果放入内存 JMP OUTPUT NEXT3: ;乘法运算 CLC MOV DX,0 MUL BX MOV DATA[4],AX ;运算结果放入内存 JMP OUTPUT NEXT4: ;除法运算 CLC MOV DX,0 CMP BX,0 JNZ N4 ;判断除数是否为0 CALL NEWLINE CALL ERROR CALL NEWLINE MOV DI,OFFSET DATA2 CALL DISPL MOV SI,2 CALL INPUT JMP NEXT4 N4: DIV BX MOV DATA[4],AX ;运算结果放入内存 OUTPUT: CALL NEWLINE MOV DI,0 ;输出第一个操作数 CALL PRINT DISP OPER ;输出运算符 MOV DI,2
显示全部
相似文档