Fehler oder nicht?
-
Also ich habe mich mal ein Wenig mit Maschinensprache beschäftigt. Hab mir dann auch die Herrstellerinformationen von Intel über meinen x86 Pentium geholt. In diesen steht :
Register AL = 00H
Register BL = 01H
Register CL = 02H
Register DL = 03H
Register AH = 04H
Register BH = 05H
Register CH = 06H
Register DH = 07HSo. Habe dann mal den Mnemonic "MOV BH, 01H" mit MASM assembliert und mir die fertige EXE in dem Hexeditor HexWorkshop angeschaut. Das Seltsame ist dort steht der Hexcode:
B701
Also ich denke mal "B" steht für "MOV", "7" für den Register und "01" für den hexadezimalen Wert der in dem Register gespeichert werden soll. Aber wiso steht dort für den Register "7"
Der ist doch laut Intel DH!
-
So einfach kann man das nicht sagen - musst du irgendwie falsch verstanden haben.
Der mov-Befehl wird in diesem Fall wie folgt gebildet:
B0 +rb, imm8rb ist Dabei ein Wert, der das Zielregister identifiziert:
0=al
1=cl
2=dl
3=bl
4=ah
5=ch
6=dh
7=bhimm8 ist der fixe 8Bit-Wert.
Zusammen wird also mov bh, 01h korrekt zu
B0 + 07h, 01h => B7 01
-
Vielen Dank für die schnelle Antwort. Wie der Mov-Befehl gebildet wird hab ich jetzt verstanden. Mein Fehler war wohl in der Registertabelle:
Falsch:
Register AL = 00H
Register BL = 01H
Register CL = 02H
Register DL = 03H
Register AH = 04H
Register BH = 05H
Register CH = 06H
Register DH = 07HRichtig:
Register AL = 00H
Register BL = 03H
Register CL = 01H
Register DL = 02H
Register AH = 04H
Register BH = 07H
Register CH = 05H
Register DH = 06HSo hab ichs richtig verstanden, oder? Hab mich wohl irritieren lassen durch mein zwanghaftes "nach Alphabet sortieren".^^
-
nicht dass ichs richtig wüsste, aber da sich deine 'richtige' und nobous versionen immer nocht unterscheiden muss wohl einer falsch liegen...
man man man wie scharf hab ich da bloß wieder kombiniert
-
schrieb:
nicht dass ichs richtig wüsste, aber da sich deine 'richtige' und nobous versionen immer nocht unterscheiden muss wohl einer falsch liegen...
Wo ist denn der Unterschied? Nur die Reihenfolge ist unterschiedlich (Nobuo T hat nach dem Registerwert und Holgae nach dem Namen sortiert), aber ansonsten ist die Liste von Holgae korrekt. Bei den Registern ist die Reihenfolge nunmal a, c, d, b.
-
das muss dann wohl einer von den beiden noch schnell korrigiert haben