Hello World auf Assemblerisch



  • so
    wollte mal anfangen asm zu lernen damit ich meine led's am parallelport steuern kann
    bloß häng ich irgendwie schon an hello world 😞
    hier mal mein code

    org 100h                   
    START:                      
    mov ah,09h                                          
    mov dx, offset Hello      
    INT 21h                    
    ENDE:                         
    mov ah,4ch                 
    INT 21h                   
    Hello db 'Hello World !!',10d,13d,'$'    
    END START
    

    und hier die fehler

    bla.asm:4: error: comma or end of line expected
    bla.asm:9: error: expression syntax error
    bla.asm:10: error: parser: instruction expected
    

    habs genauso gemacht wie in dem tutorial aber irgendwie funzt das net 😞



  • Du verwendest ja NASM. Aber "offset irgendwas" is z.B. TASM-Syntax. Mit NASM muss es so aussehen:

    org         100h
    
    section .data
    Hello                  db   "Hello World!!",0Dh,0Ah,"$"
    
    section .text
        mov ah,09h
        mov dx,Hello
        ;lea dx,[Hello]
        int 21h
    
        mov ah,4Ch
        int 21h
    

    Dann assemblieren mit z.B. "nasm -fbin -ohello.com hello.asm"
    mov dx, offset Hello
    Das soll ja die Effective Adress in dx laden. Aber bei NASM reicht es schon, nur "mov dx, Hello" zu schreiben um das zu erreichen.
    Alternativ könntest du auch "lea dx,[Hello]" schreiben. Das macht das gleiche. LEA steht für "Load effective adress", da brauchst du dann allerdings diese eckigen Klammern darum, denn sonst ist es ja doppeltgemoppelt.



  • Hallo
    Ich versuche seit einiger Zeit unter Linux Assembler Programme zuerstellen da ich bis jetzt nur mit TASM geschrieben habe, habe ich auch eine Frage zum NASM:

    In TASM schreibe ich z.B.
    Hallo db "Hallo, Test"

    mov [Hallo+1],65

    wie schreibe ich sowas in NASM?

    mfg und thx im Voraus
    Noob



  • mov byte [Hello+1],65


Anmelden zum Antworten