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

📄 counter.asm

📁 自制的计算器程序
💻 ASM
字号:
 ;显示字符的宏定义
        DISP  MACRO     CHAR
              PUSH      AX
              PUSH      DX          ;保存DX和AX
              MOV       DL,CHAR     ;显示字符
              MOV       AH,2
              INT       21H
              POP       DX
              POP       AX
              ENDM
;

;
        DSEG  SEGMENT

        DATA  DB        10 DUP (?)
      RESULT  DB        5 DUP (?)
      TABLE1  DB        'The symbol is wrong!',0AH,0DH,'$'
      TABLE2  DB        'The result is:',0AH,0DH,'$'
      TABLE3  DB        'and the arithmetical compliment is:','$'
      TABLE4  DB        'Please import the expressions:',0AH,0DH,'$'
      TABLE5  DB        'EXPLAIN:Please the mun less than 255.After you improt the first mun,please import space.afte the second mun,import enter',0AH,0DH,'$'

        DSEG  ENDS
        SSEG  SEGMENT   STACK 'STACK'
              DB        100 DUP (?)
        SSEG  ENDS
;
        CSEG  SEGMENT
              ASSUME    CS:CSEG,DS:DSEG,SS:SSEG
      START:
              MOV       AX,DSEG     ;初始化数据段
              MOV       DS,AX
              MOV       AX,SSEG
              MOV       SS,AX
              LEA       DX,TABLE5
              MOV       AH,9
              INT       21H
      BEGIN:  MOV       AH,1
              INT       21H
              CMP       AL,0DH
              JZ        L0
              CMP       AL,1BH
              JZ        LLL
              JMP       BEGIN
        LLL:
              MOV       AH,4CH
              INT       21H

         L0:
              LEA       DX,TABLE4
              MOV       AH,9
              INT       21H
              MOV       SI,OFFSET DATA
              MOV       CL,0
;以下为输入数据程序段
         L1:
              MOV       AH,1
              INT       21H
              CMP       AL,20H
              JZ        L2          ;yes
              MOV       [SI],AL
              INC       SI
              INC       CL
              JMP       L1
         L2:
              CMP       CL,2
              JZ        L3
              CMP       CL,3
              JZ        L4
              MOV       AL,DATA     ; ONE BIT
              SUB       AL,30H
              MOV       DATA+6,AL
              JMP       L5
         ;TWO BIT
         L3:
              MOV       AL,DATA
              SUB       AL,30H
              MOV       BH,DATA+1
              SUB       BH,30H
              MOV       BL,10
              MUL       BL
              ADD       AL,BH
              MOV       DATA+6,AL
              JMP       L5
          ; THREE BIT
         L4:
              MOV       AL,DATA+1
              SUB       AL,30H
              MOV       BH,DATA+2
              SUB       BH,30H
              MOV       BL,10
              MUL       BL
              ADD       AL,BH
              MOV       BH,AL
              MOV       AL,DATA
              SUB       AL,30H
              MOV       BL,100
              MUL       BL
              ADD       AL,BH
              MOV       DATA+6,AL
              JMP       L5
;输入运算符号
         L5:
              MOV       AH,1
              INT       21H
              MOV       DATA+7,AL
              DISP      20H
              MOV       SI,OFFSET DATA
              MOV       CL,0
;
         L6:
              MOV       AH,1
              INT       21H
              CMP       AL,0DH
              JZ        L7          ;yes
              MOV       [SI],AL
              INC       SI
              INC       CL
              JMP       L6
         L7:
              CMP       CL,2
              JZ        L8
              CMP       CL,3
              JZ        L9
              MOV       AL,DATA     ; ONE BIT
              SUB       AL,30H
              MOV       DATA+8,AL
              JMP       M1
         ;TWO BIT
         L8:
              MOV       AL,DATA
              SUB       AL,30H
              MOV       BH,DATA+1
              SUB       BH,30H
              MOV       BL,10
              MUL       BL
              ADD       AL,BH
              MOV       DATA+8,AL
              JMP       M1
          ; THREE BIT
         L9:
              MOV       AL,DATA+1
              SUB       AL,30H
              MOV       BH,DATA+2
              SUB       BH,30H
              MOV       BL,10
              MUL       BL
              ADD       AL,BH
              MOV       BH,AL
              MOV       AL,DATA
              SUB       AL,30H
              MOV       BL,100
              MUL       BL
              ADD       AL,BH
              MOV       DATA+8,AL
              JMP       M1

