Markus Pitha: Zwei Zahlen mit Assembler addieren und ausgeben

Beitrag lesen

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.

--
http://www.apostrophitis.at
STANDAR_D_  - ist das wirklich so schwer?