Programmation en Assembleur

Louvitou -  
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

1 réponse

  1. nicocorico Messages postés 846 Statut Membre 138
     
    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        
    0