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

📄 jiajia.asm

📁 多位十进制数加法运算
💻 ASM
字号:
        DATA  SEGMENT
        STR1  DB        'put the number1:$'
        STR2  DB        'put the number2:$'
        STR3  DB        '    the result :$'
        STR4  DB        '                             {  addition  }                                  $'
        STR5  DB        '"Ctrl+c"  out of the program$'
        STR6  DB        'put  "q"  at the end of the number$'
     NUMBER1  DB        '0','0',254 DUP(?)
     NUMBER2  DB        '0','0',254 DUP(?)
     NUMBER3  DB        256 DUP(?)
     NUMBER4  DB        256 DUP(?)
        DATA  ENDS
;**********************************
       EXTRA  SEGMENT
       EXTRA  ENDS
;***********************************
       STACK  SEGMENT   STACK
              DW        50 DUP(?)
         TOS  LABEL     WORD
       STACK  ENDS
;***********************************

        CODE  SEGMENT
              ASSUME    CS:CODE,DS:DATA,ES:EXTRA,SS:STACK
      START:
              MOV       AX,DATA
              MOV       DS,AX
              MOV       AX,EXTRA
              MOV       ES,AX
              MOV       AX,STACK
              MOV       SS,AX
              MOV       SP,TOS
 

              MOV       AX,0002H
              INT       10H

              MOV       AH,09H
              MOV       DX,OFFSET STR4
              INT       21H

              MOV       AH,03H
              INT       10H
              INC       DH
              MOV       DL,0
              MOV       AH,02H
              INT       10H

              MOV       AH,09H
              MOV       DX,OFFSET STR5
              INT       21H

              MOV       AH,03H
              INT       10H
              INC       DH
              MOV       DL,0
              MOV       AH,02H
              INT       10H

              MOV       AH,09H
              MOV       DX,OFFSET STR6
              INT       21H
        SSS:
              MOV       AH,03H
              INT       10H
              INC       DH
              MOV       DL,0
              MOV       AH,02H
              INT       10H

              MOV       AH,09H
              MOV       DX,OFFSET STR1
              INT       21H

    number=number1
              MOV       SI,2
     AGAIN1:
              MOV       AH,01H
              INT       21H

              CMP       AL,'q'
              JE        WRITEOVER1

              CMP       AL,'0'
              JL        AGAIN1
              CMP       AL,'9'
              JG        AGAIN1
              MOV       NUMBER[SI],AL
              INC       SI
              JMP       AGAIN1

 WRITEOVER1:
    
              MOV       NUMBER[SI],'$'
              PUSH      SI


              MOV       AH,03H
              INT       10H
              INC       DH
              MOV       DL,0
              MOV       AH,02H
              INT       10H


              MOV       AH,09H
              MOV       DX,OFFSET STR2
              INT       21H

    number=number2
              MOV       SI,2
     AGAIN2:
              MOV       AH,01H
              INT       21H

              CMP       AL,'q'
              JE        WRITEOVER2

              CMP       AL,'0'
              JL        AGAIN2
              CMP       AL,'9'
              JG        AGAIN2
  
              MOV       NUMBER[SI],AL
              INC       SI
              JMP       AGAIN2

 WRITEOVER2:
    
              MOV       NUMBER[SI],'$'
              PUSH      SI


              MOV       AH,03H
              INT       10H
              INC       DH
              MOV       DL,0
              MOV       AH,02H
              INT       10H



              MOV       CL,1
              MOV       BX,0
              POP       SI
              POP       DI
              MOV       AX,0
              PUSH      AX
         L0:
              POP       AX
              DEC       DI
              CMP       DI,-1
              JE        OT1
              MOV       AL,NUMBER1[DI]
              DEC       SI
              CMP       SI,-1
              JE        H
              MOV       DL,NUMBER2[SI]
              JMP       I
          H:
              MOV       DL,0
              INC       SI
          I:
              AND       AL,0FH
              AND       DL,0FH
              ADD       DL,AL

              MOV       CL,1
              MOV       AL,0
              SHR       DL,CL
              JNC       L1
              ADD       AL,1
         L1:
              SHR       DL,CL
              JNC       L2
              ADD       AL,2
         L2:
              SHR       DL,CL
              JNC       L3
              ADD       AL,4
         L3:
              SHR       DL,CL
              JNC       L4
              ADD       AL,8
         L4:
              SHR       DL,CL
              JNC       L5
              ADD       AL,16
         L5:
              ADD       AL,AH
              CMP       AL,10
              JB        L6
              SUB       AL,10
              MOV       AH,1
              JMP       L7
         L6:
              MOV       AH,0
    

         L7:  PUSH      AX
              ADD       AL,30H
              MOV       NUMBER3[BX],AL
              INC       BX
              JMP       L0
;*******************************************




        OT1:
              PUSH      AX
        L01:
              POP       AX
              MOV       AL,0
              DEC       SI
              CMP       SI,-1
              JE        OV
              MOV       DL,NUMBER2[SI]

              AND       DL,0FH
              ADD       DL,AL

              MOV       CL,1
              MOV       AL,0
              SHR       DL,CL
              JNC       L11
              ADD       AL,1
        L11:
              SHR       DL,CL
              JNC       L21
              ADD       AL,2
        L21:
              SHR       DL,CL
              JNC       L31
              ADD       AL,4
        L31:
              SHR       DL,CL
              JNC       L41
              ADD       AL,8
        L41:
              SHR       DL,CL
              JNC       L51
              ADD       AL,16
        L51:
              ADD       AL,AH
              CMP       AL,10
              JB        L61
              SUB       AL,10
              MOV       AH,1
              JMP       L71
        L61:
              MOV       AH,0
    

        L71:
              PUSH      AX
              ADD       AL,30H
              MOV       NUMBER3[BX],AL
              INC       BX
              JMP       L01


;********************************************************


         OV:

              MOV       NUMBER3[BX],'$'
              MOV       SI,0
        AGA:
              DEC       BX
              CMP       BX,-1
              JE        OU
              MOV       AL,NUMBER3[BX]
              MOV       NUMBER4[SI],AL
              INC       SI
              JMP       AGA

         OU:
              MOV       NUMBER4[SI],'$'
              INC       SI

              MOV       BX,0
              MOV       DI,0
         CM:
              CMP       NUMBER4[BX],'0'
              JNE       CHUAN
              INC       BX
              JMP       CM


      CHUAN:
              MOV       AL,NUMBER4[BX]
              MOV       NUMBER3[DI],AL
              INC       BX
              INC       DI
              CMP       BX,SI
              JNE       CHUAN
;**********************************************
              MOV       AH,09H
              MOV       DX,OFFSET STR3
              INT       21H

              MOV       AH,09H
              MOV       DX,OFFSET NUMBER3
              INT       21H

              JMP       SSS
       OVER:
              MOV       AX,4C00H
              INT       21H


        CODE  ENDS
              END       START









⌨️ 快捷键说明

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