Disassemblierte Variablen

Wenn ich das richtig verstanden habe, muss es einen Unterschied zwischen dem Maschinencode und der disassemblierten Datei geben, weil der Computer sonst nicht wüsste ob 7, oder das was an der Adresse 7 steht, in das Register soll, oder?
 
es gibt in ASM keine richtigen Varriablen. Du lädst die Offset der Speicherstelle in AX. Den inhalt musst du mit hilfe eines Pointers laden. Das Prinzip nochmal aufgedröselt:

Code:
varriable db 0
mov ax,varriable

Der Name "varriable" ist nur ein Label welches vom Assembler in eine Adresse (im Realmode Offset da segment:offset) umwandelt. In ASM gibt es keine Varriablen nur Speicherstellen und Register. Wenn du den inhalt der speicherstelle "Varriable" in AX verschieben möchtest geht das so:

Code:
varriable db 'a'
mov ax,[varriable]

Jetzt ist ax='a'
vorhin beinhaltete AX eine adresse.
Zu dem >Rest aus der exe datei: Exe ist vom Aufbau sehr viel Komplexer als ein einfaches Binäres Format. Windows hat ein tool um exe in Binärdateien zu convertieren (exe2bin).
Diese bringt dir jedoch nix da du in deinem System (wenn ich das richtig verstanden habe ) a: noch im realmode bist und die Aktuell gängigen Windows Aplikationen 32bit code enthalten
b: Du in deinem OS die Windows API nicht implementiert hast.

Wenn du Infos zu OSdev oder ASM haben willst kannst dich auch dierekt bei mir per PM melden ;)
LG
Linux best Friend
 
Zurück