Proszę o poprawienie programu:
Kod:
;y=((x+2z)*1/2) + ((2x+2z)*1/2)+((3x+2z)*1/2)+((4x+2z)*1/2)
;made by Assarelliuss aka MrZabojad
;tutaj jest sam algorytm liczenia
;pisząc powołałem się na prawa logiki
;jeżeli coś nie działa to już nie moja wina
;problem rozwiązałem drzewkiem:
; ((x+2z)*1/2) + ((2x+2z)*1/2)+((3x+2z)*1/2)+((4x+2z)*1/2)
; ... \............... /........... /............. /
;......\............../............/............../
;........\.........../............/............../
;.........\........./............/............../
;.........\....+../............/............ /
;............\..../............/............ /
;.......... [wynik]......../............./
; ............\............ /............/
;............\....+......./............/
;............\............/............/
; ............ [wynik]............../
;........................\............/
;......................\.............../
;.......................\.............. /
;........................\.....+...../
;.........................\........./
;..........................\......./
;.......................... [wynik]
;
;tutaj Prośba o podanie dwóch liczb x i z
xor eax, eax
mov eax, [z]
mul 2 ;eax = 2z
add eax, [x] ; eax=2z + x
mul 1 ; mnożymy razy 1 ;w sumie nie potrzebne napisałem tylko by zgadzało się z równaniem
div 2 ;dzielimy eax przez 2
;w eax jest wynik ((x+2z)*1/2)
;wrzucam na stos eax
push eax
;((
mov eax, [x]
mul 2
push eax
mov eax, [z]
;)
mul 2
pop ebx
add eax, ebx
mul 1 ;też jedynie dla zgodności z równaniem
div 2
push eax ; w eax jest wynik ((2x+2z)*1/2)
;)
pop eax
pop ebx
add eax, ebx
push eax ; na stos wrzucamy wynik ((x+2z)*1/2) + ((2x+2z)*1/2)
;((3x+2z)*1/2)
mov eax, [x]
mul 3
push eax
mov eax, [z]
mul 2
pop ebx
add eax, ebx
mul 1
div 2
pop ebx
add eax, ebx ;dodajemy (((x+2z)*1/2) + ((2x+2z)*1/2)) do ((3x+2z)*1/2)
push eax ;wrzucamy na stos powyższy wynik
;((4x+2z)*1/2)
mov eax, [x]
mul 4
push eax
mov eax, [z]
mul 2
pop ebx
add eax, ebx
mul 1
div 2
; teraz końcowa część: sumujemy wszystko
pop ebx
add eax, ebx
mov [y] , eax
;tutaj napisz sobie wyświetlenie y
dd x 0
dd z 0
dd y 0
Ostatnio edytowane przez moderatora: