Неправильная комбинация кода операции и операндов в сборке программы, которая дает среднее из двух целых чисел - PullRequest
0 голосов
/ 16 марта 2019

В начале я хочу сказать, что я новичок в сборке.Я хочу написать программу, которая сначала добавляет два числа, а затем делит результат на 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
...