Forum: Mikrocontroller und Digitale Elektronik Hilfe bei 2 ARM Befehlen.


von Krikus (Gast)


Lesenswert?

Hi,

in der Berufschule sind wir gerade bei dem Thema ARM, und sollen ein 
kleines Programm schreiben.
In einem Beispiel Programm stehen 2 Befehle, welche ich nicht verstehe.
Könnte mir einer diese Befehle vllt. kurz erläutern:

1. Befehl
MOV R9, R1, LSR #3

2. Befehl
LDR R0, =0x20 // Lädt den dezimalen Wert 32 in R0
RSB R0, R0, LSL#8

Vielen Dank für die Hilfe.

von Unbekannter (Gast)


Lesenswert?

> Könnte mir einer diese Befehle vllt. kurz erläutern

Ja, schau in Deinem Unterichtsmaterial nach!

Oder such ein ARM-Manual mit Befehlssatzbeschreibung.

Da gibt es im Internet eine Suchmaschine, damit kommst Du weiter:

    http://www.google.de

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Krikus wrote:

> 1. Befehl
> MOV R9, R1, LSR #3

R9 = R1 / 8

http://www.heyrick.co.uk/assembler/mov.html#mov
http://www.heyrick.co.uk/assembler/shift.html#lsr

Trick: R1, LSR #3 ist ein "Flexible second operand"
http://infocenter.arm.com/help/topic/com.arm.doc.dui0204i/Cihbeage.html

> 2. Befehl
> LDR R0, =0x20 // Lädt den dezimalen Wert 32 in R0

http://www.heyrick.co.uk/assembler/str.html#ldr
bringt einen nicht weiter.

R0 = 0x00000020

http://infocenter.arm.com/help/topic/com.arm.doc.dui0204i/Babbfdih.html

Trick: Es ist eine "LDR pseudo‑instruction". Findet man in 
Referenzkarten zum Befehlssatz manchmal nicht

> RSB R0, R0, LSL#8

http://www.heyrick.co.uk/assembler/mov.html#rsb
http://www.coranac.com/tonc/text/asm.htm
http://infocenter.arm.com/help/topic/com.arm.doc.dui0204i/Cihcjfjg.html

Trick: R0, LSR #3 kann ein "Flexible second operand" sein
http://infocenter.arm.com/help/topic/com.arm.doc.dui0204i/Cihbeage.html

ABER ich vermute, dass diese Zeile nicht vollständig ist. Es kann das 
Zielregister fehlen, der erste Operand oder ein Teil vom zweiten 
Operanden.

Im vorletzten Link ist das Zielregister als optional gekennzeichnet 
({Rd}), darüber habe ich aber nichts weiter gefunden.

Sicher gültig wäre es mit einem weiteren Register z.B.

RSB R0, R1, R2, LSL#8

R0 = (R2 << 8)  - R1

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Stefan "stefb" B. wrote:
> Krikus wrote:
>
>> RSB R0, R0, LSL#8
>
> ABER ich vermute, dass diese Zeile nicht vollständig ist. Es kann das
> Zielregister fehlen, der erste Operand oder ein Teil vom zweiten
> Operanden.
>
> Im vorletzten Link ist das Zielregister als optional gekennzeichnet
> ({Rd}), darüber habe ich aber nichts weiter gefunden.

Thumb, bzw. UAL (Unified Assembler Language).

Gruß
Marcus
http://www.doulos.com/arm/

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.