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

📄 daada.asm

📁 基于8086的一段汇编代码
💻 ASM
字号:
        DATA  SEGMENT
         NUM  DW        ?
        NUMX  DW        ?
        NUMY  DW        ?
      UFFER1  DB        0EEH,0DEH,0BEH,7EH,0EDH,0DDH,0BDH,7DH,0EBH,0DBH,0BBH,07BH,0E7H,0D7H,0B7H,77H

        SUB1  DB        ?
        MESS  DB        'ad,da    made by zhangbiao 08003108  ',0DH,0AH,'hengzuobiao='
       NUMXX  DW        ?
       MESS2  DB        0DH,0AH,'zongzuobiao='
       NUMYY  DW        ?
       MESS3  DB        ,'$'

      SINBUF  DB        128D,135D,141D,148D,155D,161D,167D,174D,180D,186D
              DB        192D,198D,203D,209D,214D,219D,223D,227D,231D,235D
              DB        239D,242D,245D,248D,250D,252D,253D,254D,255D
              DB        255D,254D,253D,252D,250D,248D,245D,242D,239D
              DB        235D,231D,227D,223D,219D,214D,209D,203D,198D,192D
              DB        186D,180D,174D,167D,161D,155D,148D,141D,135D,128D
              DB        121D,115D,108D,101D, 95D, 89D, 82D, 76D, 70D
              DB        64D, 58D, 53D, 47D, 42D, 37D, 33D, 29D, 25D, 21D
              DB        17D, 14D, 11D, 08D, 06D, 04D, 03D, 02D, 01D, 00D
              DB        00D, 01D, 02D, 03D, 04D, 06D, 08D, 11D, 14D, 17D
              DB        21D, 25D, 29D, 33D, 37D, 42D, 47D, 53D, 58D, 64D
              DB        70D, 76D, 82D, 89D, 95D,101D,108D,115D,121D

        DATA  ENDS
        CODE  SEGMENT
              ASSUME    CS:CODE,DS:DATA,ES:DATA
        
      START:
              MOV       AX,DATA
              MOV       DS,AX
              MOV       ES,AX
     LOOPER:
              CALL      CRTSET

              LEA       DX,MESS
              MOV       AH,09H
              INT       21H

              MOV       CX,0
              MOV       NUMX,1
              MOV       NUMY,5

              MOV       DL,0FFH
              MOV       AH,08H
              INT       21H
              CMP       AL,00H
              JE        LOOPER
              MOV       NUM,0
              CALL      CRTSET

              CMP       AL,31H
              JZ        IS44
              CMP       AL,35H
              JE        QUIT55
              JMP       LOOPER

   LOOPER03:  JMP       LOOPER

       IS44:  JMP       IS4         ;THE CODE IS TOO LONG
     QUIT55:  JMP       QUIT5



      QUIT5:  JMP       QUIT0

        IS4:
              MOV       NUM,0
              CALL      EDITNUMBER

              PUSH      AX          ;changde number into ascii
              MOV       AX,NUMX
              ADD       AX,30H
              MOV       NUMXX,AX
              MOV       AX,NUMY
              ADD       AX,30H
              MOV       NUMYY,AX
              POP       AX

              CALL      CRTSET

              LEA       DX,MESS
              MOV       AH,09H
              INT       21H
              JMP       IS41
       IS42:  MOV       CX,00H

       IS41:
       ;       MOV       AH,0BH
       ;       INT       21H
       ;       CMP       AL,0FFH
        ;      JE        LOOPER

              CMP       NUM, 630
              JG        IS4
              MOV       SI,CX
              MOV       AL,SINBUF[SI]

              MOV       AH,0        ;ax=zongzuobiao
              MOV       BX,NUMY
              MUL       BL
              MOV       BL,10
              DIV       BL
              MOV       DX,29CH
              OUT       DX,AL
              CALL      ADCDIS

              CALL      DELAY1
              INC       CX
              CMP       CX,116
              JZ        IS42
              JMP       IS41
      QUIT0:
              MOV       AH,4CH
              INT       21H


   LOOPER00:  JMP       LOOPER

  EDITNUMBER  PROC      NEAR
 ;             MOV       DX,298H
  ;            OUT       DX,AL
  ;            MOV       DX,298H
  ;            IN        AL,DX

  ;            CMP       AL,1H
  ;            JB        NUMX1
   ;           CMP       AL,11H
   ;           JB        NUMX2
   ;           CMP       AL,33H
   ;           JB        NUMX3
   ;           CMP       AL,44H
   ;           JB        NUMX4
   ;           CMP       AL,55H
   ;           JB        NUMX5
   ;           CMP       AL,0B9H
    ;          JB        NUMX6
    ;          MOV       NUMX,7
    ;;          RET
    ;  NUMX1:
    ;          MOV       NUMX,1
    ;          RET
    ;  NUMX2:
    ;          MOV       NUMX,2
    ;          RET
    ;  NUMX3:
    ;          MOV       NUMX,3
    ;          RET
    ;  NUMX4:
    ;          MOV       NUMX,4
     ;         RET
    ;  NUMX5:
    ;          MOV       NUMX,5
    ;          RET
   ;   NUMX6:
    ;          MOV       NUMX,6
    ;          RET
        ;---------------------------
              CALL      READ

              CMP       SUB1,0EEH
              JE        INCNUMX
              CMP       SUB1,0DEH
              JE        DECNUMX
              CMP       SUB1,0BEH
              JE        INCNUMY
              CMP       SUB1,7EH
              JE        DECNUMY

              MOV       DL,0FFH
              MOV       AH,06H
              INT       21H
              CMP       AL,'a'
              JE        INCNUMX
              CMP       AL,'b'
              JE        DECNUMX
              CMP       AL,'c'
              JE        INCNUMY
              CMP       AL,'d'
              JE        DECNUMY
              CMP       AL,35H
              JE        LOOPER00
              RET





    INCNUMX:
              INC       NUMX
              CMP       NUMX,9
              JNB       TOOBIG
              RET
    DECNUMX:
              DEC       NUMX
              CMP       NUMX,0
              JNA       TOOSMALL
              RET
    INCNUMY:
              INC       NUMY
              CMP       NUMY,10
              JNB       TOOHIGH
              RET
    DECNUMY:
              DEC       NUMY
              CMP       NUMY,1
              JB        TOOLOW
              RET
   TOOSMALL:  MOV       NUMX,1
              RET
    TOOHIGH:  MOV       NUMY,10
              RET
     TOOLOW:  MOV       NUMY,1
              RET
     TOOBIG:  MOV       NUMX,9
              RET
  EDITNUMBER  ENDP

 EDITNUMBER2  PROC      NEAR

 EDITNUMBER2  ENDP

      DELAY2  PROC      NEAR
              PUSH      CX
              MOV       CX,0F00H
      SUBER:  DEC       CX
              LOOP      SUBER
              POP       CX
              RET
      DELAY2  ENDP
      DELAY1  PROC      NEAR
              PUSH      AX
              PUSH      CX
              MOV       CX,5H       ;also can be change to test time
       DL21:  CALL      DELAY2
              LOOP      DL21
              POP       CX
              POP       AX
              RET
      DELAY1  ENDP

      CRTSET  PROC      NEAR
              PUSH      AX
              MOV       AH,0
              MOV       AL,06H
              INT       10H
              POP       AX
              RET
      CRTSET  ENDP

      ADCDIS  PROC      NEAR
        S12:  PUSH      DX
              PUSH      CX
              PUSH      AX
              PUSH      BX
              CALL      DELAY1
              XOR       AH,AH
              MOV       DL,160
              MUL       DL
              MOV       DL,255
              DIV       DL
              XOR       AH,AH
              MOV       DX,AX
              MOV       AX,160
              SUB       AX,DX
              ADD       AX,20
              MOV       DX,AX
              MOV       AX,NUM
              MOV       BX,AX
              MOV       CX,BX
              MOV       AH,0CH
              MOV       AL,1
              INT       10H
              ADD       BX,NUMX
              MOV       NUM,BX
              CMP       BX,640
              JNZ       DISEND
              MOV       BX,00H
              MOV       NUM,BX
     DISEND:  POP       BX
              POP       AX
              POP       CX
              POP       DX
              RET
      ADCDIS  ENDP

        READ  PROC      NEAR        ;read little keyborad
              PUSH      AX
              PUSH      DX
              PUSH      CX
              MOV       DX,283H
              MOV       AL,10010011B
              OUT       DX,AL
              MOV       DX,282H
              MOV       AL,0H
              OUT       DX,AL
              MOV       DX,282H
              IN        AL,DX
              AND       AL,0FH
              CMP       AL,0FH
              JZ        QUITREADKEYBORAD
              CALL      DELAY1
              IN        AL,DX
              AND       AL,0FH
              CMP       AL,0FH
              JZ        QUITREADKEYBORAD
              MOV       CL,AL
              MOV       DX,283H
              MOV       AL,10011010B
              OUT       DX,AL
              MOV       DX,282H
              MOV       AL,0H
              OUT       DX,AL
              MOV       DX,282H
              IN        AL,DX
              AND       AL,0F0H
              ADD       CL,AL
              MOV       SUB1,CL
              JMP       ALREADYREADKEYBORAD
       QUITREADKEYBORAD:  MOV       SUB1,0
    ALREADYREADKEYBORAD:  POP       CX
              POP       DX
              POP       AX
              RET
        READ  ENDP
        CODE  ENDS
              END       START

⌨️ 快捷键说明

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