Hallo,
Es passt zwar nicht unbedingt hier rein, aber ich bin sicher, dass mich jemand diesbezüglich aufklären kann. Der folgende Code funktioniert:
segment .code
msg1 db "Message 1", 10
len1 equ $-msg1
msg2 db "Message 2", 10
len2 equ $-msg2
segment .text
global _start
_start:
mov eax, msg1
push eax
mov eax, msg2
push eax
mov eax, 4
mov ebx, 1
mov ecx, [esp+4]
mov edx, len1
int 0x80
mov eax, 1
int 0x80
Eines verstehe ich nicht. Wieso muss ich den Stackpointer gerade um vier erhöhen, um an den ersten String zu gelangen? Ich verstehe den Zusammenhang zwischen dem definierten Byte (das ja die Adresse des Strings enthält, wenn ich es richtig verstanden habe) und dem Platzverbrauch (offensichtlich 4 Adressen) auf dem Stack nicht.
Ich bin mal gespannt, wo mein Denkfehler ist.
http://www.apostrophitis.at
هؤا ﻻهى ثهى بعىيشةثىفشمهسفهسؤاثق مهىعءظفشمهﻻشىظنقهثلثقز
صشلف ثس تش ىهؤافو ةسظصهىيخصس شمس ﻻثفقهثﻻسسئسفثة ثهىغعسثفغفثىز
