Votre question

adressage de la memoire exercice

Tags :
  • Programmation
Dernière réponse : dans Programmation
12 Avril 2006 17:01:27

Bonjour a tous j ai un exercice que je n arrive pas a resoudre car je ne comprend pas trop le raisonement merci d avance j ai enormement besoin de votre aide :
somme d un petit positif (000f) avec un petit positif (000f)
-a

2A5B : 0100 mov ax,000f
2A5B : 0103 mov bx,000f
2A5B : 0106 add ax,bx
2A5B : 0108

-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2A5B ES=2A5B SS=2A5B CS=2A5B IP=0100 NV UP EI PL NZ NA PO NC
2A5B:0100 B80f00 mov AX,000f
-t


AX=000F BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2A5B ES=2A5B SS=2A5B CS=2A5B IP=0103 NV UP EI PL NZ NA PO NC
2A5B:0103 BB0f00 mov BX,000f
-t


AX=000F BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2A5B ES=2A5B SS=2A5B CS=2A5B IP=0106 NV UP EI PL NZ NA PO NC
2A5B:0106 BB0f00 add AX,BX
-t


AX=000F BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2A5B ES=2A5B SS=2A5B CS=2A5B IP=0108 NV UP EI PL NZ NA PO NC
2A5B:0108 06 PUSH ES
-




Autres pages sur : adressage memoire exercice

12 Avril 2006 17:07:59

Euh...pourrais-tu annoncer le langage que tu utilises pour ta programmation ?
12 Avril 2006 17:47:25

je pense que c'est un exercices avec l utilitaire debug l exercice est tel quel dans mon syllabus mais maleuresement il n'est pas expliqué comment le resoudre :s
Contenus similaires
Pas de réponse à votre question ? Demandez !
12 Avril 2006 17:49:33

c'est de l'ASM, mais ce que tu nous montre là c'est ton exercice que tu as essayé de faire mais qui ne marche pas ? ou bien l'exercice consiste a faire qq chose avec ce code ?
12 Avril 2006 18:02:15

c'est l exercice lui meme non resolu
je ne comprend pas comment le resoudre je sais pas si c'est de la programation je l ai posté ici mais je sais pas si c'est la bonne section
a b L Programmation
12 Avril 2006 19:42:50

Tu mets la valeur 15 dans le registre d'accumulation AX (16 bits):
MOV AX, 000f

Tu mets la valeur 15 dans le registre BX:
MOV BX, 000f

tu fais l'addition AX := AX + BX:
ADD AX, BX

Par contre je ne comprend pas ta trace.
A mon avis, elle est traffiquée...
car les registres ne sont pas changés alors que le code machine BB 0F 00 assigne clairement 000F dans le registre BX (il ne peut en être autrement).
Ensuite, ceci: 2A5B:0106 BB0f00 add AX,BX
est faux car le langage machine de "ADD AX,BX" est 01D8, or toi tu mets BB0f00. En plus, ce code est sur 3 octets, donc le registre IP aurait dû être incrémenté de 3. Il est incrémenté de 2 (comme par hasard la taille de 01D8).
Donc ces traces sont tout simplement fausses, car un processeur qui fonctionne comme ceci ne démarrerait aucun OS.
D'où ma conclusion: ces traces sont traffiquées ;-)
12 Avril 2006 19:49:07

Mdr CRicky, respect mon gars ^^
12 Avril 2006 20:42:01

merci a toi en lisant la theorie j ai compris que
DS:SI =adresse des donné
SS:BP = adresse de base de la pile etc
ca m apprendra a ne pas lire la theorie :-P

et en fait dans l enoncé je me suis trompé en la recopiant ca m apprendra a copier collé ^^


somme d un petit positif (000f) avec un petit positif (000f)
-a

2A5B : 0100 mov ax,000f
2A5B : 0103 mov bx,000f
2A5B : 0106 add ax,bx
2A5B : 0108

-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2A5B ES=2A5B SS=2A5B CS=2A5B IP=0100 NV UP EI PL NZ NA PO NC
2A5B:0100 B80f00 mov AX,000f
-t


AX=000F BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2A5B ES=2A5B SS=2A5B CS=2A5B IP=0103 NV UP EI PL NZ NA PO NC
2A5B:0103 BB0f00 mov BX,000f
-t


AX=000F BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2A5B ES=2A5B SS=2A5B CS=2A5B IP=0106 NV UP EI PL NZ NA PO NC
2A5B:0106 01D8 add AX,BX
-t


