Assembleur / Hexadécimal

Fermé
Dedel_209 Messages postés 32 Date d'inscription mercredi 30 janvier 2008 Statut Membre Dernière intervention 28 septembre 2011 - 7 janv. 2009 à 16:18
 loupius - 7 janv. 2009 à 23:43
Bonjour,

Voici un exercice que je dois réaliser et j'aurais besoin de votre aide parce que je ne comprend pas.

1. Donner la valeur de CX en hexadécimal après chaque instruction :

mov cx, 11001110011100b
and ch, 010101b
rol ch, 1
add ch, 1fh
or cl, 101b
mov ax,2
and cx,ax


MERCI D'AVANCE POUR VOTRE AIDE
A voir également:

20 réponses

Dedel_209 Messages postés 32 Date d'inscription mercredi 30 janvier 2008 Statut Membre Dernière intervention 28 septembre 2011 3
7 janv. 2009 à 22:36
Ok je vais essayer
1
xav3601 Messages postés 3289 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 311
7 janv. 2009 à 16:19
il faudrait dire ce que tu ne comprend pas!
0
Dedel_209 Messages postés 32 Date d'inscription mercredi 30 janvier 2008 Statut Membre Dernière intervention 28 septembre 2011 3
7 janv. 2009 à 16:21
Je ne comprend pas comment réaliser cet exercice, merci d'avance si toi tu y arrives :P
0
xav3601 Messages postés 3289 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 311
7 janv. 2009 à 16:23
Ben il faut que tu prenne ligne par ligne et que tu ecrive en "francais" a cote ce que ca donne.
exemple:
mov cx, 11001110011100b -> cx = 11001110011100 en binaire!
0
Dedel_209 Messages postés 32 Date d'inscription mercredi 30 janvier 2008 Statut Membre Dernière intervention 28 septembre 2011 3
7 janv. 2009 à 18:55
Oui mais les lignes après il n'y a plus de CX alors que c'est CX qu'il faut trouvé la valeur et la mettre en hexadécimal
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dedel_209 Messages postés 32 Date d'inscription mercredi 30 janvier 2008 Statut Membre Dernière intervention 28 septembre 2011 3
7 janv. 2009 à 19:01
Oui mais après? Parce que CX n'est plus présent dans la ligne après c'est à ce moment là que je ne comprend pas
0
As-tu au moins lu le cours?
Pas de CX, certes, mais CH ou CX , il n'y a qu'une lettre de différence... !!!
0
loupius > loupius
7 janv. 2009 à 19:27
Pardon, je voulais dire:
Pas de CX, certes, mais CH ou CL , il n'y a qu'une lettre de différence... !!!
0
Dedel_209 Messages postés 32 Date d'inscription mercredi 30 janvier 2008 Statut Membre Dernière intervention 28 septembre 2011 3
7 janv. 2009 à 19:27
Haaa, ok d'accord. Petit problème de compréhension
0
Dedel_209 Messages postés 32 Date d'inscription mercredi 30 janvier 2008 Statut Membre Dernière intervention 28 septembre 2011 3
7 janv. 2009 à 19:29
Merci du conseil je peux enfin dormir en paix
0
Même si j'ai répondu avec une pointe d'humour ou de dérision, j'étais sérieux en disant:
Pas de CX, certes, mais CH ou CL , il n'y a qu'une lettre de différence... !!!
En effet, je voulais te mettre sur la voie.
Indice supplémentaire: CX = 100000000b * CH + CL.
OK ? ;=)
0
Dedel_209 Messages postés 32 Date d'inscription mercredi 30 janvier 2008 Statut Membre Dernière intervention 28 septembre 2011 3
7 janv. 2009 à 19:41
Lol j'ai compris...Enfaite en voyant CX g cru qu'il fallait trouver uniquement CX alors que enfaite le X représente une lettre quelconque.

Comme je vois que vous aimez les devinettes en voici une autre...LOL

Donner le code en assembleur correspondant au programme:

if (bVar < 5 && wVar >=325)
{
ax = cx * 3;
}
else
{
bx = cx * 4;
}
0
Non pas du tout, tu n'as pas lu ton cours!
X n'est pas une lettre au hasard:
CX est un registre 16 bits qui est la concaténation des registres CH et CL.
CH signifie: registre 'C byte high', c'est à dire octet haut; c'est un registre 8 bits,
CL signifie: registre 'C byte low', c'est à dire octet bas; c'est un registre 8 bits.
Donc au final: CX = 256h * CH + CX.
Ai-je été assez clair ?
0
Dedel_209 Messages postés 32 Date d'inscription mercredi 30 janvier 2008 Statut Membre Dernière intervention 28 septembre 2011 3
7 janv. 2009 à 19:51
Oui je viens de voir le tableau avec les 8 bits supérieurs et les 8 bits inférieurs.

Mais alors l'exercice que j'ai mis au tout début du POST ça donne quoi?
0
Et bien c'est simple, toute modification de CH ou CL modifie CX, et c'est à toi de trouver les valeurs de CX.
Bon courage.
0
Dedel_209 Messages postés 32 Date d'inscription mercredi 30 janvier 2008 Statut Membre Dernière intervention 28 septembre 2011 3
7 janv. 2009 à 19:56
Ok merci quand même. Le problème c'est que ça risque de prendre du temps et que je n'en ai plus.

