sinnlose zeichen
-
Hi leute ich ärger mich schon ne zeit lang ab!
segment code start: mov dx, message mov ah, 9 int 21h mov dx, prompt mov ah, 9 int 21h mov ah, 1 int 21h cmp al, 'j' je well cmp al, 'J' je well mov dx, endl mov ah, 9 int 21h mov dx, react1 mov ah, 9 int 21h jmp leaving well: mov dx, endl mov ah, 9 int 21h mov dx, react2 ; Wenn ich offset react2 schreibe bringt er mir folgenden error: comma or end of line expected mov ah, 9 int 21h leaving: segment data message db 'Hallo Welt! ' endl db 10, 13, '$' prompt db 'Geht es ihnen gut? $' react1 db 'Das tut mir leid!$' react2 db 'Das freut mich!$'
wenn ich diesen code assembliere (mit nasm) geht alles gut aber beim ausführen kommen nur sinnlose zeichen und am ende dieser zeichen kommt der eigendliche text! Diese Ausgabe wiederholt sich noch einmal. An meinem computer ligt es wahrscheinlich nicht! ich habs auf einem pentium III und auf einem AMD athlon 3100 ausprobiert und niergends hat es funktioniert!!!
an was liegt das?
albert
-
albertk13 schrieb:
an was liegt das?
Daran : ORG
Eine .COM unter MSDOS startet immer bei CS:0100.
Das muss man NASM noch mitteilen, damit er die "Datenadressen" entsprechend anpassen kann.org 100h ; <- Das sollte das Problem beheben ; falls es eine .COM unter MSDOS werden soll segment code start: mov dx, message mov ah, 9 int 21h ... leaving: mov ax, 4C00h ; <- wäre unbedingt noch zu empfehlen :-) int 21h
P.S.: NASM kennt den Begriff "offset" nicht.
-
ok aber was muss ich machen wenn ich keine *.com datei erstellen will
also erst eine *.obj und dann eine *.exe?
-
anders assembelieren am besten du guckst dir mal die doku vom nasm an
-
wenn ich jetzt(also ich hab jetzt org 100h eingefügt) mit 'nasm VuS.asm -f obj -o vus.com' assemblieren will bringt er mir diesen error
vus.asm:1: error: parser: instruction expected
das passiert auch wenn ich mit 'nasm VuS.asm -f obj -o vus.obj' assemblieren will!
Was mach ich noch falsch?
-
Reihenfolge der Kommandozeilenparameter :
"nasm -f bin -o vus.com VuS.asm"