Ich lehre derzeit selbst Assembler-Sprache durch den Aufbau eines Assembler für den Arduino Uno. Ich habe jedoch Probleme mit der Umwandlung von RJMP in Binärdateien.AVR-Assembly: binäre Darstellung von RJMP erstellen
Aus den amtel Dokumenten, RJMP wird binär dargestellt als 1100 kkkk kkkk kkkk
wo k
die relative Adresse zu springen.
Montage des folgenden Code:
check_press_loop:
sbis PIND, 2
rjmp check_press_loop
und Demontage erhalte ich:
10: fe cf rjmp .-4 ; 0xe
Ich verstehe, warum die relative Sprung -4 Bytes ist, was ich nicht verstehe, ist, wie dies dargestellt ist, durch das Hex fc ef
. Das Vertauschen der Reihenfolge aufgrund der Bytereihenfolge "Little Endian" (cf fe
) ergibt einen Binärwert von 0b1100111111111110
. Entfernen der Anweisung (1100
) Teil des Binärwerts, wie steht 111111111110
für -4?
Brilliant sind. Vielen Dank für die Erklärung. Ja, ich hatte das Zweierkomplement als -2 berechnet, wurde aber vom Disassembler-Wert von -4 geworfen! – soarjay