Skoči na vsebino

Vaje 2021 10 28

Nacini naslavljanja

1. posredno bazno naslavljanje brez odmika

Dostop do operanda je v dveh korakih.

    1. korak; Nalozimo naslov operanda v bazni register\
          ADR R0, OZNAKA @ R0 <- naslov od oznaka
              @ `- bazni register
          (SUB, R0, PC, #2C) @ 
      
    1. korak; dostop do operanda (load / store)
          LDR R1, [R0] @ R1 <- MEM32[R0]
                  @ `- iz naslova
          STR R1, [R0] @ R1 -> MEM32[R0]
      

Primer

STEV1: .WORD 0x11
STEV2: .WORD 0x22

ADR R0, STEV1
LDR R1, [R0]

ADR R0, STEV2
LDR R2, [R0]
| | | |---|---| | STEV1 | 0x11 | | | 00 | | | 00 | | | 00 | | STEV2 | 0x22 | | | 00 | | | 00 | | | 00 |

Operandi

Operand direktiva load store poravnanost
32b .WORD LDR STR Naslov deljiv s 4
16b .HWORD LDRH
LDRSH
STRH Naslov deljiv z 2
8b .BYTE LDRB
LDRSB
STRB

Primer za LDRH (nepredznaceno) |msb| | |lsb| |---|---|---|---| | 00.. ..00 | 00.. ..00 | 0xBB | AA |

0xAA N
0xBB N+1

Primer za LDRSH (predznaceno) |msb| | |lsb| |---|---|---|---| | 00.. ..00 | 00.. ..00 | 0xBB | AA |

0xBB === 1011

2. Posredno - bazno nastavljanje s takojsnjim odmikom

  1. Enak kot pri prejsnjem nacinu
  2. Dostop do operanda z odmikom
LDR R1,[R0, #4]  @ R1 -> MEM32 [R0 + 4]
STR R1,[R0, #-4] @ R1 -> MEM32 [R0 + (-4)]
                 @              R0 - 4

3. Nakojsnje naslavljanje

Operand je v ukazu

@         ,- konstanta
MOV R1, #128    @ R1 <- 128
@       `- takojsnji operand
ADD R2, R2, #1  @ R2 <- R2 + 1 

4. Neposredno registrsko naslavljanje

Operand je v registru

MOV R1, R2      @ R1 <- R2
ADD R2, R3, R4  @ R2 <- R3 + R4


Zadnja posodobitev: February 16, 2022