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

Низкоуровневое программирование портов, микроконтроллеров и т.д.

Модератор: Andy

Ответить
VEhES
Сообщения: 1
Зарегистрирован: 13 окт 2007, 21:11

13 окт 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
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

15 окт 2007, 13:31

Начнем сначала:
1. Переменной nomer не существует
2.
&quot писал(а):numer db 0
Переменная определена как байт, а мы пишем туда 4 байта. Последующие 3 байта не определены и вообще выходят за границы доступной для программы памяти.
&quot писал(а):mov eax, 5
mov [numer], eax
3.
&quot писал(а):mov [numer], eax
Неизвестно как воспримет это компилятор, либо запишет eax в numer, либо возьмет из numer 4 байта как смещение и только потом запишет eax.
It's a long way to the top if you wanna rock'n'roll
Ответить