Hallo Markus,
ok, danke, jetzt ist es mir schon mal teilweise klar.
gut, das ist doch schon mal was. ;-)
section .data
zahl1 dw 1000
zahl2 dw 1500
len equ $ - zahl1 ;Hierbei hab ich mich an Hello World orientiert
; das ergibt den Wert 4 (den Speicherbedarf von 2 WORDs)
section .text
global _start_start:
mov edx, len
mov ecx, [zahl1]
add ecx, [zahl2]
; jetzt enthält ECX den Wert 2500
mov eax, 4
mov ebx, 1
int 0x80
; und das OS versucht nun, einen String mit 4 Zeichen Länge
; auszugeben, der an der Speicheradresse 2500 beginnt
mov eax, 1 ;system call number (sys_exit)
int 0x80 ;Kernel benachrichtigen
Was habe ich jetzt wieder falsch gemacht?
Du hast den Unterschied zwischen String und Zahl nicht beachtet. Die Systemfunktion #4, die du hier verwendest, gibt einen _String_ aus, dessen Adresse (->Pointer) in ECX übergeben wird.
Wenn du einen Zahlenwert ausgeben möchtest, wird's _richtig_ anspruchsvoll. Dann müsstest du den Zahlenwert nämlich "von Hand" in einen String umwandeln. Für einen Einsteiger ist das eine verdammt harte Nuss.
So long,
Martin
Nicht jeder, der aus dem Rahmen fällt, war vorher im Bilde.