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


         

ðåãèñòð AL. Çàòåì îíà âû÷èòàåò


    ðåãèñòð AL. Çàòåì îíà âû÷èòàåò çíà÷åíèå "0" â êîäå ASCII èç
    çíà÷åíèÿ äàííûõ, ÷òîáû ïîëó÷èòü öèôðîâîå çíà÷åíèå. Ýòî îçíà÷àåò,
    ÷òî ñèìâîë "0" äàåò çíà÷åíèå 0 â ðåãèñòðå AL, ñèìâîë "1" äàåò 1, è
    ò.ä. Êîìàíäà LDS çàãðóæàåò óêàçàòåëü íóæíîé òàáëèöû â ïàðó
    ðåãèñòðîâ DS:BX. Çàãðóæàÿ ýòîò óêàçàòåëü èç ÿ÷åéêè ïàìÿòè - â
            Microsoft (R) Macro Assembler Version 5.00              1/1/80 04:00:38
            Ôèã. 4.6 Ïðèìåð ïåðåêîäèðîâêè                     Page         1-1
 
 
                                          PAGE    ,132
                                          TITLE   Ôèã. 4.6 Ïðèìåð ïåðåêîäèðîâêè
             0000                   CODE    SEGMENT
                                          ASSUME  CS:CODE, DS:CODE
 
                                    ;       Ýòà ïðîãðàììà ââîäèò çíà÷åíèå èç ïîðòà 040H è
                                    ;       äåêîäèðóåò åãî, èñïîëüçóÿ òàáëèöó ïåðåêîäèðîâêè.
                                    ;       Òàê êàê îäíà è òà æå ïðîãðàììà èñïîëüçóåòñÿ êàê äëÿ
                                    ;       êîäèðîâêè, òàê è äåêîäèðîâêè, óêàçàòåëü TABLE_POINTER
                                    ;       óêàçûâàåò íà ñîîòâåòñâóþùóþ òàáëèöó ïåðåêîäèðîâêè.
                                    ;       Âûçûâàÿ ïîäïðîãðàììó, íåîáõîäèìî óñòàíîâèòü
                                    ;       ýòîò óêàçàòåëü íà ñîîòâåòñòâóþùóþ òàáëèöó.
 
             0000                   TRANSLATE       PROC    NEAR        ; Ïîäïðîãðàììà TRANSLATE
 
             0000  E4 40                        IN      AL,040H               ; Ââîä çíà÷åíèÿ èç ïîðòà
             0002  2C 30                        SUB     AL,"0"                  ; Çíà÷åíèå îòíîñèòåëüíî ñèìâîëà "0",
                                                                  ; ò.å. îòíîñèòåëüíî íà÷àëà òàáëèöû
             0004  C5 1E 000A R                 LDS     BX,TABLE_POINTER            ; (DS,BX) óêàçûâàåò íà òàáëèöó

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