LOADWORDADR/de

(Difference between revisions)
Jump to: navigation, search
((**COPIED FROM ENGLISH PAGE**) =)
(Remarks)
Line 15: Line 15:
 
<span style="font-family: Arial;">&nbsp;</span>
 
<span style="font-family: Arial;">&nbsp;</span>
  
= <span class="f_Header">Remarks</span> =
+
= <span class="f_Header">Anmerkungen</span> =
<div style="padding: 0px; margin: 0px 0px 0px 4px;">
+
<div style="margin: 0px 0px 0px 4px; padding: 0px;">
{| width="604" cellspacing="0" cellpadding="1" border="1" style="border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;"
+
{| 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;"
| 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)
 +
  
LDI R31,High(label * 2)
+
  LDI R31,High(label * 2)
  
LDI R24,1 or CLR R24
+
  LDI R24,1 or CLR R24
  
STS RAMPZ, R24
+
  STS RAMPZ, R24
  
<span style="font-family: Arial;">&nbsp;</span>
+
<span style="font-family: arial;"></span>&nbsp;
  
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;">Die Programmspeicher der&nbsp;AVR sind Wortorganisiert. Um&nbsp;eine&nbsp;Byteadresse zu erzeugen, muss diese mit 2 multipliziert werden. Das RAMPZ-Register&nbsp;bildet mit dem Z-Register das Adressregister.</span>
  
<span style="font-family: Arial;">&nbsp;</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 erweitert den 15Bit-breiten Abdressraum des Z-Register, sodaß auch Adressen
  
<span style="font-family: Arial;">&nbsp;</span>
+
des&nbsp;Programmspeichers über 64KB hinaus adressiert werden können.
 +
 
 +
Beispielsweise&nbsp;verfügt der Atmega128 &nbsp;128KB Programmspeicher. Das RAMPZ-Register hat dabei die Aufgabe den oberen oder&nbsp; unteren 64KB Bereich
 +
 
 +
zu selektieren.
 +
 
 +
<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">See also</span> =

Revision as of 23:38, 22 February 2013

Contents

Funktion

Läd das Z-Register und sezt RAMPZ wenn vorhanden.

 

 

Syntax

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 eine Byteadresse zu erzeugen, muss diese mit 2 multipliziert werden. Das RAMPZ-Register bildet mit dem Z-Register das Adressregister.

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 erweitert den 15Bit-breiten Abdressraum des Z-Register, sodaß auch Adressen

des Programmspeichers über 64KB hinaus adressiert werden können.

Beispielsweise verfügt der Atmega128  128KB Programmspeicher. Das RAMPZ-Register hat dabei die Aufgabe den oberen oder  unteren 64KB Bereich

zu selektieren.

 

 

See also

LOADLABELLOADADR

 

 

Example


LOADWORDADR label

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