LOADWORDADR/de

From MCS Wiki AVR
< LOADWORDADR(Difference between revisions)
Jump to: navigation, search
m (1 revision)
(Anmerkungen)
 
(17 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== (**COPIED FROM ENGLISH PAGE**) === <span class="f_Header">Action</span> =
 
  
Loads the Z-register and sets RAMPZ if available.
+
= <span class="f_Header">Funktion</span> =
  
<span style="font-family: Arial;">&nbsp;</span>
 
  
<span style="font-family: Arial;">&nbsp;</span>
+
Läd das Z-Register und setzt RAMPZ wenn vorhanden.
 +
 
 +
<span style="font-family: arial;">&nbsp;</span>
 +
 
 +
<span style="font-family: arial;">&nbsp;</span>
  
 
= <span class="f_Header">Syntax</span> =
 
= <span class="f_Header">Syntax</span> =
  
<span class="f_Syntax">LOADWORDADR&nbsp;</span>label
+
Var =&nbsp;<span class="f_Syntax">LOADWORDADR</span>(label )
 +
<span style="font-family: arial;">&nbsp;</span>
  
<span style="font-family: Arial;">&nbsp;</span>
+
<span style="font-family: arial;">&nbsp;</span>
  
<span style="font-family: Arial;">&nbsp;</span>
+
= <span class="f_Header">Anmerkungen</span> =
 
+
<div style="margin: 0px 0px 0px 4px; padding: 0px;">
= <span class="f_Header">Remarks</span> =
+
{| style="border: 2px solid rgb(0, 0, 0); border-collapse: collapse; border-spacing: 0px;" width="604" cellpadding="1" cellspacing="0" border="1"
<div style="padding: 0px; margin: 0px 0px 0px 4px;">
+
{| width="604" cellspacing="0" cellpadding="1" border="1" style="border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;"
+
 
|- style="vertical-align: top;"
 
|- style="vertical-align: top;"
| valign="top" width="15%" style="width: 87px; border: 1px solid rgb(0, 0, 0);" |  
+
| style="border: 1px solid rgb(0, 0, 0); width: 87px;" width="15%" valign="top" |  
 
label
 
label
  
| valign="top" width="100%" style="width: 508px; border: 1px solid rgb(0, 0, 0);" |  
+
| style="border: 1px solid rgb(0, 0, 0); width: 508px;" width="100%" valign="top" |  
The name of the label which address will be loaded into R30-R31 which form the Z-register.
+
Der Name des Labels dessen Adresse in das Registerpaar R30&#124;R31 (Z-Register) geladen wird.
  
 
|}
 
|}
 
</div>
 
</div>
<span style="font-family: Arial;">&nbsp;</span>
+
<span style="font-family: arial;">&nbsp;</span>
  
The code that will be generated&nbsp;:
+
Der erzeugte Code&nbsp;:
  
LDI R30,Low(label * 2)
+
LDI R30,Low(label * 2)
 +
&nbsp;
 +
LDI R31,High(label * 2)
 +
&nbsp;
 +
LDI R24,1 or CLR R24
 +
&nbsp;
 +
STS RAMPZ, R24
 +
&nbsp;
  
LDI R31,High(label * 2)
+
<span style="font-family: arial;">Die Programmspeicher der&nbsp;AVR sind Wortorganisiert. Um&nbsp;ein&nbsp;Byte zu adressieren, muss die Adresse einer Programmmarke mit 2 multipliziert werden.</span>
 +
Die Multiplikation mit 2&nbsp;wirkt auf das Z-Register wie ein Linkshift, sodaß das Bit0 zu 0 wird. Mit dem&nbsp;Bit0 wird selektiert, ob das Low-Byte(0) oder das High-Byte(1) eines Wortes im Programmspeicher&nbsp;adressiert wird. Das RAMPZ-Register&nbsp;bildet mit dem Z-Register das Adressregister. Das RAMPZ-Register erweitert den 15Bit-breiten Abdressraum des Z-Register, sodaß auch Adressen
 +
eines&nbsp;Programmspeichers über 64KB hinaus adressiert werden können.
  
LDI R24,1 or CLR R24
+
Beispielsweise&nbsp;verfügt der Atmega128 &nbsp;über 128KB Programmspeicher. Das RAMPZ-Register hat dabei die Aufgabe den oberen oder&nbsp; unteren 64KB Bereich zu selektieren.
  
STS RAMPZ, R24
+
<span style="font-family: arial;">&nbsp;</span>
  
<span style="font-family: Arial;">&nbsp;</span>
+
<span style="font-family: arial;">&nbsp;</span>
 
+
As the AVR uses a word address, to find a byte address we multiply the address with 2. RAMPZ forms together with pointer<span style="font-weight: bold;">Z</span>&nbsp;an address register. As the LS bit of Z is used to identify the lower or the upper BYTE of the address, it is extended with the RAMPZ to address more then 15 bits. For example the Mega128 has 128KB of space and needs the RAMPZ register set to the right value in order to address the upper or lower 64KB of space.
+
 
+
<span style="font-family: Arial;">&nbsp;</span>
+
 
+
<span style="font-family: Arial;">&nbsp;</span>
+
  
= <span class="f_Header">See also</span> =
+
= <span class="f_Header">Siehe auch</span> =
  
[[LOADLABEL]],&nbsp;[[LOADADR]]
+
[[LOADLABEL]]&nbsp;,&nbsp;[[LOADADR]]
  
 
<span style="font-family: Arial;">&nbsp;</span>
 
<span style="font-family: Arial;">&nbsp;</span>
Line 55: Line 59:
 
<span style="font-family: Arial;">&nbsp;</span>
 
<span style="font-family: Arial;">&nbsp;</span>
  
= <span class="f_Header">Example</span> =
+
= <span class="f_Header">Beispiel</span> =
 +
 +
LOADWORDADR label
  
<br/><source lang="bascomavr">
+
<br/><br/>{{Languages}}
LOADWORDADR label
+
</source><br/>{{Languages}}
+
  
 
[[Category:BASCOM Language Reference/de]]
 
[[Category:BASCOM Language Reference/de]]

Latest revision as of 21:10, 23 February 2013

Contents

 [hide

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

LOADLABEL , LOADADR

 

 

Beispiel

LOADWORDADR label


Languages   English Deutsch  
Personal tools
Namespaces
Variants
Actions
Navigation
In other languages
Language