1udo1
23.10.2007, 23:28
Hallo,
ich benötige eine Anfahrhilfe für den Inline assembler. Ihr kennt sicherlich dieses Beispiel aus dem Tutorial:
Meine Frage:
Der Aufruf des Assemblers soll doch die Bits 0000 0101 im Register "result" um ein Bit nach rechts verschieben.
Danach soll der neue Wert, also 0000 1010 in value abgespeichert sein, oder?
Im AVR Studio wird in 60H die 05H und in 62H die 04H angezeigt.
Ich mache sicherlich einen fehler, weiß aber nicht wo. Kann jemand mir sagen, wo es lang geht?
Udo
#include <avr/io.h>
int result=5;
int value=4;
int TAPP;
void main(void)
{
DDRB =0xff;
while (1)
{
asm("mov %0, %1, ror#1" : "=r" (result) : "r" (value));
PORTB=TAPP;
TAPP++;
}
}
ich benötige eine Anfahrhilfe für den Inline assembler. Ihr kennt sicherlich dieses Beispiel aus dem Tutorial:
Meine Frage:
Der Aufruf des Assemblers soll doch die Bits 0000 0101 im Register "result" um ein Bit nach rechts verschieben.
Danach soll der neue Wert, also 0000 1010 in value abgespeichert sein, oder?
Im AVR Studio wird in 60H die 05H und in 62H die 04H angezeigt.
Ich mache sicherlich einen fehler, weiß aber nicht wo. Kann jemand mir sagen, wo es lang geht?
Udo
#include <avr/io.h>
int result=5;
int value=4;
int TAPP;
void main(void)
{
DDRB =0xff;
while (1)
{
asm("mov %0, %1, ror#1" : "=r" (result) : "r" (value));
PORTB=TAPP;
TAPP++;
}
}