汇编语言编写简易计算器输入加减乘除计算

2025-03-26 08:13:51
推荐回答(1个)
回答1:

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

此程序会循环四次,输入四次后自动退出。

可以输入加减乘除。