; 以下为计算过程
         M1:
              MOV       DL,0AH
              MOV       AH,2
              INT       21H
              MOV       DL,0DH
              MOV       AH,2
              INT       21H
              LEA       DX,TABLE2
              MOV       AH,9
              INT       21H
         M2:
              MOV       AL,DATA+7
              CMP       AL,2BH
              JE        M4
              CMP       AL,2DH
              JE        M5
              CMP       AL,2AH
              JE        M6
              CMP       AL,2FH
              JE        M7
              MOV       AH,2
              MOV       AL,0AH
              INT       21H
              MOV       AH,2
              INT       21
              LEA       DX,TABLE1
              MOV       AH,9
              INT       21H
              JMP       START
         M4:  MOV       AH,0
              MOV       AL,DATA+6
              MOV       BH,0
              MOV       BL,DATA+8
              ADD       AX,BX
              MOV       RESULT+1,AH
              MOV       RESULT,AL
              JMP       M8
         M5:
              MOV       AL,DATA+6
              MOV       BL,DATA+8
              SUB       AL,BL
              MOV       RESULT+1,0
              MOV       RESULT,AL
              JMP       M8
         M6:
              MOV       AL,DATA+6
              MOV       BL,DATA+8
              MUL       BL
              MOV       RESULT,AL
              MOV       RESULT+1,AH
              JMP       M8
         M7:  MOV       AH,0
              MOV       AL,DATA+6
              MOV       BL,DATA+8
              DIV       BL
              MOV       RESULT+1,0
              MOV       RESULT,AL
              MOV       RESULT+2,AH
              JMP       M8
         LL:  JMP       BEGIN
;以下为显示程序
         M8:
              MOV       AL,RESULT
              MOV       AH,RESULT+1
;FIVE BITS
              CMP       AX,2710H
              JB        M13
              MOV       DX,0
              MOV       BX,2710H
              DIV       BX
              MOV       CX,DX
              AAM
              ADD       AL,30H
              DISP      AL
              MOV       AX,CX
              MOV       BL,100
              DIV       BL
              MOV       CL,AH
              MOV       AH,0
              AAM
              ADD       AX,3030H
              DISP      AH
              DISP      AL
              MOV       AL,CL
              MOV       AH,0
              AAM
              ADD       AX,3030H
              DISP      AH
              DISP      AL
              JMP       M12
;FOUR BITS

        M13:  CMP       AX,03E8H
              JB        M9
              MOV       BL,100
              DIV       BL
              MOV       CL,AH
              MOV       AH,0
              AAM
              ADD       AX,3030H
              DISP      AH
              DISP      AL
              MOV       AL,CL
              MOV       AH,0
              AAM
              ADD       AX,3030H
              DISP      AH
              DISP      AL
              JMP       M12
 ;THREE BITS

         M9:
              CMP       AX,100
              JB        M10
              MOV       BL,100
              DIV       BL
              MOV       CL,AH
              MOV       AH,0
              AAM
              ADD       AL,30H
              DISP      AL
              MOV       AL,CL
              MOV       AH,0
              AAM
              ADD       AX,3030H
              DISP      AH
              DISP      AL
              MOV       AL,DATA+7
              CMP       AL,2FH
              JZ        M14
              JMP       M12
 ;TOW BITS
        M10:
              CMP       AX,10
              JB        M11
              AAM
              ADD       AX,3030H
              DISP      AH
              DISP      AL
              MOV       AL,DATA+7
              CMP       AL,2FH
              JZ        M14
              JMP       M12
;ONE BITS
        M11:
              ADD       AL,30H
              DISP      AL
              MOV       AL,DATA+7
              CMP       AL,2FH
              JZ        M14
              JMP       M12
        M14:
              DISP      20H
              LEA       DX,TABLE3
              MOV       AH,9
              INT       21H
              MOV       AH,0
              MOV       AL,RESULT+2
              AAM
              ADD       AX,3030H
              DISP      AH
              DISP      AL
              JMP       M12
        M12:
              DISP      0AH
              DISP      0DH
              JMP       LL
        CSEG  ENDS
              END       START





⌨️ 快捷键说明

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