⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.asm

📁 运行时输入格式为*+*= 能自动计算结果 可以算加减乘除
💻 ASM
字号:
DATA        SEGMENT
X        DW  ?
SYMBOL        DB  ?
Y        DW  ?
Z        DW  ?
DISPINFO1             DB 'NOT YUNSUAN CHAR!','$'(不是运算符)
DISPINFO2      DB 'YUSHU IS:$'(余数是:)
CUAN        DW  10000,1000,100,10,1
DATA   ENDS
CODE   SEGMENT
    ASSUME DS:DATA,CS:CODE
START:    MOV   AX,DATA
    MOV   DS,AX
BINGIN:    CALL  INPUT(调用输入加转换子程序)
    MOV   X,BX
    MOV   SYMBOL,DL(输入运算符时结束第一个数,并把这个存储起来)
    CALL  INPUT
    MOV   Y,BX

    CMP   SYMBOL,'+'
    JE    JIA
    CMP   SYMBOL,'-'
    JE    JIAN
    CMP   SYMBOL,'*'
    JE    CHENG
    CMP   SYMBOL,'/'
    JE    CHU
    LEA   DX,DISPINFO1
    MOV   AH,09H
    INT   21H

    MOV   AH,4CH
    INT   21H
JIA:    MOV   AX,X
    ADD   AX,Y
    JMP   EXIT1
JIAN:    MOV   AX,X
    SUB   AX,Y
    JMP   EXIT1
CHENG:    MOV   AX,X
    MUL   Y
    JMP   EXIT1
CHU:    MOV   AX,X
    CWD
    DIV   Y
    PUSH  DX
    MOV   DX,AX
    CALL  BINTODIN
    LEA   DX,DISPINFO2
    MOV   AH,9
    INT   21H
    POP   DX
    CALL  BINTODIN
    JMP   LOOP0
EXIT1:    MOV   Z,AX
    MOV   DX,AX
    CALL  BINTODIN

LOOP0:    MOV   DL,0AH(回车换行)
    MOV   AH,02H
    INT   21H
    MOV   DL,0DH
    INT   21H

    MOV   AH,01H(可以进行下一个运算)
    INT   21H
    CMP   AL,0DH
    JNE   BINGIN

    MOV   AH,4CH
    INT   21H

INPUT    PROC  NEAR(输入并转换子程序)
    PUSH  AX
    MOV   AX,0
LOOP1:    CALL  INP
    CMP   DL,30H
    JB    EXIT2
    CMP   DL,39H
    JA    EXIT2
    SUB   DL,30H
    MOV   BX,0
    MOV   BL,DL
    MOV   CL,10
    MUL   CL
    ADD   AX,BX
    JMP   LOOP1
EXIT2:    MOV   BX,AX
    POP   AX
    RET
INPUT    ENDP

INP    PROC  NEAR(输入一个字符子程序)
    PUSH  AX
    MOV   AH,01H
    INT   21H
    MOV   DX,0
    MOV   DL,AL
    POP   AX
    RET
INP    ENDP

BINTODIN PROC NEAR(二进制转换为十进制数并输出显示)
     PUSH  CX
     PUSH  BX
     MOV   CX,5
     MOV   BX,0
     LEA   SI,CUAN
LOOP3:     SUB   DX,[SI]
     JB    LOOP4
     INC   BL
     JMP   LOOP3
LOOP4:     ADD   DX,[SI]
     CMP   BL,0
     JE    LOOP7
LOOP5:     PUSH  DX
     MOV   DL,BL
     OR    DL,30H
     MOV   AH,2
     INT   21H
     POP   DX
     MOV   BH,1
     JMP   LOOP8
LOOP7:     CMP   BH,1
     JE    LOOP5(第一个不是0才显示)
LOOP8:     ADD   SI,2
     MOV   BL,0
     LOOP  LOOP3
     CMP   BH,0(当全为0时,输出一个0)
     JNE   LOOP9
     MOV   DL,'0'
     MOV   AH,2
     INT   21H
LOOP9:     POP   BX
     POP   CX
     RET
BINTODIN ENDP

CODE   ENDS
       END   START

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -