2017-01-08 2 views
-2

Bonjour J'essaye de calculer la fonction mathématique simple (2c-a)/(c + ax). Mais pour une raison quelconque toutes mes réponses sont 0. Compte tenu: a - b, b - w, c - w, x - w, y - bCalcul mathématique simple d'assemblage

MOV ax, 2 
MUL c ; dx:ax=2c 
JC kl1 ; sandauga netilpo i ax 
XCHG ax, dx 
MOV al, a 
XOR ah, ah 
ADD dx, ax ; c^2-a 
JC kl1 
MOV al, a 
MUL x[si] ; a*x 
JC kl1 ; sandauga netilpo i ax 
ADD bx, ax ; ax+c 
JC kl1 
CMP al, 0 
JE kl2 ; dalyba is 0 
MOV ax, dx 
XOR dx, dx 
DIV bx ; ax=rez 
re: 

Merci pour toutes les idées.

+1

Est-ce un assembleur x86? Vous devez étiqueter votre question avec le processeur et/ou le jeu d'instructions approprié. –

+1

Utilisez un débogueur pour faire un pas de votre programme et voir où il va mal. Pour commencer, 'ADD dx, ax' n'a pas l'air de calculer' -a' plus comme '+ a'. Alors 'MUL x [si]' détruit 'dx' là où vous avez eu votre résultat (sauf s'il s'agit d'une multiplication de la taille d'un octet). En outre, nous ne savons pas ce que «x [si]» est, aucune mention de cela dans votre question. Vous faites ensuite 'ADD bx, ax' sans que' bx' ne soit chargé avec quoi que ce soit. – Jester

Répondre

0

suivre cet exemple si vous avez un problème à court quand une erreur est produit expression = (2 * c-a)/(c + a * x)

mov ax, c; Axe de charge avec variable c

shl ax, 1; multiplay c * 2

sub ax, a; 2c - a

mov parte1, ax; résultat de magasin

mov ax, a; charge ax avec variable a

mov bx, x; charge bx avec variable x

mul bx; ax = a par x

ajouter ax, c; c + hache

mov parte2, hache, résultat du magasin

hache de poussée; conserver la dernière seconde opérande calcolus d'expression

de mov ax, parte1; axe de charge avec parte1 variable qui est le premier opérande de l'expression

bx pop; charge bx avec parte2 variable qui est le deuxième opérande d'expression

div bx; risultato = parte1/parte2 = ax: dx

hache = partie int dx = repos

j'espère que vous hel.