Priame adresovanie | Nepriame adresovanie | Bázové adresovanie
Indexové adresovanie | Bázové-Indexové adresovanie
Poznáme niekoľko spôsobov adresovania. Jednotlivé možnosti si ukážeme pomocou inštrukcie MOV. Táto inštrukcia má dva operandy, označované ako cieľ a zdroj. Tieto operandy môžu byť registre, pamäťové miesta alebo konštanty (číselné hodnoty).
Napríklad.:
MOV AX,2222H
- po vykonaní inštrukcie bude register AX obsahovať hodnotu 2222H.Na miesto v pamäti sa pri zápise inštrukcií odkazujeme tým spôsobom, že offsetovú časť adresy zapíšeme do hranatých zátvoriek (napr.: MOV AX,[1234h]).
PRIAME ADRESOVANIE
Je to najjednoduchší spôsob adresovania. Operand inštrukcie tvorí pr
iamo offsetová adresa. Napr.: MOV AX,[00FFh]. Čiže z adresy 00FFh sa vyberie hodnota a uloží sa do registra AX. Častejší prípad je taký, že adresa je nahradená návestím.Napríklad:
FARBA DB 7Takto to vyzerá v zdrojovom súbore, po preklade súboru Turbo Assemblerom sa návestie FARBA nahradí konkrétnou adresou.
NEPRIAME ADRESOVANIE
Offsetová časť adresy je určená obsahom niektorého z registrov SI, DI, BX, BP. Napr.: MOV BX,[DI] alebo MOV BL,AL. Z offsetu adresy danéj obsahom registra DI sa načíta hodnota do registra BX. Druhý prípad znázorňuje presun medzi registrami. Hodnota, ktorá je uložená v registri AL sa presunie do registra BL, pričom obsah registra AL sa nezmení.
BÁZOVÉ ADRESOVANIE
Využíva pre vytvorenie offsetovej adresy, ktorá obsahuje bázové registre BP, BX a konštantu. Offsetová adresa je daná súčtom obsahu bázového registra a konštanty. Používa sa pri adresovaní pevnéj dátovéj štruktúry (napr.: poľa).
Príklad: MOV AX,[BX+N]
V tomto prípade bázový register ukazuje na začiatok poľa a pomocou konštanty N sa pohybujeme po jednotlivých prvkoch.
Napríklad: MOV AX,[BX+00]
INDEXOVÉ ADRESOVANIE
Je podobné ako bázové adresovanie s tým rozdielom, že namiesto bázových registrov sa používajú indexové registre SI a DI. Tento spôsob adresovania sa používa pri dátových štruktúrach ako pole, reťazce a pod..
Príklad: MOV AX,[POLE+DI]Konštanta POLE predstavuje offsetovú adresu začiatku poľa a indexový register ukazuje na konkrétny prvok poľa.
Ide o kombináciu predchádzajúcich dvoch spôsobov adresovania. Offsetová časť adresy je tvorená súčtom obsahu bázového registra (BX,BP), indexového registra (SI,DI) a konštanty. Tento typ adresovania sa používa pre adresovanie prvkov dynamického poľa.
Príklad: MOV AX,[BX+SI+N]
Register AX sa naplní obsahom položky N štruktúry, ktorá je prvkom poľa určeného registrom SI, pričom začiatok tohto poľa je na adrese určenéj bázovým registrom BX.
Príklad: MOV CX,[BX+SI]
V registri BX je začiatok dynamickeho poľa a v registri SI je adresa prvku v dynamickej oblasti. MOV BL,[BX][SI] - tento zápis je ekvivaletný tomu predchádzajúcemu.