Il est noté pour la première exécution dans mon cahier : elle affiche 42, il s’agit du minimum entre les 2 nombres
-----
Il est noté pour la première exécution dans mon cahier : elle affiche 42, il s’agit du minimum entre les 2 nombres
En relisant, les @0 et @1 m'ont perturbé et m'ont laissé penser qu'il s'agissait des valeurs contenues aux adresses 0 et 1.
En fait non, 0 et 1 ici sont des alias de case mémoire. Vraiment pas très futé de leur donner des valeurs numériques. Ce n'est pas pour rien que les langages informatiques (en tout cas ceux que je connais) ne permettent pas de commencer un identificateur par un chiffre.
Je rectifie donc le début du programme précédent:
NOP
LDA 11 donc charge 123 dans le registre A
LDN 12 donc charge 42 dans B
SUB donc R = 123 - 42 = 81
etc.
C'est surement vrai: j'ai un peu la flemme de vérifier.
Bref, il faut donc que tu traduises le code de ton exercice en opcodes et que tu les places dans la grille à partir de l'adresse 0
Je vais t'aider à démarrer.
Je pose arbitrairement que @0 se trouve à l'adresse 40 (et vaut donc 0 d'après l'énoncé): tu mets donc la valeur 0 dans la case 40
Ensuite, le programme démarre en 0
à toi de continuerCode:LDA @0 ce qui donne 040 dans la case 0 MOV A R ce qui donne 402 dans la case 1 (402 car 4 pour MOV, 0 pour A et 2 pour R)
Dernière modification par Jack ; 08/01/2020 à 23h36.
Pour str je sais que ça commence par 2 mais après je ne sais pas et pourquoi 0 pour A et 2 pour R ? J’essaie de comprendre avec le tableau...pour commencer je dois noter 040 dans la case 1 ?
C'est ce qui est noté au bas de la feuille du message #4
D'où sors-tu ce 40? De toutes manière non, puisque je t'ai dit qu'il fallait mettre 402 dans la case 1.J’essaie de comprendre avec le tableau...pour commencer je dois noter 040 dans la case 1 ?
Vous avez dit 040 dans la case 0
Dernière modification par Jack ; 09/01/2020 à 00h06.
Donc 040, signifie que je vais chercher le nombre dans la case 40 mais il n’y a rien ? Ensuite 402 signifie que je copie rs dans rd mais qui est rs et qui est rd ?
Si, comme je l'ai expliqué en #33
rs et rd sont des noms générique pour des registres. Ca peut être n'importe quel registre du processeur: A, B, R, etc.Ensuite 402 signifie que je copie rs dans rd mais qui est rs et qui est rd ?
dans notre cas, c'est A et R d'après ton énoncé
D’accord donc dans le registre A on a 0, puis on copie dans R et donc R est de 0 ? Ensuite on a str donc on dois faire quoi ?
C'est STR #somme. Donc on copie le contenu du registre R dans la mémoire somme. Tu mets somme où tu veux, je sais pas moi, en 41 par exemple.
C'est dans ton énoncé:Vous choisirez les cases correspondant à @x, @y, @somme, etc .
En 20 je mets par exemple 0 ?
pourquoi? A quoi correspond ce 0 dans l'énoncé?
à A et R non ? Puisque le registre A (qui a 0) a été copié dans R ? Vous avez dit à #33 que en 40 il y a 0 donc A a 0 et R 0 ?
Je dois quitter
A demain j’espère que vous pourrez encore m’aider
Ca n'est pas pareil que pour MOV. Tu vois rs et rd pour STR? Non, l'opérande est addr (donc address).
Bonne nuit et bon courage
Pouvez-vous me dire si c’est correct ?:
je choisis de placer
@0 en 70 (valeur 0)
@1 en 71 (valeur 1)
@x en 73
@y en 74
@somme en 75
vrai en 10
début en 4
fin en 99
je commence :
LDA @0 070 (là, on est en case 00)
MOV A R 402
STR @somme 275
début:
LDA @y 074 ( là on est en case 04)
MOV A R 402
JPP vrai: 610
JMP fin: 599
vrai:
LDA @somme 075 (là on est en case 10)
LDB @x 173
ADD 300
STR @somme 275
LDA @y 074
LDB @1 171
SUB 301
STR @y 274
JMP début: 504
fin:
(Ce n’est pas moi qui l’ai fait je veux savoir si c’est bien comme ça qu’il faut faire)
Et pourriez vous m’expliquer étapes par étapes ce qu’il fait (lorsqu’il copie dans le registre RAB,ce que signifie les chiffres par exemple 040 qu’il copie dans le registre A,...ECT)lorsque vous aurez le temps, je pense que si vous le faites je comprendrai
Je ne retrouve pas ce dont tu parles dans le programme.lorsqu’il copie dans le registre RAB,ce que signifie les chiffres par exemple 040 qu’il copie dans le registre A
registre RAB?
040?
Le registre R, A ou B. Selon le jeu d’instruction : 0 signifie copie le mot mémoire d’adresse addr dans le registre A...040 c’est juste un exemple, ça veut dire que l’on copie dans la case A, ce qu’il y a dans la case 40
A, B et R sont des registres, donc ne possèdent pas d'adresse en mémoire puisque faisant partie intégrante du processeur.
Comme les codes machine ne connaissent que les valeur numérique, "on" a décidé d'affecter une valeur numérique à chaque registre pour convertir les mnémoniques du programme assembleur en code machine: A correspondra à 0 , B à 1 et R à 2
Oui mais on peut copier quelque chose dans le registre ?:
Ce qu’il y a en adresse (case)40 dans le registre A par exemple
oui. LDA 40, qui a effectivement comme code machine 040
Je crois que c'est cette phrase qui m'avait embrouillé car pas trop claire:lorsqu’il copie dans le registre RAB,ce que signifie les chiffres par exemple 040 qu’il copie dans le registre A
Dernière modification par Jack ; 09/01/2020 à 15h26.
Oui pardon, le travail est à rendre demain,est-ce que c’est rapide à expliquer étape par étape ?
Qu'est-ce que tu ne comprends pas?
Le code assembleur déjà fais est fais par quelqu’un d’autre mais je ne veux pas rendre ce travail sans comprendre... Dans le cours, faire ce programme servait à afficher quelque chose dans la case 99 à la fin, de plus je ne comprends pas le code assembleur (que je dois par la suite recopier dans le tableau de 100 cases ?), j’aimerai que vous expliquiez les étapes du code assembleur (qu’est ce qu’il fait à chaque étape) et comment le vérifier sur le tableau à 100 cases (je sais que pour le tableau avec les 100 cases, on commence case par case en suivant le jeu d’instruction en commençant par la case 00)
Je ne comprend pas aussi comment noter le code assembleur dans le tableau
Dernière modification par Jack ; 09/01/2020 à 16h48.
Oui pardon pour ça c’est bon maintenant c’est ce que j’ai dit à #57