Programmation en Assembleur
Louvitou
-
nicocorico Messages postés 846 Statut Membre -
nicocorico Messages postés 846 Statut Membre -
Bonjour,
Pouvez vous m'aidez svp a ecrire un programme en assembleur qui resout une equation du second degre genre Y= 5x2 -2x +6 ou la valeur de X est enregistree dans AL et le resultat de l'equation (Y) est retourne dans AX
Pouvez vous m'aidez svp a ecrire un programme en assembleur qui resout une equation du second degre genre Y= 5x2 -2x +6 ou la valeur de X est enregistree dans AL et le resultat de l'equation (Y) est retourne dans AX
1 réponse
-
L'assembleur étant très orienté calcul pur, c'est presque aussi simple qu'en language de haut niveau, et voici la marche à suivre sous forme de fonction :
-> en assembleur 16 bits : Function Equation(Valeur: Byte): Word; // valeur dans AL asm Xor AH,AH; // Met 0 dans AH car il fera partie de la multiplication Mov CX,AX Imul AX,AX,05; // On multiplie AX par lui-même et 5 Add CX,CX; // Multiplie par 2 Sub AX,CX; Add AX,06; end; // Retour de fonction via AX -> en asm 32 bits : Fonction Equation(Valeur: Byte): DWord; asm Movzx EAX,AL; // Conserve AL seulement Lea ECX,[EAX+EAX-06] // Lea permet de faire des opérations simples, en préfèrant ici EAX+EAX à EAX*2 car l'opcode est plus léger Imul EAX,EAX,5; // On multiplie EAX par lui-même et 5 Sub EAX,ECX; // On soustrait 2x et -6 (donc +6) end; // Retour de fonction via EAX