Доброго времени суток.
Писал простенькую программку посимвольного чтения с консоли, столкнулся с проблемой:
stack2.o: In function `Reading':
stack2.asm:(.text+0x43): relocation truncated to fit: R_386_8 against `.data'
Если правильно посчитал, то ругается на строку mov [ActBufLen], ecx после метки wt: . В Инете искал, решения подходящего не увидел.
Текст программы:
global _start
segment .text
_start:
mov ecx, 0; обнуляем счетчик
mov ebx, buf - 1; для послед-й записи цифр в массив
Reading:
add ebx, 0x1; адрес в массиве buf
cmp ebx, [BufEnd]; адрес конца массива
je wt
push ecx
push ebx
mov eax, 3; чтение
mov ebx, 0
mov ecx, [CurSymb]
mov edx, 1
int 80h
cmp byte [CurSymb], '0' ; проверка: введена цифра?
jl wt
cmp byte [CurSymb], '0' + 9
jg wt
pop ebx
mov byte [ebx], CurSymb ; кидаем текущий символ в ячейку массива
pop ecx
inc ecx; счетчик
jmp Reading ; переход к след цифре
wt:
pop ebx
pop ecx
mov [ActBufLen], ecx
cmp byte [ActBufLen], 0 ; были ли введены цифры?
je pc
q:
mov eax, 1 ;если не цифра
int 80h
pc:
jmp q
segment .data
CurSymb db 0
ActBufLen dd 0
buf times 10 db 0
BufEnd equ buf + 9