[nasm] newbie question

0

Cześć, przypuśćmy mam takie coś:

str db 'hello'

I chcialbym wyswietlic na stdout tylko str[0], czyli 'h', no to robie sobie coś takiego:

section .data
str db 'hello'

section .text
global _start

_start:
; write
mov eax, str
mov ebx, 1 ; stdout
mov ecx, [eax + 1] [b]; litera 'h' ?[/b] 
mov edx, 1 ; długość str

xor eax, eax
mov eax, 4 ; write
int 80h

;exit
xor ebx, ebx
inc ebx
int 80h

Tylko coz, jest blad, zrobilem: strace ./hyhy

execve("./hyhy", ["./hyhy"], [/* 51 vars */]) = 0
write(1, ptrace: umoven: Input/output error
0x61686f, 1)                   = -1 EFAULT (Bad address)
_exit(1)                                = ?

Z tego wynika, że źle zadresowałem, mógłby mi ktoś powiedzieć, jak powinno wyglądać prawidłowe zadresowanie ?

//na przyszłość - są tagi <asm> i <code> - nie ma [code] - M

0

jeśli masz

str db 'hello'
mov eax, str

to w eax masz adres litery 'h' więc jeśli chcesz ją przenieść do cl (tak to rozumiem) to napisz:

mov cl, byte ptr [eax]

1 użytkowników online, w tym zalogowanych: 0, gości: 1