ïîëó÷àåì àäðåñ áóôåðà
MOV DX,CS:CHANNEL ;âûáîð êàíàëà
CMP CX,1 ;÷èòàòü 1 áàéò?
JA INPUT_WORD ;íåò - äàëüøå..
INPUT_BYTE:
IN AX,DX
TEST AH,7FH
JZ INPUT_BYTE
MOV ES:[DI],AL
JMP QUIT_INPUT
INPUT_WORD:
CMP CX,2
JA INPUT_BLOCK
IN AX,DX
MOV ES:[DI],AX
JMP QUIT_INPUT
INPUT_BLOCK:
IN AX,DX
TEST AH,7FH
JZ INPUT_BLOCK
MOV ES:[DI],AL
INC DI
LOOP INPUT_BLOCK
QUIT_INPUT:
POP ES
JMP QUIT
OUTPUT_DATA:
PUSH ES
LES DI,ES:[BX]+14 ; ïîëó÷àåì àäðåñ áóôåðà äàííûõ
MOV AX,ES:[DI]
MOV CS:CHANNEL,AX
POP ES
;---âûõîäèì, ìîäèôèöèðóÿ áàéò ñòàòóñà â çàãîëîâêå çàïðîñà
QUIT: OR ES:WORD PTR [BX]+3,100H ;óñòàíàâëèâàåì áèò 8
POPA ;âîññòàíàâëèâàåì ðåãèñòðû
POP DS
POP ES
RET
E_O_P: ;ìåòêà êîíöà ïðîãðàììû
ADC_DRV ENDP
CSEG ENDS
END ADC_DRV
Ñîäåðæàíèå Íàçàä Âïåðåä