У меня есть задание, которое говорит: внедрить ISR, чтобы получить символ с клавиатуры и сохранить его в очереди, когда он будет сохранен, напечатать его на принтере.
Я написал прерывание клавиатуры, как показано ниже , но я не могу понять, как отправить символ на принтер .. любая помощь?
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;keyboard interrupt service routine
PORTA EQU 500H
CNTR EQU 506H
FIFO DB 256 DUP(?) ;queue
INP DD FIFO ;input pointer
OUTP DD FIFO ;output pointer
KEY PROC FAR USES EAX EBX EDX EDI
MOV EBX,CS:INP ;get pointers
MOV EDI,CS:OUTP
INC BL
.IF BX == DI ;if full
MOV AL,8
MOV DX,CNTR
OUT DX,AL ;disable 82C55 interrupt
.ELSE ;if not full
DEC BL
MOV DX,PORTA
IN AL,DX ;read key code
MOV CS:[BX],AL ;save in queue
INC BYTE PTR CS:INP
.ENDIF
IRET
KEY ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;reading a char from fifo
READQ PROC FAR USES EBX EDI EDX
.REPEAT
MOV EBX,CS:INP ;get pointers
MOV EDI,CS:OUTP
.UNTIL EBX != EDI ;while empty
MOV AH,CS:[EDI] ;get data
MOV AL,9
MOV DX,CNTR
OUT DX,AL ;enable 82C55 interrupt
INC BYTE PTR CS:OUTP
RET
READQ ENDP