Hallo,
eigentlich ist es nicht das richtige Forum für Assembler, aber ich glaube hier die zufriedenstellendste Anwort zu bekommen.
Seit gestern versuche ich zwei Zahlen mit "nasm" auf Linux zu addieren und dann auszugeben, was ich folgendermaßen versucht habe, wobei mir noch viel unklar ist, und ich dabei einige Fragen habe (Kommentare):
section .data
zahl1 db 1000
zahl2 db 1500
section .text
global _start
_start:
mov eax, [zahl1] ;Zahl1 in Accumulator schieben
add eax, [zahl2] ;Zahl2 dazuaddieren
mov edx, eax ;Bekomme ich so den Wert aus dem Accumulator?
mov ebx,1 ;Ausgabekanal 1? (Warum eigentlich ebx, laut "Hello World"
mov eax,1 ;system call number (sys_exit)
int 0x80 ;Kernel benachrichtigen (muss das eigentlich geschehen)
Das Programm lässt sich zwar problemlos kompilieren und linken, aber es gibt einfach nichts aus.
Ich habe mich dabei an Hello World orientiert:
section .data
msg db "Hello World", 0x0A
len equ $ - msg
section .text
global _start
_start:
mov edx,len ;message length
mov ecx,msg ;message to write
mov ebx,1 ;file descriptor (stdout) <- Wozu ist das gut?, und warum ebx?
mov eax,4 ;system call number (sys_write) <- Wozu dient das?
int 0x80 ;call kernel
mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel
Wann muss eigentlich immer der Kernel aufgerufen werden?
Markus.