AX=000F BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2A5B ES=2A5B SS=2A5B CS=2A5B IP=0108 NV UP EI PL NZ NA PO NC
2A5B:0108 06 PUSH ES
-




12 Avril 2006 21:20:57

Bon j ai encore une question j espere la derniere ^^


a quoi correspondent ces chiffres
B80f00 , BB0F00 , 01D8

merci d avance
a b L Programmation
12 Avril 2006 21:54:16

Ces valeurs sont la correspondance en langage machine.
Ces valeurs sont les bits envoyés au CPU
le MOV AX, xxyy en assembleur est traduit en langage machine B8 yy xx avec B8 (hexa) = 10111000 (binaire)

donc si on envoie dans les papates du microprocesseur les bits 10111000 (un 1 c'est du courant envoyé, et 0 pas de courant), alors le microprocesseur déclenche le circuit qui permet de remplir le registre AX des 16 bits suivants.

Donc en fait, ces nombre te montrent la corrélation directe entre l'assembleur de DEBUG et le langage machine.

Sinon, l'assembleur en lui-même n'est pas compliqué, c'est une simple liste de commandes qui permettent de faire des opérations de base et accéder à la mémoire, bref ce n'est que de la documentation.
Ce qui est compliqué c'est de faire un programme en assembleur ;-)
a b L Programmation
12 Avril 2006 21:56:28

Citation :
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2A5B ES=2A5B SS=2A5B CS=2A5B IP=0100 NV UP EI PL NZ NA PO NC
2A5B:0100 B80f00 mov AX,000f
-t


AX=000F BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2A5B ES=2A5B SS=2A5B CS=2A5B IP=0103 NV UP EI PL NZ NA PO NC
2A5B:0103 BB0f00 mov BX,000f
-t


AX=000F BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2A5B ES=2A5B SS=2A5B CS=2A5B IP=0106 NV UP EI PL NZ NA PO NC
2A5B:0106 01D8 add AX,BX
-t


AX=000F BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2A5B ES=2A5B SS=2A5B CS=2A5B IP=0108 NV UP EI PL NZ NA PO NC
2A5B:0108 06 PUSH ES
-

Il n'empêche que ça ne reste pas bon, car le registre BX reste toujours à 0 après 2A5B:0103 BB0f00 mov BX,000f

Et après le ADD, le AX doit être à 001E (puisque 0F+0F=1E)

PS: il te reste plus qu'à déchiffer ma signature ;-)
13 Avril 2006 00:05:58

merci j ai bien compris ta reponse, donc si j envoie un nombre dans AX j aurai toujours B8 avant le chiffre a envoyé et pour BX j aurai toujours BB parceque j ai un autre exemple ou pour un envoie dans AX il est mis BB ca doit etre une erreur ?

j avais encore fait une faute pour l exercice decidement ^^
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2A5B ES=2A5B SS=2A5B CS=2A5B IP=0100 NV UP EI PL NZ NA PO NC
2A5B:0100 B80f00 mov AX,000f
-t


AX=000F BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2A5B ES=2A5B SS=2A5B CS=2A5B IP=0103 NV UP EI PL NZ NA PO NC
2A5B:0103 BB0f00 mov BX,000f
-t


AX=000F BX=000F CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2A5B ES=2A5B SS=2A5B CS=2A5B IP=0106 NV UP EI PL NZ NA PO NC
2A5B:0106 01D8 add AX,BX
-t


AX=001E BX=000F CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2A5B ES=2A5B SS=2A5B CS=2A5B IP=0108 NV UP EI PL NZ NA PO NC
2A5B:0108 06 PUSH ES
-

pour la signature j essaierai demain je suis plus en condition la vu l heure :-P et encore ...
a b L Programmation
13 Avril 2006 13:21:33

De toutes façon faut se mettre à la place du processeur: être bête ;-)
Tu vois BB alors ça ne peut être qu'un MOV BX,...
Tu vois B8 alors ça ne peut être qu'un MOV AX,...

Si c'était contextuel (c'est à dire qu'une instruction comme BB pouvait avoir plusieurs significations), alors les octets suivants permettraient de préciser ce contexte. Or les 2 octets suivants servent à l'assignation de la valeur, donc on ne pourrait pas mettre toutes les valeurs possibles dans le registre si certaines valeurs précisaient le contexte. Donc, les instructions de type MOV ne sont pas contextuels et il y a bijection entre les instruction en langage machine et les instructions assembleurs.
13 Avril 2006 15:27:58

ok j ai tout compris maintenant ! merci beaucoup pour ton aide ;-)
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS