LOADWORDADR/de
(→(**COPIED FROM ENGLISH PAGE**) =) |
(→Anmerkungen) |
||
| (16 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
| + | |||
= <span class="f_Header">Funktion</span> = | = <span class="f_Header">Funktion</span> = | ||
| − | |||
| − | + | Läd das Z-Register und setzt RAMPZ wenn vorhanden. | |
| − | <span style="font-family: | + | <span style="font-family: arial;"> </span> |
| + | |||
| + | <span style="font-family: arial;"> </span> | ||
= <span class="f_Header">Syntax</span> = | = <span class="f_Header">Syntax</span> = | ||
| − | <span class="f_Syntax">LOADWORDADR </span> | + | Var = <span class="f_Syntax">LOADWORDADR</span>(label ) |
| + | <span style="font-family: arial;"> </span> | ||
| − | <span style="font-family: | + | <span style="font-family: arial;"> </span> |
| − | + | ||
| − | + | ||
| − | = <span class="f_Header"> | + | = <span class="f_Header">Anmerkungen</span> = |
| − | <div style=" | + | <div style="margin: 0px 0px 0px 4px; padding: 0px;"> |
| − | {| | + | {| style="border: 2px solid rgb(0, 0, 0); border-collapse: collapse; border-spacing: 0px;" width="604" cellpadding="1" cellspacing="0" border="1" |
|- style="vertical-align: top;" | |- style="vertical-align: top;" | ||
| − | | | + | | style="border: 1px solid rgb(0, 0, 0); width: 87px;" width="15%" valign="top" | |
label | label | ||
| − | | | + | | style="border: 1px solid rgb(0, 0, 0); width: 508px;" width="100%" valign="top" | |
| − | + | Der Name des Labels dessen Adresse in das Registerpaar R30|R31 (Z-Register) geladen wird. | |
|} | |} | ||
</div> | </div> | ||
| − | <span style="font-family: | + | <span style="font-family: arial;"> </span> |
| − | + | Der erzeugte Code : | |
| − | LDI R30,Low(label * 2) | + | LDI R30,Low(label * 2) |
| + | | ||
| + | LDI R31,High(label * 2) | ||
| + | | ||
| + | LDI R24,1 or CLR R24 | ||
| + | | ||
| + | STS RAMPZ, R24 | ||
| + | | ||
| − | + | <span style="font-family: arial;">Die Programmspeicher der AVR sind Wortorganisiert. Um ein Byte zu adressieren, muss die Adresse einer Programmmarke mit 2 multipliziert werden.</span> | |
| + | Die Multiplikation mit 2 wirkt auf das Z-Register wie ein Linkshift, sodaß das Bit0 zu 0 wird. Mit dem Bit0 wird selektiert, ob das Low-Byte(0) oder das High-Byte(1) eines Wortes im Programmspeicher adressiert wird. Das RAMPZ-Register bildet mit dem Z-Register das Adressregister. Das RAMPZ-Register erweitert den 15Bit-breiten Abdressraum des Z-Register, sodaß auch Adressen | ||
| + | eines Programmspeichers über 64KB hinaus adressiert werden können. | ||
| − | + | Beispielsweise verfügt der Atmega128 über 128KB Programmspeicher. Das RAMPZ-Register hat dabei die Aufgabe den oberen oder unteren 64KB Bereich zu selektieren. | |
| − | + | <span style="font-family: arial;"> </span> | |
| − | <span style="font-family: | + | <span style="font-family: arial;"> </span> |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | = <span class="f_Header"> | + | = <span class="f_Header">Siehe auch</span> = |
| − | [[LOADLABEL]], [[LOADADR]] | + | [[LOADLABEL]] , [[LOADADR]] |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
| Line 55: | Line 59: | ||
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
| − | = <span class="f_Header"> | + | = <span class="f_Header">Beispiel</span> = |
| + | |||
| + | LOADWORDADR label | ||
| − | <br/ | + | <br/><br/>{{Languages}} |
| − | + | ||
| − | + | ||
[[Category:BASCOM Language Reference/de]] | [[Category:BASCOM Language Reference/de]] | ||
Latest revision as of 20:10, 23 February 2013
Contents |
Funktion
Läd das Z-Register und setzt RAMPZ wenn vorhanden.
Syntax
Var = LOADWORDADR(label )
Anmerkungen
|
label |
Der Name des Labels dessen Adresse in das Registerpaar R30|R31 (Z-Register) geladen wird. |
Der erzeugte Code :
LDI R30,Low(label * 2) LDI R31,High(label * 2) LDI R24,1 or CLR R24 STS RAMPZ, R24
Die Programmspeicher der AVR sind Wortorganisiert. Um ein Byte zu adressieren, muss die Adresse einer Programmmarke mit 2 multipliziert werden. Die Multiplikation mit 2 wirkt auf das Z-Register wie ein Linkshift, sodaß das Bit0 zu 0 wird. Mit dem Bit0 wird selektiert, ob das Low-Byte(0) oder das High-Byte(1) eines Wortes im Programmspeicher adressiert wird. Das RAMPZ-Register bildet mit dem Z-Register das Adressregister. Das RAMPZ-Register erweitert den 15Bit-breiten Abdressraum des Z-Register, sodaß auch Adressen eines Programmspeichers über 64KB hinaus adressiert werden können.
Beispielsweise verfügt der Atmega128 über 128KB Programmspeicher. Das RAMPZ-Register hat dabei die Aufgabe den oberen oder unteren 64KB Bereich zu selektieren.
Siehe auch
Beispiel
LOADWORDADR label
| Languages | English • Deutsch |
|---|