CODE SEGMENT
ASSUME CS:CODE
MAIN PROC FAR
START:
mov cx,5
mov si,cx
LOOP1:
MOV CX,SI
MOV BX,0
GET_CHAR0:MOV AH,1
INT 21H
CMP AL,0DH
JE T0
SUB AL,30H
JL T0
CMP AL,9
JG T0
CBW
XCHG AX,BX
MOV CX,10
MUL CX
XCHG AX,BX
ADD BX,AX
JMP GET_CHAR0
T0:ADD AL,30H
CMP AL,2BH
JE JIA
CMP AL,2DH
JE JIAN
CMP AL,2AH
JE CHENG
CMP AL,2FH
JE CHU
JMP EXIT0
JIA:MOV DI,BX
CALL JIAFA
JMP EXIT0
JIAN:MOV DI,BX
CALL JIANFA
JMP EXIT0
CHENG:MOV DI,BX
CALL CHENGFA
JMP EXIT0
CHU:MOV DI,BX
CALL CHUFA
EXIT0:CALL SHUCHU
MOV DL,0AH
MOV AH,2
INT 21H
DEC SI
MOV CX,SI
LOOP LOOP1
MOV AH,4CH
INT 21H
RET
MAIN ENDP
shuru PROC NEAR
MOV BX,0
GET_CHAR:MOV AH,1
INT 21H
CMP AL,0DH
JE EXIT
SUB AL,30H
JL EXIT
CMP AL,9
JG EXIT
CBW
XCHG AX,BX
MOV CX,10
MUL CX
XCHG AX,BX
ADD BX,AX
JMP GET_CHAR
EXIT:
RET
shuru ENDP
JIAFA PROC NEAR
CALL SHURU
ADD BX,DI
RET
JIAFA ENDP
JIANFA PROC NEAR
CALL SHURU
MOV AX,DI
SUB AX,BX
MOV BX,AX
RET
JIANFA ENDP
CHENGFA PROC NEAR
CALL SHURU
MOV AL,BL
MOV BX,DI
MUL BL
MOV BX,AX
RET
CHENGFA ENDP
CHUFA PROC NEAR
CALL SHURU
MOV AX,DI
SUB AH,AH
DIV BL
MOV BL,AL
RET
CHUFA ENDP
shuchu PROC NEAR
MOV CX,1000
CALL DEC_DIV
MOV CX,100
CALL DEC_DIV
MOV CX,10
CALL DEC_DIV
MOV CX,1
CALL DEC_DIV
RET
shuchu ENDP
DEC_DIV PROC NEAR
MOV AX,BX
MOV DX,0
DIV CX
MOV BX,DX
CMP AL,9
ADD AL,30H
MOV DL,AL
MOV AH,2
INT 21H
RET
DEC_DIV ENDP
CODE ENDS
END START
此程序会循环四次,输入四次后自动退出。
可以输入加减乘除。