Assembler äëÿ íà÷èíàþùèõ


         

Îäèí èç óïðàâëÿþùèõ áèòîâ ïîðòà


              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. Îäíàêî àäàïòåð
    ïå÷àòàþùåãî óñòðîéñòâà âûäàåò íåâåðíûé ñèãíàë ïðåðûâàíèÿ, ò.å.
    âûáðàííûé äëÿ ýòîé öåëè ñèãíàë íå âûçûâàåò ïðàâèëüíîãî ïðåðûâàíèÿ.
    Ïîýòîìó íå ñòîèò è ïûòàòüñÿ ïèñàòü ïðîãðàììó, êîòîðàÿ áû
    èñïîëüçîâàëà âîçìîæíîñòè ïðåðûâàíèÿ îò àäàïòåðà ïå÷àòàþùåãî
    óñòðîéñòâà (åñëè âû íå çàõîòèòå ôèçè÷åñêè èçìåíèòü ïëàòó
    ïå÷àòàþùåãî óñòðîéñòâà). Äàëåå ìû ïðèâåäåì ïðèìåð, êîòîðûé îáõîäèò
    ýòó ïðîáëåìó ñ ïîìîùüþ ñèñòåìíîãî òàéìåðà.

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