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

📄 int-60h.asm

📁 题目:抢答器控制模拟程序设计 任务: 用汇编语言模拟设计一抢答器工作的程序。
💻 ASM
字号:
DATA    SEGMENT
OFF_0   DW       ?                  ;中断向量偏移地址
SEG_0   DW       ?                  ;中断向量段地址
MASK_I  DB       ?                  ;系统原始中断屏蔽字
TN      DB       0                  ;延时常数,已给定,1秒为18次
bcd1    db       1
OK      DB  'How are you?$',0DH,0AH
DATA    ENDS
STACK   SEGMENT
        DW  50 DUP(0)
STACK   ENDS
CODE    SEGMENT
        ASSUME  CS:CODE,DS:DATA,SS:stack
start:  MOV     AX,DATA         ;Initial 
        MOV     DS,AX
        MOV     AX,STACK
        MOV     SS,AX            
        MOV     AX,50
        MOV     SP,AX                
       ;取原IR0中断向量
        MOV     AX,3560H       ;取原中断向量
        INT     21H
        MOV     SEG_0,ES       ;保存原中断向量
        MOV     OFF_0,BX
       ;设置新中断向量
        CLI
        PUSH    DS
        MOV     DX,OFFSET NEWINT
        MOV     AX,SEG NEWINT 
        MOV     DS,AX
        MOV     AH,25H
        MOV     AL,60H 
        INT     21H
        POP     DS
        STI
        mov     DX,offset OK
        MOV     AH,09H
        INT     21H      
   W1:  INT     60H
        MOV      AH,0BH          ;有键按下?
        INT      21H
        CMP      AL,00H          ;无键按下,转W1,否则,调用1S延时子程序 
        JZ       W1     
        MOV      AH,08H          ;有键,读键值AL
        INT      21H
        CMP      AL,1BH          ;是ESC键?
        JNZ      W1             ;是,退出,否,转W1                  
      ;恢复原中断
            MOV     DX,OFF_0
            PUSH    DS
            MOV     DS,SEG_0
            MOV     AX,2560H
            INT     21H
            POP     DS            
            MOV     AX,4C00H              ;返回DOS
            INT     21H             
;----------------------------
        ;新中断服务程序
        NEWINT PROC  FAR                   ;新IRQ0中服程序
                  PUSH  AX              ;保护现场
                  PUSH  BX
                      
            MOV     AH,00H
            INT     1AH          ;读计时单位(=55ms),        
            ADD     DX,18         
            MOV     BX,DX
            MOV     AH,00H
            INT     1AH
            CMP     BX,DX          ;满1秒?,否,继续累计
            JNZ     L1
            MOV     DL,'1'
            MOV     AH,2
            INT     21H
            
     L1:    POP    BX
            POP    AX   
                  IRET 
      NEWINT      ENDP  
;--------------------------------
   DISP    PROC      NEAR               ;入口:BCD1=DL=字符
             PUSH    AX 
             MOV     DL,BCD1        
             MOV     AH,02H            ;DOS调用,显示一个字符
             INT     21H        
             INC     BCD1
             CMP     BCD1,'9'
             JBE      EXIT 
             MOV     BCD1,'0'
             MOV     DL,0DH
             INT     21H
             MOV     DL,0AH
             INT     21H
     EXIT:   POP     AX
             RET 
     DISP    ENDP  
    CODE    ENDS
            END START





⌨️ 快捷键说明

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