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

Ïðèíöèïû ðàáîòû êîìïüþòåðà


    Íèæå îïèñàíû íåêîòîðûå îñíîâíûå ïðèíöèïû ðàáîòû êîìïüþòåðà.  Ýòè
    ïðèíöèïû âàæíû äëÿ ïîíèìàíèÿ 8088 è åãî ðàáîòû.  Âñå, ÷òî ãîâîðèòñÿ
    â ýòîì ðàçäåëå, âåðíî è äëÿ äðóãèõ êîìïüþòåîâ.  Â ñîîòâåòñòâóþùèõ
    ìåñòàõ ìû áóäåì ñïåöèàëüíî îãîâàðèâàòüñÿ, ÷òî ðå÷ü èäåò îá Intel
    8088, õîòÿ îñíîâíàÿ ÷àñòü ñâåäåíèé, îòíîñÿùèõñÿ òîëüêî ê 8088,
    ïîÿâèòñÿ â ñëåäóþùåé ãëàâå.
 
      Ðàáîòà êîìïüþòåðà ñîñòîèò â âûáîðêå êîìàíä èç ïàìÿòè è èõ
    âûïîëíåíèè.  Êàæäàÿ êîìàíäà ïðîõîäèò ÷åðåç ýòîò äâóõøàãîâûé
    ïðîöåññ.  Âûáîðêîé î÷åðåäíîé ïîðöèè â ýòîì öèêëå óïðàâëÿåò îäèí èç
    ðåãèñòðîâ ïðîöåññîðà.  Ýòîò ðåãèñòð íàçûâàþò ñ÷åò÷èêîì ïðîãðàììû
    èëè óêàçàòåëåì êîìàíäû.  Îí ÿâëÿåòñÿ "ìàðêåðîì" òåêóùåé


    âûïîëíÿåìîé êîìàíäû.  Òî ìåñòî â ïàìÿòè, íà êîòîðîå óêàçûâàåò ýòîò
    ðåãèñòð, ñîäåðæèò ñëåäóþùóþ êîìàíäó, êîòîðóþ äîëæåí áóäåò âûáðàòü è
    âûïîëíèòü ïðîöåññîð.  Ïðîöåññîð ÷èòàåò â ýòîì ìåñòå îäèí èëè
    íåñêîëüêî áàéòîâ, èíòåðïðåòèðóåò èõ êàê êîìíäó è âûïîëíÿåò åå.
    Çàòåì ïðîöåññîð óâåëè÷èâàåò óêàçàòåëü â ñîîòâåòñòâèè ñ ÷èñëîì
    áàéòîâ â êîìàíäå.  Òåïåðü ñ÷åò÷èê ïðîãðàììû óêàçûâàåò íà ñëåäóþùóþ
    êîìàíäó.  Ýòîò öèêë ïîâòîðÿåòñÿ äëÿ âñåõ áåç èñêëþ÷åíèÿ êîìàíä.
    Íîðìàëüíîå âûïîëíåíèå ïðîãðàììû ÿâëÿåòñÿ ïîñëåäîâàòåëüíûì, îò îäíîé
    êîìàíäû ê äðóãîé, ðàñïîëîæåííîé ñëåäîì.
 
      Ïðîöåññîð ìîæåò èçìåíèòü ïîñëåäîâàòåëüíûé öèêë âûáîðêè-èñïîëíå-
    íèÿ ïðè âûïîëíåíèè êîìàíäû, êîòîðàÿ ïîìåùàåò â óêàçàòåëü êîìàíä íî-
    âîå çíà÷åíèå.  Òàêèå êîìàíäû ÿâëÿþòñÿ êîìàíäàìè ïåðåäà÷è
    óïðàâëåíèÿ, ïîñêîëüêó âûïîëíåíèå ïðîãðàììû ïåðåõîäèò â íîâóþ
    îáëàñòü.  Èíñòðóêöèÿ ïåðåõîäà èëè âûáîðà âàðèàíòà ÿâëÿåòñÿ ñàìûì
    ðàñïðîñòðàíåííûì ñïîñîáîì ïåðåäà÷è óïðàâëåíèÿ.  Êîìàíäà ïåðåõîäà
    çàäàåò àäðåñ êîìàíäû, êîòîðàÿ äîëæíà âûïîëíÿòüñÿ ñëåäóþùåé.  Öèêë â
    ïðîãðàììå ÿâëÿåòñÿ ïðèìåðîì èñïîëüçîâàíèÿ êîìàíäû ïåðåõîäà.  Ïðèìåð
    íà Ôèã.  2.16 íà ÿçûêå àññåìáëåðà 8088 ïîêàçûâàåò ñîõðàíåíèå îäíîãî
    è òîãî æå çíà÷åíèÿ â ïîñëåäîâàòåëüíûõ áàéòàõ ïàìÿòè.  Êîìàíäà

