BPC-MIC04 - Adresovací módy, podprogramy
Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu PDF.
operandu.
• V některých módech je indexový registr
automaticky inkrementován po přístupu k
operandu.
Indexed, No Offset (IX)
• Jako adresa operandu je použit obsah páru
indexových registrů H:X.
• LDA ,X
; Do A se uloží obsah bytu, jehož 16-ti
; bitová adresa je v H:X
Indexed, No Offset with Post
Increment (IX+)
• Jako adresa operandu je použit obsah páru
indexových registrů H:X
• Následně je registrový pár H:X inkrementován
o 1.
• Používají pouze instrukce CBEQ a MOV.
• CBEQ ,X+ ,N1
; IX+/REL
• MOV
$61, X+
; DIR/IX+
Indexed, No Offset with Post
Increment (IX+)
• Příklad – hledání mezery v řetězci znaků
buf:
ds.b 10
…………
ldhx #buf
; do H:X pole adresu buf
lda
#’ ‘
; hledáme znak mezera
loop:
cbeq ,x+,endloop ; mezera ?
bra
loop
; H:X ukazuje za mezeru
endloop:
aix
#-1
; zpět na mezeru
Indexed, 8-Bit Offset (IX1)
LDA 2,X
• Adresa operandu je vytvořena přičtením 8-
bitového offsetu (bez znaménka), který je
součástí instrukce, k obsahu páru indexových
registrů H:X.
• Obsah H:X se nemění.
Indexed, 8-Bit Offset with Post
Increment (IX1+)
• Adresa operandu je vytvořena přičtením offsetu
(bez znaménka) k obsahu páru indexových
registrů H:X.
• 8-mi bitový offset je součástí instrukce.
• Po přístupu k operandu je obsah registrového
páru H:X inkrementován o 1.
• Pouze instrukce CBEQ.
• CBEQ 20,X+,N1 ; IX+/REL
Indexed, 16-Bit Offset (IX2)
• Adresa operandu je vytvořena přičtením,
offsetu k obsahu páru indexových registrů H:X.
• 16-bitový offset je součástí instrukce.
• LDA
1000,X
Stack Pointer Addressing
• Varianta indexového adresování, kde jako
indexový registr je použit SP.
• Nejčastěji se používají pro přístup k
parametrům funkcí a lokálním proměnným na
zásobníku.
• Využívají překladače jazyka C.
SP-Relative, 8Bit Offset (SP1)
• Adresa operandu je vytvořena přičtením 8-
bitového offsetu (bez znaménka), který je
součástí instrukce, k obsahu SP.
• Obsah SP není změněn.
Příklad použití módu SP1
ais
#-3
; vytvoření místa pro 3 byty
; sp+1 místo pro proměnnou o vel. 1 byte
; sp+2:sp+3 místo pro proměnnou typu int
; o velikosti 2 byty