Forum: Mikrocontroller und Digitale Elektronik c ungleich asm


von grinsender (Gast)


Lesenswert?

in gcc gibt es
1
void (*lauf)( void ) = 0x00C0;
2
..
3
...
4
...
5
...
6
...
7
...
8
...
9
lauf();

wie müsste das gleiche in asm aussehen?

von holger (Gast)


Lesenswert?

ORG 0xC0
lauf: .....


Call lauf

von Peter D. (peda)


Lesenswert?

1
call 00c0h


Peter

von grinsender (Gast)


Lesenswert?

ne ne es muss auch anderst gehen ein sprung direkt zu einer adresse zu 
machhen.

geht

call 0x00C0

von grinsender (Gast)


Lesenswert?

Peter Dannegger schrieb:
> call 00c0h
>
>
>
>
>
>
>
>
>
> Peter

so dachte ich mir das.

danke

von Karl H. (kbuchegg)


Lesenswert?

grinsender schrieb:
> ne ne es muss auch anderst gehen ein sprung direkt zu einer adresse zu
> machhen.
>
> geht
>
> call 0x00C0

Ist im Grunde ziemlich egal.
Beides mündet in derselben Arbeit für den µC.

Der einzige Unterschied: Kommt so ein Aufruf in einem Programm 300 mal 
vor, und ändert sich die Adresse, dann musst du mit deiner Lösung 300 
mal ändern und beten, dass du nur ja keine übersiehst, während die 
Lösung mit einem Label nur 1 Änderung bedeutet und den Rest macht der 
Assembler.

Und im Zweifellsfall lass ich lieber den Assembler für mich arbeiten :-)


WEnn wir mal den Aspekt der Dokumentation ausser acht lassen.
  call 0x00C0
sagt mir halt so gar nicht, was da ausgeführt wird.
  call OutputChar
hingegen ist schon ein bischen auskunftsfreudiger.

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.