Discussion:
Ein paar Fragen zu dem ganzen Zeug ...
(zu alt für eine Antwort)
H***@web.de
2005-06-20 21:27:35 UTC
Permalink
Hallo

Ich habe Probleme direkt einen Binärwert in das Indexregister zu
laden:
LDX #10 lädt klar den Dezimalwert 10 ins Indexregister
Will ich jetzt aber den Binärwert %1111 ins Indexregister laden klappt
weder
LDX %1111 noch LDX #%1111

Noch ne Frage zu ASR und LSR
Hab ich das richtig verstanden, dass beide eine Binärzahl quasi nach
rechts verschieben, LSR immer eine Null vorne ran setzt und ASR die
selbe Zahl, welche schon vorne stand noch mal dran packt.
Ich hoff mein mieses Deutsch versteht wer, ist schon spät :-)

Jetzt noch ne Frage:

LDX n
loop BLE end
ASL
SUBX #1
JMP loop
end


LDX n
loop BLE end
SUBX #1
ASL
JMP loop
end


Verstehe ich das richtig, dass BLE im ersten Abschnitt das
Indexregister und im zweiten den Accumulator mit null vergleicht ?

Also Dirk, hau in die Tasten ;-)
Rocco Rutte
2005-06-21 07:29:31 UTC
Permalink
Post by H***@web.de
Ich habe Probleme direkt einen Binärwert in das Indexregister zu
Das geht mir auch so. Vor allem mit diesem VIP-Dingens. Da sind aber
noch ein paar mehr Sachen, die nicht so ganze stimmen (zum Beispiel ORG
0xffff, je nach Wetterlage mal Exceptions, etc.)[1]
Post by H***@web.de
Noch ne Frage zu ASR und LSR
Hab ich das richtig verstanden, dass beide eine Binärzahl quasi nach
rechts verschieben, LSR immer eine Null vorne ran setzt und ASR die
selbe Zahl, welche schon vorne stand noch mal dran packt.
Nicht wirklich. 'A' ist _a_rithmetisch und 'L' ist _l_ogisch. Die Zahlen
liegen im 2er-Komplement vor und daher heisst mathematisch gesehen vorn
eine 1, dass die Zahl negativ ist. ASR nimmt auf solche Rücksicht, weil
es das Zahlenformat beachtet. LSR dagegen shiftet nur stur durch die
Gegend, d.h. wenn du 1000 um 1 nach rechts mit LSR schiebst, bekommst du
0100, was ja im 2er Komplement nicht so ganz richtig ist.
Post by H***@web.de
LDX n
loop BLE end
ASL
SUBX #1
JMP loop
end
LDX n
loop BLE end
SUBX #1
ASL
JMP loop
end
Verstehe ich das richtig, dass BLE im ersten Abschnitt das
Indexregister und im zweiten den Accumulator mit null vergleicht ?
Die Branch-Befehle vergleichen keine Register sondern Statusbits. Diese
werden von allen möglichen Befehlen gesetzt (s. Tabelle).

Im ersten Beispiel sind die zwei Befehle, die die Bits direkt vor dem
Aufruf von BLE noch manipulieren LDX und SUBX, die beide auf dem
Indexregister werkeln. Also: ja.

Im zweiten Beispiel setzt LDX ein paar Bits und ASL. Wenn BLE für n
nicht zutrifft, dann kommen die Statusbits für BLE wohl immer aus
Befehlen, die mit dem AC arbeiten.

bye, Rocco
--
[1] weshalb ich mir angefangen habe, einen VIP-Assembler neu zu
schreiben...
Dirk Lehmann
2005-06-23 20:20:46 UTC
Permalink
Post by H***@web.de
Hallo
Hi Mathias ;)
Post by H***@web.de
Ich habe Probleme direkt einen Binärwert in das Indexregister zu
LDX #10 lädt klar den Dezimalwert 10 ins Indexregister
Will ich jetzt aber den Binärwert %1111 ins Indexregister laden klappt
weder
LDX %1111 noch LDX #%1111
Also bei mir funktioniert das Laden ins Indexregister ohne Probleme (LDX
#%1111). Probleme kann es eigentlich nur bei "LDX #%11111111" geben, wegen
dieser 2er-Komplementbehandlung (siehe Bugreport von mir "Bug im VIP 24/32
Bit Modus?!"). Naja, und dass "LDX %1111" nicht funktioniert liegt
wahrscheinlich daran, dass im RAM[0x0F] nichts drin stand ;) (siehe
Adressierungsarten).
Post by H***@web.de
[...]
Wurde ja schon beantwortet...
Post by H***@web.de
Also Dirk, hau in die Tasten ;-)
Joup ;) ... sorry, dass es so lange gedauert hat. Ich hatte in den letzten
Tagen wenig Zeit.

CU Dirk.

Lesen Sie weiter auf narkive:
Loading...