Forum: Mikrocontroller und Digitale Elektronik Adresse eines Labels bestimmen


von budah (Gast)


Lesenswert?

Hallo, ich habe folgenden Assembler-Code gegeben:
1
     
2
                                   Speicherplatz(Hex)     Maschinencode(Hex)
3
             MOV A,#0CFh                0064                     74CF        
4
             MOV R1,#00                 0066                     7900
5
LOOP1:       MOV R0,#00                 0068                     7800
6
LOOP0:       INC R0                     006A                     08
7
             CJNE R0,#64h,LOOP0         006B                     B864FC 
8
             INC R1                     006E                     09
9
             CJNE R1,#0C8h,LOOP1        006F                     B9C8F6 
10
             ADD A,#41h                 0072                     2441
Die Startadresse des Programms ist 64h und das Programm wird auf einem 
Intel C515C ausgeführt. Es wird Registerbank 1 verwendet.

Wie kann ich die Adressen der Label LOOP0 und LOOP1 
herausfinden/berechnen. Hier in der Lösung wurde für die Adresse von 
LOOP0 FC und für LOOP1 F6 angegeben. Wie kommt man darauf?

von budah (Gast)


Lesenswert?

Schreibfehler: Das Programm wird auf einem Infineon C515C ausgeführt.

von STK500-Besitzer (Gast)


Lesenswert?

budah schrieb:
> Wie kommt man darauf?

Indem man die Bytes bis dort zählt.

von Georg G. (df2au)


Lesenswert?

Die Adressen hast du doch selbst aufgeschrieben, in der Spalte 
"Speicherplatz".

Und dann sieh dir noch einmal die Definition des Opcodes für CJNE an. 
Dort wird nicht die absolute Adresse eingetragen sondern der Offset zum 
momentanen PC (Bereich -127 bis +127).

von budah (Gast)


Lesenswert?

Jetzt ist es mir klar geworden, vielen Dank für die schnelle Hilfe!

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.