В начале я хочу сказать, что я новичок в сборке.Я хочу написать программу, которая сначала добавляет два числа, а затем делит результат на 2, поэтому я хочу получить в среднем два числа.Проблема в разделе после деления, но программа без этого раздела о делении работает хорошо и выводит сумму.
section .data
mess1 db 'Podaj pierwsza liczbe: '
len1 equ $- mess1
mess2 db 'Podaj druga liczbe: '
len2 equ $- mess2
mess3 db 'Wynik: '
len3 equ $- mess3
section .bss
zmienna1 resb 4
zmienna2 resb 4
wynik resb 8 ;result
section .text
global _start
_start:
mov eax,4
mov ebx,1
mov ecx,mess1
mov edx,len1
int 0x80
mov eax,3 ;sys_read to 3
mov ebx,0 ;stdin
mov ecx,zmienna1
mov edx,4 ;4 to rozmiar
int 0x80
mov eax,4
mov ebx,1
mov ecx,mess2
mov edx,len2
int 0x80
mov eax,3
mov ebx,0 ;sys_read i stdin
mov ecx,zmienna2
mov edx,4 ;4 rozmiar
int 0x80
mov eax,4
mov ebx,1
mov ecx,mess3
mov edx,len3
int 0x80
;Teraz wrzuc zmienna1 do eax, a zmienna2 do ebx
; odejmij ASCII-owe '0' aby przekonwertowac na dzisiejtne
mov eax,[zmienna1]
sub eax,'0'
mov ebx,[zmienna2]
sub ebx,'0'
add eax,ebx
add eax,'0' ;zamien na binarne z decymalnego
mov [wynik],eax
div wynik,'2'
add wynik,'0'
;pokaz sume
mov eax,4 ;
mov ebx,1
mov ecx,wynik
mov edx,8 ;8 to rozmiar tego wyniku z bss
int 0x80
exit:
mov eax,4
xor ebx,ebx
int 0x80