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"


Anmelden zum Antworten