Adresseringsmodi in een microprocessor specificeren hoe de CPU toegang krijgt tot gegevens in het geheugen of tot registers. Ze bepalen hoe de operand van een instructie zich bevindt. Verschillende adresseringsmodi bieden een verschillende mate van flexibiliteit, efficiëntie en complexiteit. Hier zijn enkele veel voorkomende adresseringsmodi:
1. Onmiddellijke adressering:
* Mechanisme: De operand is direct opgenomen in de instructie zelf.
* Voorbeeld: `ADD R1, #5` (Voeg de onmiddellijke waarde 5 toe aan register R1).
* Voordelen: Eenvoudig en snel, omdat er geen geheugentoegang nodig is om de operand op te halen.
* Nadelen: Beperkt tot kleine, constante waarden.
2. Registeradressering:
* Mechanisme: De operand bevindt zich in een CPU-register.
* Voorbeeld: `ADD R1, R2` (Voeg de inhoud van register R2 toe aan register R1).
* Voordelen: Zeer snel, omdat registers direct toegankelijk zijn voor de CPU.
* Nadelen: Beperkt aantal operanden beschikbaar (alleen die in registers).
3. Directe adressering (absolute adressering):
* Mechanisme: De instructie bevat het geheugenadres van de operand.
* Voorbeeld: `LOAD R1, 1000H` (Laad de inhoud van geheugenlocatie 1000H in register R1).
* Voordelen: Eenvoudig te begrijpen en te implementeren.
* Nadelen: Kan leiden tot grotere instructiegroottes als er veel bits nodig zijn om het geheugenadres te specificeren. Niet flexibel voor sequentiële toegang tot gegevens.
4. Indirecte adressering:
* Mechanisme: De instructie bevat het geheugenadres van een *geheugenlocatie* die het adres van de operand bevat. Zie het als een aanwijzer.
* Voorbeeld: `LOAD R1, [2000H]` (Laad de inhoud van de geheugenlocatie waarvan het adres is opgeslagen op geheugenlocatie 2000H in register R1).
* Voordelen: Maakt dynamische wijziging van geheugenadressen mogelijk. Handig voor toegang tot datastructuren zoals arrays.
* Nadelen: Vereist twee geheugentoegangen (één om het adres op te halen, één om de gegevens op te halen). Langzamer dan directe adressering.
5. Registreer indirecte adressering:
* Mechanisme: De instructie specificeert een register dat het geheugenadres van de operand bevat.
* Voorbeeld: `LOAD R1, (R2)` (Laad de inhoud van de geheugenlocatie waarvan het adres in register R2 staat in register R1).
* Voordelen: Flexibel en efficiënt voor toegang tot gegevens in arrays of sequentiële geheugenlocaties. Sneller dan indirecte adressering met behulp van geheugenlocatie.
* Nadelen: Vereist nog steeds geheugentoegang.
6. Verplaatsingsadressering (basis- + offset-adressering):
* Mechanisme: Het effectieve adres wordt berekend door een verplaatsing (offset) toe te voegen aan de inhoud van een basisregister.
* Voorbeeld: `LOAD R1, [R2 + 10]` (Laad de inhoud van de geheugenlocatie op adres (R2 + 10) in register R1).
* Voordelen: Handig voor toegang tot elementen binnen een array of datastructuur ten opzichte van een basisadres.
* Nadelen: Vereist een optelbewerking om het effectieve adres te berekenen.
7. Geïndexeerde adressering:
* Mechanisme: Vergelijkbaar met verplaatsingsadressering, maar de offset wordt opgeslagen in een indexregister.
* Voorbeeld: `LOAD R1, [R2, R3]` (Laad de inhoud van de geheugenlocatie op adres (R2 + R3) in register R1). De exacte werking is afhankelijk van de architectuur; soms is het R2 + R3, soms een geschaalde versie van R3.
* Voordelen: Zeer nuttig voor arrayverwerking. Maakt gemakkelijke toegang tot array-elementen mogelijk met behulp van index.
8. Stapeladressering:
* Mechanisme: De operand bevindt zich bovenaan de stapel. Instructies als `PUSH` en `POP` manipuleren de stapel.
* Voordelen: Efficiënt voor subroutineaanroepen, functieargumenten en lokaal variabelenbeheer.
* Nadelen: Heeft alleen rechtstreeks toegang tot de bovenkant van de stapel.
Dit zijn de meest voorkomende adresseringsmodi. Specifieke microprocessors kunnen variaties of aanvullende adresseringsmodi implementeren. De keuze van de adresseringsmodus beïnvloedt de lengte van de instructie, de uitvoeringssnelheid en de programmeerflexibiliteit. De optimale adresseringsmodus is sterk afhankelijk van de toepassing en de architectuur van de microprocessor. |