ààà ÿõ¨õ¿þôð ò úþý¡õ ¡øúûð ÿ¨øòþôøª ú ÿþòªþ¨ýþüº òvÿþûýõýø¦ õóþ úþüðýô.
ààààà ààààà Microsoft (R) Macro Assembler Version 5.00ààààààààààà à 11/2/88 21:30:42
ààààà ààààà Løó. 2.16 ¦þüðýôð ÿõ¨õ¿þôðààààààààààààààààààààà à Pageààààà àà 1-1
 
 
ààààààààààà àààà 1ààààààààààààààààààààààààààààà ààààà PAGEààà ,132
ààààààààààà àààà 2ààààààààààààààààààààààààààààà ààààà TITLEàà Løó. 2.16 ¦þüðýôð ÿõ¨õ¿þôð
ààààààààààà àààà 3 0000àààààààààààà ààààà CODEààà SEGMENT
ààààààààààà àààà 4ààààààààààààààààààààààààààààà ààààà ASSUMEà CS:CODE
ààààààààààà àààà 5
ààààààààààà àààà 6 0000àààààààààààà ààààà MEMàààà LABELàà BYTE
ààààààààààà àààà 7
ààààààààààà àààà 8 0000àààààààààààà ààààà FIG2_16:
ààààààààààà àààà 9 0000à 2E: C6 87 0000 R 00ààà ààààà MOVàààà MEM[BX],0
ààààààààààà ààà 10 0006à 43 ààààààààààààà ààààààINCàààà BX
ààààààààààà ààà 11 0007à EB F7ààààààààààààààààà ààààà JMPàààà FIG2_16
ààààààààààà ààà 12
ààààààààààà ààà 13 0009àààààààààààà ààààà CODEààà ENDS
ààààààààààà ààà 14ààààààààààààààààààààààààààààà ààààà END
 
 
ààààààààààààààààààààààààààààà ààààà Løó. 2.16 ¦þüðýôð ÿõ¨õ¿þôð
 
ààààà +ñ¨ðªøªõ òýøüðýøõ, ¢ªþ ò úþüðýôõ JMP ôû  þÿ¨õôõûõýø  ¸ûõ-
ààà ôº¦•õóþ òvÿþûý õüþóþ ðô¨õ¸ð ø¸ÿþû¹÷ºõª¸  üõªúð, ò ôðýýþü ¸ûº¢ðõ
ààà "FIG2_16".à ¦ªþ - õ•õ þôýð ø÷ òþ÷üþöýþ¸ªõù ð¸¸õüñûõ¨ð.à -þª  ò
ààà üð°øýýþü  ÷vúõ ª¨õñºõª¸  ðñ¸þû¦ªývù ðô¨õ¸ ¸ûõôº¦•õù úþüðýôv,  ÷vú
ààà ð¸¸õüñûõ¨ð ª¨õñºõª ûø°¹ ÿ¨þó¨ðüüýþ þÿ¨õôõûõýýº¦ üõªúº.à L¸¸õüñûõ¨
ààà ¸ðü þÿ¨õôõû õª ðñ¸þû¦ªývù ðô¨õ¸ ø ¸ªðòøª ÿ¨ðòøû¹ýþõ ÷ýð¢õýøõ ò
ààà úþüðýôº üð°øýýþóþ  ÷vúð.
 
ààààà ¦þüðýôð ÿõ¨õ¿þôð ýõ þñ ÷ðªõû¹ýþ ôþûöýð ñvª¹ ñõ÷º¸ûþòýþù úðú ò
ààà ÿ¨øòõôõýýþü ÿ¨øüõ¨õ.à 8088 ¨ð¸ÿþûðóðõª üýþö¸ªòþü úþüðýô ÿõ¨õ¿þôð,
ààà úþªþ¨võ òvÿþûý ¦ª¸  ò ¸þþªòõª¸ªòøø ¸ ýõúþªþ¨vü úþôþü º¸ûþòø .
ààà ¦ýð¢õýøõ úþô𠺸ûþòø  º¸ªðýðòûøò𦪠ô¨ºóøõ úþüðýôv ÿ¨ø ø¿
ààà òvÿþûýõýøø ÿ¨þ¡õ¸¸þ¨þü.à L¸ûþòøõ, ºúð÷ðýýþõ ò úþüðýôõ º¸ûþòýþóþ
ààà ÿõ¨õ¿þôð, ¸¨ðòýøòðõª¸  ¸ úþôþü º¸ûþòø , ¸þ¿¨ðýõýýþóþ ò ¨õóø¸ª¨õ
ààà ¸þ¸ªþ ýøù.ààà +¸ûø º¸ûþòø  ¸þòÿðôð¦ª, ªþ ÿ¨þ¡õ¸¸þ¨ ÿõ¨õ¿þôøª ÿþ


