Variableninitialisierung



  • Hallo,

    ich habe folgenden sehr einfachen Code:

    segment .data
     summand1 dw 0x31 
    
    segment .code
    ..start:
     mov ax, [summand1]
    
     mov al, 0 ;OS-Interrupt
     mov ah, 4Ch
     int 21h
    

    Ich habe ja oben die Variable summand1 mit 0x31 initialisiert. Doch jedes mal wenn ich mir im Debug-Modus das Register ax nach dem Befehl mov ax, [summand1] anschaue, steht da irgendein Mist drin wie z.B. 20CD. Habe ich summand1 falsch initialisiert?
    Ich kompiliere das Programm mit NASM unter Windows (32 bit) und alink als Linker.



  • Schreibt man einen Hexwer in Assembler nicht als 31h? Oder ist das egal?



  • oneill5000 schrieb:

    Schreibt man einen Hexwer in Assembler nicht als 31h? Oder ist das egal?

    Jaein. Das hängt vom Compiler ab. Bei NASM kannst du schon "0x" schreiben.

    Versuch es mal so:

    segment .data
     summand1 dw 0x31 
    
    segment .code
    ..start:
     mov ax, @data
     mov ds, ax
     mov ax, [ds:summand1]
    
     mov al, 0 ;OS-Interrupt
     mov ah, 4Ch
     int 21h
    


  • Danke, es funktioniert 🙂

    Statt @data muss man in NASM wohl nur data schreiben.


Anmelden zum Antworten