Diskussion:BEQ $hhll

Aus C64-Wiki
Wechseln zu: Navigation, Suche

Titel[Bearbeiten]

Was bedeutet hhll? --Pohli 23:41, 22. Feb. 2009 (CET)

Das $-Zeichen steht für Hexdezimal. hh steht für High-Byte. ll steht für Low-Byte.
$hhll steht daher für eine 16-Bit Speicheradresse. (z.B. $c003 ).
Siehe Beispielprogramm --Werner 00:31, 23. Feb. 2009 (CET)
OK, hab ich mir schon gedacht. Habe trotzdem nachgefragt, denn nun verstehe ich nicht, wie das mit der relativen Adressierung zusammenpasst. Dort wird doch nur ein 8-Bit-Wert angegeben?! In der Tabelle steht auch Anzahl der Bytes: 2, also 1 Byte Mnemonic plus 1 Byte relative Adressierung, oder? --Pohli 13:42, 23. Feb. 2009 (CET)
Das passt schon so. Hier muss zwischen Maschinencode und Assembler-Befehl differenziert werden.
In Assembler wird das Sprungziel entweder absolut (z.B. BEQ $C000) oder als label (z.B. BEQ START) angegeben.
Beim Assemblieren setzt der Assembler diesen Befehl in Maschinencode um ($F0 $nn). $F0 ist der Opcode, $nn das relative Sprungziel.
Würde man z.B. nur BEQ $FC schreiben, glaubt der Assembler die Zeropage-Adresse $FC (absolut $00FC) sei als Sprungziel gemeint und gibt in der Regel eine Fehlermeldung aus. (z.B. Branch offset to large) --Werner 19:34, 24. Feb. 2009 (CET)
Danke! Nun ist mir alles klar. :-) --Pohli 20:15, 24. Feb. 2009 (CET)