Merci quand même...
0
Dedel_209 Messages postés 32 Date d'inscription mercredi 30 janvier 2008 Statut Membre Dernière intervention 28 septembre 2011 3
7 janv. 2009 à 21:40
pour le première ligne je trouve 339C h

pour la deuxième ligne je ne comprends pas cause de ce CH

CH vaut 33 h???
0
Merci toto,
Mais la 2ème ligne ne dit pas que CH = 033h, mais de faire un AND entre CH (byte high) et 015h.
Pigé? Je n'ai pas envie de faire ton exercice, je veux que tu comprennes.
0
Bonjour

loupius te l'a déjà dit et tu aurais déjà dû le savoir : CH ce sont les 8 bits de poids fort de CX, de même que CL sont les 8 bits de poids faible.
Qu'est-ce que tu ne comprends pas ? Ce que sont les poids forts ? Ce que fait l'instruction AND ?
0
Dedel_209 Messages postés 32 Date d'inscription mercredi 30 janvier 2008 Statut Membre Dernière intervention 28 septembre 2011 3
7 janv. 2009 à 21:50
Peut être que en me donnant la réponse de mon POST je pourrais plus facilement comprendre parce que je suis en train de me prendre la tête avec ça...


Merci d'avance pour votre réponse
0
bref, tu veux une réponse toute faite
bye
0
Dedel_209 Messages postés 32 Date d'inscription mercredi 30 janvier 2008 Statut Membre Dernière intervention 28 septembre 2011 3
7 janv. 2009 à 21:56
C'est pas ça...

C'est que j'ai mon examen demain à 8h30 et que j'ai encore pas mal de truc à faire.

Merci quand même
0
Dedel_209 Messages postés 32 Date d'inscription mercredi 30 janvier 2008 Statut Membre Dernière intervention 28 septembre 2011 3
7 janv. 2009 à 21:57
CH fait partie des 8 bits supérieur donc il prend la valeur 33 h

Ensuite que faire avec le and et 010101b ???
0
Après la 1ère ligne:
CX = 11001110011100b
La 2ème ligne
and CH, 010101b
est équivalente à: and CX, 00010101 00000000b
Si tu as compris, tu peux faire la suite.
0
Dedel_209 Messages postés 32 Date d'inscription mercredi 30 janvier 2008 Statut Membre Dernière intervention 28 septembre 2011 3
7 janv. 2009 à 22:12
Je comprends toujours pas.

Moi pour la deuxième ligne j'avais remplacer ch par 033h et comme 010101b = 15h

j'avais fait :
0 0 1 1 0 0 1 1
0 0 0 1 0 1 0 1
0 0 0 1 0 0 0 1

donc j'ai pensé que pour la ligne deux la valeur de CX était égal 11h en hexadécimal
0
Non, CX est un registre 16 bits, donc:
CX = 339Ch AND 1500h (soit CH tansformé en 16 bits)
soit en binaire:
00110011 10011100 and 00010101 00000000
00110011 10011100
00010101 00000000
-------- --------
00010001 00000000 ce résultat va dans CX
idem pour les autres instructions.
0
Dedel_209 Messages postés 32 Date d'inscription mercredi 30 janvier 2008 Statut Membre Dernière intervention 28 septembre 2011 3
7 janv. 2009 à 22:51
Merci j'ai enfin compris...Désole pour le temps qu'il a fallu

Maintenant j'ai un autre soucis! J'ai mis dans le POST un programme en C et il faut le traduire en assembleur je n'ai aucune idée comment faire

Alors si quelqu'un est insomniaque et qu'il peut m'aider ça m'arrangerai
0
Dedel_209 Messages postés 32 Date d'inscription mercredi 30 janvier 2008 Statut Membre Dernière intervention 28 septembre 2011 3
7 janv. 2009 à 23:00
donc pour la ligne trois de mon 1er POST ça fait : 001000100000000 ou bien je dois refaire à nouveau la même manipulation qu'au dessus??
0
Excuse-moi Delel mais j'ai fais une erreur; il faut dire que la programmation en assembleur, je n'en fais plus tous les jours.
En gros j'ai dit que dans une opération le registre 8bits était étendu en 16bits, c'est faux en fait c'est l'inverse; je vais donc m'expliquer:
L'opération 'and CH, 010101b ', signifie qu'on fait un AND entre 0001 0101 b et CH (c'est-à-dire la partie haute de CX).
Soit:
CX = 339Ch AND 15FFh (soit CH tansformé en 16 bits et FF pour ne pas modifier les poids faibles)
soit en binaire:
00110011 10011100 and 00010101 111111111
00110011 10011100
00010101 11111111
-------- --------
00010001 10011100 ---> ce résultat va dans CX


idem pour les autres instructions.
0
asmx86 Messages postés 20 Date d'inscription vendredi 26 décembre 2008 Statut Membre Dernière intervention 7 novembre 2009 15
7 janv. 2009 à 23:07
mov cx, 11001110011100b CX=339C h
and ch, 010101b CX=119C h
rol ch, 1 CX=229C h
add ch, 1fh CX=419C h
or cl, 101b CX=419D h
mov ax,2 CX=419D h
and cx,ax CX=0000 h
0