Îäèí èç óïðàâëÿþùèõ áèòîâ ïîðòà
0019 74 06 JE MAIN_RETURN
001B E8 0022 R CALL PRINT ; Ïå÷àòü ñèìâîëà
001E 43 INC BX
001F EB F3 JMP PRINT_LOOP ; Ïåðåõîä ê ñëåäóþùåìó ñèìâîëó
0021 MAIN_RETURN:
0021 CB RET
0022 MAIN ENDP
;----- Ýòà ïîäïðîãðàììà ïå÷àòàåò ñèìâîë â ðåãèñòð AL
0022 PRINT PROC NEAR
0022 BA 0378 MOV DX, BASE ; Ïîðò âûâîäà äàííûõ íà ïðèíòåð
0025 EE OUT DX, AL ; Çàíåñåíèå ñèìâîëà â ïîðò âûâîäà íà ïðèíòåð
0026 42 INC DX ; Àäðåñ ïîðòà ñîñòîÿíèÿ ïðèíòåðà
0027 WAIT_BUSY:
0027 EC IN AL, DX ; Îïðîñ ñîñòîÿíèÿ ïðèíòåðà
0028 A8 80 TEST AL, 80H ; Ïðîâåðêà ðàçðÿäà çàíÿòîñòè ïðèíòåðà
002A 74 FB JZ WAIT_BUSY ; Öèêë äî îñâîáîæäåíèÿ ïðèíòåðà
002C 42 INC DX
002D B0 0D MOV AL, 0DH ; Óñòàíîâêà ðàçðÿäà ãîòîâíîñòè äàííûõ
002F EE OUT DX, AL
0030 B0 0C MOV AL, 0CH ; Ñáðîñ ðàçðÿäà ãîòîâíîñòè äàííûõ
0032 EE OUT DX, AL
0033 C3 RET
0034 PRINT ENDP
0034 CODE ENDS
END MAIN
Ôèã. 8.15 Âûâîä íà ïðèíòåð
Îäèí èç óïðàâëÿþùèõ áèòîâ ïîðòà 3BEH (èëè 37AH) óïðàâëÿåò
ëèíèåé ïðåðûâàíèÿ îò ïå÷àòàþùåãî óñòðîéñòâà. Äëÿ òîãî, ÷òîáû
ïå÷àòàþùåå óñòðîéñòâî ìîãëî ïîñûëàòü ñâîé ñèãíàë ïðåðûâàíèÿ â
êîíòðîëëåð 8259, ýòîò áèò íóæíî óñòàíîâèòü ðàâíûì 1. Îäíàêî àäàïòåð
ïå÷àòàþùåãî óñòðîéñòâà âûäàåò íåâåðíûé ñèãíàë ïðåðûâàíèÿ, ò.å.
âûáðàííûé äëÿ ýòîé öåëè ñèãíàë íå âûçûâàåò ïðàâèëüíîãî ïðåðûâàíèÿ.
Ïîýòîìó íå ñòîèò è ïûòàòüñÿ ïèñàòü ïðîãðàììó, êîòîðàÿ áû
èñïîëüçîâàëà âîçìîæíîñòè ïðåðûâàíèÿ îò àäàïòåðà ïå÷àòàþùåãî
óñòðîéñòâà (åñëè âû íå çàõîòèòå ôèçè÷åñêè èçìåíèòü ïëàòó
ïå÷àòàþùåãî óñòðîéñòâà). Äàëåå ìû ïðèâåäåì ïðèìåð, êîòîðûé îáõîäèò
ýòó ïðîáëåìó ñ ïîìîùüþ ñèñòåìíîãî òàéìåðà.
Ñîäåðæàíèå Íàçàä Âïåðåä