Ðàçðàáîòêà áëîêà ÀÖÏ


         

ïîëó÷àåì àäðåñ áóôåðà


       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

Ñîäåðæàíèå  Íàçàä  Âïåðåä