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.
clr
2,sp
; nulování vyššího bytu int
clr
3,sp
; nulování nižšího bytu int
lda
#4
sta
1,sp
; nastavení bytu na hodnotu 4
SP-Relative, 16Bit Offset (SP2)
• Adresa operandu je vytvořena přičtením
16-bitového offsetu, který je součástí
instrukce, k obsahu SP.
• Obsah SP není změněn.
• Používá se pro přístup k datovým strukturám,
které zabírají na zásobníku více než 255 bytů.
Memory to Memory Addressing
• Používají instrukce MOV, které kopírují data
z jednoho paměťového místa do druhého.
• Jedno paměťové místo je vždy v direct page.
• 4 módy:
– Move immediate to direct
– Move direct to direct
– Move indexed with post increment to direct
– Move direct to indexed with post increment
Memory to Memory Addressing
• Příklad:
MOV $4,$6
• Přesune obsah bytu s adresou $4 do bytu s
adresou $6.
PODPROGRAMY
Proč podprogram?
• V programech se často vyskytují části kódu, které
vykonávají stejnou nebo podobnou činnost.
• Matematické funkce (např. sin(x))
• Ovládání periferií,
• …
• Opakované vkládání stejného kódu vede k
plýtvání operační pamětí a diskovým prostorem.
• Špatná udržovatelnost programů
• Změna nebo oprava se musí provádět na několika
místech.
Řešení pomocí podprogramu
• Úsek kódu realizující příslušný algoritmus
(např. sin(x)) je do paměti umístěn pouze
jednou ve formě podprogramu.
Volání podprogramu
• V místě, kde je třeba provést daný algoritmus,
se přeruší sekvenční provádění instrukcí.
• Pomocí instrukce volání podprogramu se
přejde na první instrukci podprogramu.
• Instrukce pro volání podprogramu: JSR, CALL.
Návrat z podprogramu
• Po ukončení provedení instrukcí podprogramu
je třeba zajistit návrat k provádění přerušené
sekvence instrukcí.
• Pokračuje se instrukcí umístěnou v paměti za
instrukcí volání podprogramu.
• Instrukce pro návrat z podprogramu: RTS, RET.
Instrukce volání podprogramu
• Speciální instrukce JSR nebo CALL.
• Ne obyčejné skoky JMP, JUMP!!!
• Instrukce volání podprogramu: