响铃.asm

来自「三个简单的基本汇编程序分别实现:双精度加法」· 汇编 代码 · 共 88 行

ASM
88
字号
       DATAS  SEGMENT
         BUF  DB        'PIEASE INPUT A NUMBER:$'
       DATAS  ENDS

       CODES  SEGMENT
              ASSUME    CS:CODES,DS:DATAS
      START:
              MOV       AX,DATAS
              MOV       DS,AX
              JMP       STR
       ERR1:  CALL      ERR
        STR:  MOV       AH,01H
              INT       21H
 
              CMP       AL,0DH
              JE        EXIT
              CMP       AL,20H
              JE        EXIT
 
              CMP       AL,31H
              JB        ERR1
              CMP       AL,39H
              JA        ERR1
 
              XOR       CX,CX
              AND       AL,0FH
              MOV       CL,AL
 
      LOOP1:  CALL      DELY
              CALL      RING
              LOOP      LOOP1
    
       EXIT:  MOV       AH,4CH
              INT       21H

        CLR:  PUSH      AX
              PUSH      BX
              PUSH      DX
              MOV       AH,2
              MOV       BH,0
              MOV       DH,0
              MOV       DL,0
              INT       10H
              POP       DX
              POP       BX
              POP       AX
              RET
 
        ERR:  CALL      CLR
              PUSH      AX          ;错误显示
              PUSH      DX
              LEA       DX,BUF
              MOV       AH,09H
              INT       21H
              POP       DX
              POP       AX
              RET
      
       RING:  PUSH      AX          ;响铃一次
              PUSH      DX
              MOV       AH,02H
              MOV       DL,07H
              INT       21H
              POP       DX
              POP       AX
              RET
       
       DELY:  PUSH      AX          ;延时程序
              PUSH      BX
              PUSH      CX
              PUSH      DX
              MOV       AH,2CH
              INT       21H
              MOV       BL,DH
              INC       BL
      DELY1:  MOV       AH,2CH
              INT       21H
              CMP       BL,DH
              JNZ       DELY1
              POP       DX
              POP       CX
              POP       BX
              POP       AX
              RET

       CODES  ENDS
              END       START

⌨️ 快捷键说明

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