ààà ºúð÷ðýýþüº ðô¨õ¸º.à T ÿ¨þªøòýþü ¸ûº¢ðõ ÿ¨þ¡õ¸¸þ¨ øóýþ¨ø¨ºõª
ààà ÿõ¨õ¿þô, ø òvÿþûýõýøõ ÿ¨þó¨ðüüv ÿ¨þôþûöðõª¸  ò þñv¢ýþü
ààà ÿþ¸ûõôþòðªõû¹ýþü ÿþ¨ ôúõ.à =ð Løó.ààà 2.17 ÿ¨õôvôº•øù ÿ¨øüõ¨ ø÷üõýõý.
ààà ãøúû ò ¤ªþü ÿ¨øüõ¨õ ÿ¨õ¨vòðõª¸ , úþóôð ÷ýð¢õýøõ BX ¸ªðýþòøª¸ 
ààà ¨ðòývü 1000.
 
ààààà =ð Løó.à 2.17 ÿþ òû õª¸  ýþòð  úþüðýô𠸨ðòýõýø , úþªþ¨ð 
ààà º¸ªðýðòûøòðõª úþôv ¸þ¸ªþ ýø .à ¦þüðýô𠺸ûþòýþóþ ÿõ¨õ¿þôð (JNE
ààà (Jump if Not Equal) ÿõ¨õ¿þô, õ¸ûø ýõ ¨ðòýv) òvÿþûý õª ÿõ¨õ¿þô ýð
ààà "FIG2_17", õ¸ûø º¸ûþòøõ òvÿþûýõýþ.à +¸ûø º¸ûþòøõ ýõ òvÿþûý õª¸ ,
ààà 8088 òvÿþûý õª úþüðýôº, ¸ûõôº¦•º¦ ÷𠺸ûþòývü ÿõ¨õ¿þôþü, ò ôðýýþü
ààà ¸ûº¢ðõ úþüðýôº NOP.à ¦þüðýô𠺸ûþòýþóþ ÿõ¨õ¿þôð ÿþ÷òþû õª ÿ¨þòõ¨øª¹
ààààà àààààà Microsoft (R) Macro Assembler Version 5.00àààààààààà àà 11/2/88 22:31:33
ààààà àààààà Løó. 2.17 ¦þüðýô𠺸ûþòýþóþ ÿõ¨õ¿þôðàààààààààààààààà àà Pageàààà 1-1
 
 
ààààààààààà ààààà 1 ààààààààààààààààààààà àààààààPAGEààà ,132
ààààààààààà ààààà 2 ààààààààààààààààààààà àààààààTITLEàà Løó. 2.17 ¦þüðýô𠺸ûþòýþóþ ÿõ¨õ¿þôð
ààààààààààà ààààà 3 0000ààààààààààààààààà àààààà CODEààà SEGMENT
ààààààààààà ààààà 4 ààààààààààààààààààààà àààààààASSUMEà CS:CODE
ààààààààààà ààààà 5
ààààààààààà ààààà 6 0000ààààààààààààààààà àààààà MEMàààà LABELàà BYTE
ààààààààààà ààààà 7
ààààààààààà ààààà 8 0000ààààààààààààààààà àààààà FIG2_17:
ààààààààààà ààààà 9 0000à 2E: C6 87 0000 R 00àà àààààà MOVàààà MEM[BX],0
ààààààààààà àààà 10 0006à 43ààààààààààààà àààààà INCàààà BX
ààààààààààà àààà 11 0007à 81 FB 03E8ààààààààààà àààààà CMPàààà BX,1000
ààààààààààà àààà 12 000Bà EB F3àààààààààààààààà àààààà JMPàààà FIG2_17
ààààààààààà àààà 13
ààààààààààà àààà 14 000Dààààààààààààààààà àààààà CODEààà ENDS
ààààààààààà àààà 15 ààààààààààààààààààààà àààààààEND
 
 
ààààààààààààààààààààààà àààààà Løó. 2.17 ¦þüðýô𠺸ûþòýþóþ ÿõ¨õ¿þôð
 
ààà ÷ýð¢õýø  ôðýýv¿ ò ÿ¨þ¡õ¸¸õ òvÿþûýõýø  ÿ¨þó¨ðüüv.à -þô òvÿþûýõýø 
ààà ÿ¨þó¨ðüüv üþöõª üõý ª¹¸  ò ÷ðòø¸øüþ¸ªø þª ¨õ÷ºû¹ªðªþò ¤ªþù
ààà ÿ¨þòõ¨úø.

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