Cześć,
stawiam pierwsze kroki w asemblerze i napotkałem na problem. Miałem zmodyfikować kod z wyświetlania 5 razy Hello World na wyświetlanie tyle razy ile poda użytkownik poprzez klawiaturę. Pojawia się błąd przy linkowaniu:
hello.o: In function
petla': hello.asm:(.text+0x4d): relocation truncated to fit: R_X86_64_8 against
.data'
Prosiłbym o pomoc.
Tak w ogóle to są jakieś dobre poradniki zagraniczne z których można byłoby lepiej zrozumieć ten język?
section .data
napis: db 'Hello world!',10,0
dlugosc_napisu equ $-napis
liczba_iteracji: db 0
liczba_iteracji_dl equ $-liczba_iteracji
section .bss
licznik: resb 1
section .text
global _start
_start:
mov rax, 3
mov rbx, 0
mov rcx, [liczba_iteracji]
mov rdx, [liczba_iteracji_dl]
int 80h
mov byte [licznik],0
petla:
inc byte [licznik]
mov rax,4 ;funkcja systemowa (system call) nr 4: sys_write
mov rbx,1 ;stdout
mov rcx,napis ;adres poczatku ciagu tekstowego
mov rdx,dlugosc_napisu ;liczba znakow ASCII do wyswietlenia
int 80h ;wywolanie przerwania sys. Linux
cmp byte [licznik],liczba_iteracji
jnz petla
mov rax,1 ;funkcja systemowa (system call) nr 1: sys_exit
mov rbx,0 ;return 0
int 80h