[assembleur] carry

bolo972 Messages postés 87 Statut Membre -  
 Utilisateur anonyme -
Bonjour,

j'ai un algo j'aimerais des explications sur quelque lignes.
Programme Générateur Pseudo Aléatoire
Début :
     BH <- 12h
boucle:
    AL <- BH
    Si (AL = 0) alors AL <- 0FFh Fin Si (cmp et Jxyz, le h signifie hexadécimal en assembleur)
    AL <- AL ET 0B8h (utiliser l'instruction AND de l'assembleur)
    BL <-0
   CX <- 8
   Répéter
     Décaler AL à droite de 1 rang (utiliser l'instruction SHR de l'assembleur)
     Si Carry = 1 alors BL <- BL + 1 Fin Si
     CX <- CX-1
   Jusqu'à CX = 0 (utiliser l'instruction LOOP de l'assembleur)
   Carry <- Bit 0 de BL (utiliser l'instruction SHR de l'assembleur)
   rotation de BH à droite avec le carry de 1 rang (utiliser l'instruction RCR)
Aller à l'étiquette boucle (instruction jmp de l'assembleur)
Fin


je ne comprends pas cette partie
 Carry <- Bit 0 de BL (utiliser l'instruction SHR de l'assembleur)
   rotation de BH à droite avec le carry de 1 rang (utiliser l'instruction RCR)
Aller à l'étiquette boucle (instruction jmp de l'assembleur)


Qqn pourrait m'expliquer

merci

1 réponse

  1. Utilisateur anonyme
     
    Salut,

    Bon je suis pas sur, mais je me suis dit qu'en explicant
    ce que j'en comprends tu y trouverais peut-être ton
    compte.

    Carry <- Bit 0 de BL (utiliser l'instruction SHR de l'assembleur)

    La valeur du carry bit du registre est défini par l'opération BL
    qui doit être "branch long" ou quelque chose du genre. Je ne
    connais pas l'instruction SHR ? "shifthighregister"?

    Sur un test BL, BLO,BLH le résultat est envoyé dans le carry
    bit pour savoir si l'on doit brancher dans un sens ou dans l'autre.

    rotation de BH à droite avec le carry de 1 rang (utiliser l'instruction RCR)

    ici une rotation à droite est une division par 2 de BH, pour décaler
    dans un sens ou dans l'autre (multiplié/divisé), il faut conserver
    la retenu pour l'insérer dans le décalage. RCR "RotateCarryRight"
    (calcul binaire, addittion,soustraction,multiplication,division,
    complément à 1 et complément à 2).

    Aller à l'étiquette boucle (instruction jmp de l'assembleur)

    Le travail est terminé, retourne au main.

    Lupin
    0