Ich habe unter Windows mal ein paar Assemblerprogramme geschrieben. Jetzt will ich die unter Linux ans Laufen bringen, z.B. das HelloWorld:
Code:
Text SEGMENT
hallo DB "Hello world!$"
Text ENDS
Stapel SEGMENT stack
DW 128 dup (?)
Prog SEGMENT
ASSUME cs:Prog, ds: Text, ss:Stapel
Start:
lea dx, hallo
int 21h
int 4ch
Prog ENDS
END Start
Wenn ich das Programm mit "as hellowor.asm" übersetze, spuckt er folgenden Fehler aus:
Code:
hellowor.asm: Assembler messages:
hellowor.asm:1: Error: no such instruction: `text SEGMENT'
hellowor.asm:2: Error: no such instruction: `hallo DB "Hello world!$"'
hellowor.asm:3: Error: no such instruction: `text ENDS'
hellowor.asm:5: Error: no such instruction: `stapel SEGMENT stack'
hellowor.asm:6: Error: no such instruction: `dw 128 dup (?)'
hellowor.asm:8: Error: no such instruction: `prog SEGMENT'
hellowor.asm:9: Error: no such instruction: `assume cs:Prog,ds:Text,ss:Stapel'
hellowor.asm:11: Error: too many memory references for `lea'
hellowor.asm:12: Error: junk `h' after expression
hellowor.asm:12: Error: suffix or operands invalid for `int'
hellowor.asm:13: Error: junk `ch' after expression
hellowor.asm:13: Error: suffix or operands invalid for `int'
hellowor.asm:14: Error: no such instruction: `prog ENDS'
hellowor.asm:16: Error: no such instruction: `end Start'
Ich habe mir die Manpage vom as angesehen, kann da jetzt aber keine Besonderheiten entdecken. Da steht zwar, dass der GNU as eigentlich für den gcc geschrieben wurde, aber dass er auch alles andere assembliert.
Jetzt habe ich die Frage, ob Assemblerprogramme unter Linux völlig anders aussehen müssen als unter DOS/Windows oder ob der GNU as überhaupt das richtige Werkzeug ist (welchen Assembler soll ich sonst nehmen?).
Ich habe auch andere Quellcodes ausprobiert. Der meckert sogar Kommentarzeilen mit "no such instruction" an.
Lesezeichen