Assemblerdə böyük ədədlər hesablanmır
Salam dostlar
Assemblerdə hesablama üçün kiçik proqramlar yazanda həmin proqram kiçik ədədlər üçün doğru işləyir ancaq əddləri böyük edəndə nəticə səhv olur. Məsələn:
[code]
#prog1.s
.data
begin:
.long 1
end:
.long 10
.text
.globl _start
_start:
movl $0, %edx
movl begin, %eax
movl end,%ecx
for:
cmpl %eax, %ecx
js son
addl %eax, %edx
addl $1, %eax
jmp for
son:
movl %edx, %ebx
movl $1, %eax
int $0x80
[/code]
Bu proqramı 1-dən 100-ə qədər ədədlərin cəmini toplamaq üçün yazmışdım ancaq end dəyişəni 100 olanda nəticə olaraq 186 yazıldı nəticə səhv oldu ancaq 5-10 yazanda nəticə düzgün olur.
İndi necə edim ki proqram böyük ədədlər üçün də düzgün işləsin?