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


         

Àäàïòåð óïðàâëåíèÿ èãðàìè - ÷àñòü 3


              0026      D0 E8                   SHR  AL, 1            ; Äåëåíèå íà 16
              0028      B4 A0                   MOV  AH, 160
              002A      F6 E4                   MUL  AH         ; Ïðåîáðàçîâàíèå â ñìåùåíèå â áóôåðå
              002C      03 D8                   ADD  BX, AX
              002E      88 2F                   MOV  [BX], CH   ; Ñîõðàíåíèå ñèìâîëà
              0030      EC                      IN   AL, DX
              0031      24 10                   AND  AL, 10H
              0033      3A C1                   CMP  AL, CL
              0035      74 D9                   JE   WRITE_LOOP
              0037      8A C8                   MOV  CL, AL
              0039      80 F9 10                CMP  CL, 10H
              003C      75 D2                   JNE  WRITE_LOOP
              003E      FE C5                   INC  CH         ; Ñëåäóþùèé ñèìâîë
              0040      EB CE                   JMP  WRITE_LOOP
 
              0042                        GAME_CONTROL     ENDP
 
                                     ;-----  Â AH áèò ìàñêè
 
              0042                        POSITION   PROC NEAR
              0042      51                      PUSH CX
              0043      2B C9                   SUB  CX, CX      ; Íà÷àëüíîå çíà÷åíèå äëÿ öèêëà ââîäà
              0045      EE                      OUT  DX, AL      ; Çàïóñê òàéìåðà
              0046                        POS_LOOP:
              0046      EC                      IN   AL, DX
              0047      84 C4                   TEST AL, AH
              0049      E0 FB                   LOOPNE  POS_LOOP ; Öèêë ïîêà 1 - òàéìåð íå çàêîí÷èë îòñ÷åò
              004B      B8 0000                  MOV  AX, 0
              004E      2B C1                   SUB  AX, CX      ; Îïðåäåëåíèå çíà÷åíèÿ ñ÷åò÷èêà
              0050      59                      POP  CX         ;  â äèàïàçîíå 0-255
              0051      C3                      RET
              0052                        POSITION   ENDP
              0052                        CODE ENDS
                                           END
 
                Ôèã. 8.18 Àäàïòåð óïðàâëåíèÿ èãðàìè (ïðîäîëæåíèå)
 
      Ïîñëåäíÿÿ ÷àñòü ïðîãðàììû íà Ôèã. 8.18 áåðåò ïîçèöèþ X-Y,
    îïðåäåëåííóþ ïî âõîäó îò äæîéñòèêà, è çàïèñûâàåò ñèìâîë â
    ñîîòâåòñòâóþùóþ ïîçèöèþ äèñïëåÿ. Àäàïòåð óïðàâëåíèÿ èãðàìè òàêæå
    äîïóñêàåò ÷åòûðå ïåðåêëþ÷àþùèõ ââîäà, çíà÷åíèÿ êîòîðûõ ìîæíî
    ïðî÷èòàòü â ñòàðøèõ ÷åòûðåõ áèòàõ ïîðòà 201H. Ïðîãðàììà â ïðèìåðå
    îïðàøèâàåò îäèí èç ýòèõ áèòîâ ïåðåêëþ÷åíèÿ, ÷òîáû ïåðåéòè îò îäíîãî
    ñèìâîëà ê äðóãîìó è âûâåñòè åãî íà ýêðàí.



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