Assembleur
Résolu
gilles81
Messages postés
67
Date d'inscription
Statut
Membre
Dernière intervention
-
gilles81 Messages postés 67 Date d'inscription Statut Membre Dernière intervention -
gilles81 Messages postés 67 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
mov ax , 0034h; ax = 52 (stocké sur 16 bits)
mov cl , al ; cl= les 8 bits de poids faibles de ax
le code ci-dessus permet de reduire la taille de ax. Quelqu'un peut-il m'expliquer ce qui se passe en réalité?
Qu'est qu'un bit de poids faible?un bit significatif?
Pouvez-vous me donner un exemple de cette règle:
La règle pour les nombres non signés est que tous les bits retirés soient
à 0 anfin que la convertion soit correcte. La règle pour les nombres signés est
que les bits retirés doivent soit tous être des 1 soit tous des 0. De plus, Le
premier bit à ne pas être retiré doit valoir la même chose que ceux qui l'ont
été. Ce bit sera le bit de signe pour la valeur plus petite. Il est important
qu'il ait la même valeur que le bit de signe original!
merci
mov ax , 0034h; ax = 52 (stocké sur 16 bits)
mov cl , al ; cl= les 8 bits de poids faibles de ax
le code ci-dessus permet de reduire la taille de ax. Quelqu'un peut-il m'expliquer ce qui se passe en réalité?
Qu'est qu'un bit de poids faible?un bit significatif?
Pouvez-vous me donner un exemple de cette règle:
La règle pour les nombres non signés est que tous les bits retirés soient
à 0 anfin que la convertion soit correcte. La règle pour les nombres signés est
que les bits retirés doivent soit tous être des 1 soit tous des 0. De plus, Le
premier bit à ne pas être retiré doit valoir la même chose que ceux qui l'ont
été. Ce bit sera le bit de signe pour la valeur plus petite. Il est important
qu'il ait la même valeur que le bit de signe original!
merci
A voir également:
- Assembleur
- Logiciel assembleur - Télécharger - Édition & Programmation
- Tp corrigé assembleur 8086 - Forum Programmation
- Assembleur 8086 - Forum Programmation
- Assembleur add mul div sus - Forum Assembleur
- Assembleur ✓ - Forum Programmation
1 réponse
Salut,
Pour ton exemple de code, voici comment est organisé eax:
EAX est sur 32 bits, soit 4 octets.
Ses deux octets de poids faible sont contenus dans le registre AX.
L'octet de poids fort de AX est dans AH et son octet de poids faible est dans AL.
Donc si tu mets 34h dans AX ça donne (si eax était égal à 0 avant celà):
Maintenant admettons de ecx était égal à 256, soit:
Si après tu fais:
Alors ecx ressemblera à ça:
Tu vois cette opération n'a modifié que la partie de basse de ecx (CL). La partie CH n'a pas bougé.
Pouvez-vous me donner un exemple de cette règle:
La règle pour les nombres non signés est que tous les bits retirés soient
à 0 anfin que la convertion soit correcte. La règle pour les nombres signés est
que les bits retirés doivent soit tous être des 1 soit tous des 0. De plus, Le
premier bit à ne pas être retiré doit valoir la même chose que ceux qui l'ont
été. Ce bit sera le bit de signe pour la valeur plus petite. Il est important
qu'il ait la même valeur que le bit de signe original!
Cette règle se rapporte à quoi? Ca me rappelle un peu la règle du décalage arithmétique vers la droite (sar) pour les signés et le décalage normal vers la droite (shr).
Pour ton exemple de code, voici comment est organisé eax:
EAX --------------------------------------- AX ------------------ AH AL ------- -------- ........ ........ ........ ........
EAX est sur 32 bits, soit 4 octets.
Ses deux octets de poids faible sont contenus dans le registre AX.
L'octet de poids fort de AX est dans AH et son octet de poids faible est dans AL.
Donc si tu mets 34h dans AX ça donne (si eax était égal à 0 avant celà):
EAX ----------------------------------------------------------------------- AX ---------------------------------- AH AL ---------------- ---------------- 00000000 00000000 00000000 00110100
Maintenant admettons de ecx était égal à 256, soit:
ECX ----------------------------------------------------------------------- CX ---------------------------------- CH CL ---------------- ---------------- 00000000 00000000 00000001 00000000
Si après tu fais:
mov cl , al
Alors ecx ressemblera à ça:
ECX ----------------------------------------------------------------------- CX ---------------------------------- CH CL ---------------- ---------------- 00000000 00000000 00000001 00110100
Tu vois cette opération n'a modifié que la partie de basse de ecx (CL). La partie CH n'a pas bougé.
Pouvez-vous me donner un exemple de cette règle:
La règle pour les nombres non signés est que tous les bits retirés soient
à 0 anfin que la convertion soit correcte. La règle pour les nombres signés est
que les bits retirés doivent soit tous être des 1 soit tous des 0. De plus, Le
premier bit à ne pas être retiré doit valoir la même chose que ceux qui l'ont
été. Ce bit sera le bit de signe pour la valeur plus petite. Il est important
qu'il ait la même valeur que le bit de signe original!
Cette règle se rapporte à quoi? Ca me rappelle un peu la règle du décalage arithmétique vers la droite (sar) pour les signés et le décalage normal vers la droite (shr).
si ax au départ contenait 256,et que nous y ajoutions 34h. aurions nous ceci:
EAX
-----------------------------------------------------------------------
AX
----------------------------------
AH AL
---------------- ----------------
00000000 00000000 00000001 00110100
-----------------------------------------------------------------------
CX
----------------------------------
CH CL
---------------- ----------------
00000000 00000000 00000001 00110100
a ton donc reduit la taille de ECX ou celle de EAX? si comment cela s'explique t il ?
Pour réduire la taille d'une donnée, il sut d'en retirer les bits les plus
signicatifs. Voici un exemple trivial :
mov ax, 0034h ; ax = 52 (stocké sur 16 bits)
mov cl, al ; cl = les 8 bits de poids faible de ax