Математический расчет в Ассемблере - Assembler (223612)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. будьте добры помочь, не могу найти ошибку в коде, конкретно тут.
;----------------------------------
;расчет z=(x^3-y)/12y
;--------------------------------
xor eax,eax
xor edx,edx
mov al, y
mov dl, 12
imul dl      ;ax=12*y
push EAX
xor eax,eax
mov al,x
shl al,3        ;x^3
sub ax,3        ; x^3-3
mov DX,AX
pop EAX
xor EDX,EDX  
div EAX     ; ax=z
программа выдает неверные значения, что может быть не так?

Решение задачи: «Математический расчет в Ассемблере»

textual
Листинг программы
mov al,[X]
cbw  ;ax=X
mov bx,ax  ;bx=X
imul al  ;ax=al*al
imul bx  ;dx:ax=ax*bx (X^3)
 
mov bl,[Y]
xor bh,bh  ;cx=Y
 
sub ax,bx
sbb dx,0  ;dx:ax=dx:ax-bx (X^3-Y)
 
imul bx,bx,12 ;bx=Y*12
idiv bx  ;ax=dx:ax/bx (X^3-Y)/(12*Y), dx=остаток
 
ret
 
X db 7
Y db 3

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.8 из 5