
CJG-SX
(usa Slackware)
Enviado em 09/08/2012 - 20:49h
Olá a todos. Esta minha primeira postagem, por isso peço desculpas se faltar com a etiqueta do forum.
Meu problema é o seguinte: estou tentando reescrever os exercicos do livro 'Linguagem assembly para IBM PC' de Peter Norton, para assembly NASM/GCC/Linux.
Escrevi o seguinte código, referente ao programa do capitulo 4 do livro:
http://pastebin.com/GmW1nyPw. O comando nasm -f elf inb.asm, passa sem problemas, mas quando entro o comando gcc -o inb inb.o retorna o seguinte erro:
inb.o: In function `main':
inb.asm:(.text+0x2f): relocation truncated to fit: R_386_16 against `.bss'
collect2: ld returned 1 exit status
O Mais extranho é que quando pesquisei na WEB sobre o problema, descobri que ele ocorre quando se tenta manipular mais de 2GB de dados. Só que meu buffer tem 8 bytes.
Extranho também é o fato de que quando tentei com um buffer de apenas um byte, o programa compilou normalmente e rodou perfeito. Mas como a sys_write altera o valor de ecx para imprimir na tela, eu achei mais conveniente criar um buffer de oito bytes e chamar a sys_write apenas uma vez, e a partir daí começou a dar o erro.
Grato pela ajuda de todos.