PDA

Просмотр полной версии : UNIX : NASM: не выводится значение переменной



VEhES
13.10.2007, 21:40
Привет, сетяне!

Подскажите пожалуйста, почему в этой программе не выводится переменная nomer?

SECTION .text
global _start:

_start:

mov eax, 5
mov [numer], eax

mov eax, 4
mov ebx, 1
mov ecx, numer
mov edx, 2
int 0x80

mov eax, 4
mov ebx, 1
mov ecx, hello
mov edx, 6
int 0x80

mov eax,1
mov ebx,0
int 0x80

SECTION .data

hello db "Hello", 0xa
numer db 0


Заранее благодарен!

somewhere
15.10.2007, 13:31
Начнем сначала:
1. Переменной nomer не существует
2.
numer db 0
Переменная определена как байт, а мы пишем туда 4 байта. Последующие 3 байта не определены и вообще выходят за границы доступной для программы памяти.

mov eax, 5
mov [numer], eax
3.
mov [numer], eax
Неизвестно как воспримет это компилятор, либо запишет eax в numer, либо возьмет из numer 4 байта как смещение и только потом запишет eax.