Assembleur / Hexadécimal
Dedel_209
Messages postés
37
Statut
Membre
-
loupius -
loupius -
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
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:
- Assembleur / Hexadécimal
- Éditeur hexadécimal - Télécharger - Édition & Programmation
- Logiciel assembleur - Télécharger - Édition & Programmation
- Ascii hexadecimal - Guide
- Hexadecimal en c - Forum Programmation
- Calcul héxadécimal en C++ - Forum C++
20 réponses
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!
exemple:
mov cx, 11001110011100b -> cx = 11001110011100 en binaire!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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;
}
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;
}
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 ?
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 ?
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?
Mais alors l'exercice que j'ai mis au tout début du POST ça donne quoi?
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...
Merci quand même...
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???
pour la deuxième ligne je ne comprends pas cause de ce CH
CH vaut 33 h???
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 ?
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 ?
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
Merci d'avance pour votre réponse
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
C'est que j'ai mon examen demain à 8h30 et que j'ai encore pas mal de truc à faire.
Merci quand même
CH fait partie des 8 bits supérieur donc il prend la valeur 33 h
Ensuite que faire avec le and et 010101b ???
Ensuite que faire avec le and et 010101b ???
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
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
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
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
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??
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
idem pour les autres instructions.
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.