Inscription / Connexion Nouveau Sujet
Niveau première
Partager :

Question informatique exo 2

Posté par
Rasengan
07-01-20 à 21:54

Bonjour, je voudrai savoir(avant de poster un sujet) si vous aidez aussi avec l?informatique ? Je suis en première et j?ai du mal un exercice de NSI

Merci d?avance

*** message dupliqué ***
Assembleur
Nous avons vu en cours le programme permettant de multiplier deux nombres en langage assembleur: On avait utilisé @x, @y, @somme, @0, et @1 pour noter les adresses des variables et constantes en mémoire.
L'adresse @0 pointe vers la valeur 0. L'adresse @1 pointe vers la valeur 1.
On utilise les labels début:, vrai: et fin: pour les numéros d'instructions.
Compléter le code assembleur:
LDA @0
MOV A R
STR @somme

début:
LDA @y
MOV A R
JPP vrai:
JMP fin:
vrai:
LDA @somme
LDB @x
ADD
STR @somme
LDA @y
LDB @1
SUB
STR @y
JMP début:
fin:
Compléter la grille suivante afin que ce programme soit réalisé par le processeur M999.
Vous choisirez les cases correspondant à @x, @y, @somme, @0, @1, début:, vrai, et fin: (Il serait très gênant que deux élèves choisissent les mêmes cases...)

IMAGE

Posté par
Rasengan
re : Question informatique 07-01-20 à 22:11

L'image :

Question informatique

Posté par
mathafou Moderateur
re : Question informatique exo 2 08-01-20 à 11:18

Bonjour,

par le processeur M999.
c'est qui celui là ?

Compléter le code assembleur :
pour compléter un code il faut savoir quel est le but du programme
si c'est de multiplier le contenu de la case x par celui de la case y, il a été vu en cours !!
il me semble complet ce programme !
(en devinant la signification des instructions ressemblant  à toutes celles des processeurs que je connais (mais ça fait longtemps .) et JPP voulant très certainement dire
"sauter à l'adresse indiquée si ≥ 0"
va savoir qui est "≥ 0" et on devinera que c'est la dernière donnée manipulée)

il ne manque donc que les définitions des variables pour l'assembleur
(pour le logiciel qui va traduire ce langage symbolique en langage machine binaire)
et on dit qu'il faut choisir les cases qui contiendront x, y, et somme etc
on dit même que tu dois t'entendre avec tes collègues pour ne pas choisir la même case qu'eux !
(ça va, il y a 100 cases disponibles)

la question "remplir le tableau" est très peu claire

s'agit il de traduire ce programme en langage machine dans les cases du tableau ??
le travail fait normalement par le logiciel de traduction de assembleur (symbolique) en langage machine binaire ??
seul toi connais ici le codage des instructions sur ce "processeur M999" connu de personne ...
ou juste de les écrire en symbolique dans les cases en ne traduisant que les symboles x, y etc ?

et puis un processeur qui ne peut exécuter que des programmes de 100 instructions maximum .. hum ...

bref à mon avis tu en sais énormément plus que quiconque ici sur la question.

Posté par
Leile
re : Question informatique exo 2 08-01-20 à 19:43

Rasengan

le processeur M999  a son propre jeu d'instructions
regarde ce lien :


il s'agit donc de traduire  l'algo de multiplication en langage M999..

Par exemple si tu places 399   dans  une cellule,  ça correspond à l'instruction NOP (donc ca ne fait rien..).
300  :   correspond à ADD   ajouter A et B, placer le résultat dans R.

J'espère que ça va t'aider..

Dis moi comment tu avances  (éventuellement, je continuerai à creuser)..

Posté par
Leile
re : Question informatique exo 2 08-01-20 à 19:48

mathafou

par le processeur M999.  c'est qui celui là ?  :
pour info :

et effectivement, il n' a que 100 mots-mémoire ..

Après, quel est  l'interêt de faire programmer un processeur par des élèves de 1ère (déjà, leur faire faire du langage machine LMS, ou même de l'assembleur... bof). ?

Posté par
Leile
re : Question informatique exo 2 08-01-20 à 20:05

Rasengan,

exemple :
LDA @0           peut devenir     070   (si tu choisis   la cellule 70 pour @0  qui contient la valeur 0)

MOVE  A R   devient   402
STR   @somme    devient  275  (si tu choisis la cellule 075  pour @somme)

etc ..

Posté par
Rasengan
re : Question informatique exo 2 08-01-20 à 22:37

Je ne comprend pas vraiment….Pourquoi il y a écrit vrai, fin, faux,...

Je sais juste qu'il faut regarder le jeu d'instructions pour savoir à quoi correspond les nombres…

Posté par
Rasengan
re : Question informatique exo 2 08-01-20 à 22:37

J'essaie de comprendre depuis plus d'une heure

Posté par
Leile
re : Question informatique exo 2 08-01-20 à 22:54

les labels : vrai, fin ou début sont des adresses : si tu préfères, ce sont des n° de cellules du M999 .

JMP fin      va se traduire    par   "aller à l'adresse fin".
toi, tu vas   décider   de l'endroit ou se trouve  "fin"  par exemple , on dit que c'est la cellule 83..      
alors    JMP  fin   devient   583.

et en cellule 83, tu mettras l'instruction qu'on doit faire en fin.

de même vrai est une adresse  :  tu choisis que l'adresse "vrai"   c'est la cellule n° 20 par exemple.
JPP  vrai    équivaut  à   aller à l'adresse vrai si la valeur du registre  R est positive.
donc aller en 20 si R > 0
ca se traduit par  620  
et en 20, tu débutes les instructions à faire dans ce cas..
(LDA @somme, LDB @x, etc... ).

propose quelque chose, j'essaierai de te corriger.

Posté par
Leile
re : Question informatique exo 2 08-01-20 à 22:57

ne te décourage pas, on va le terminer ce soir !

Posté par
Leile
re : Question informatique exo 2 08-01-20 à 23:22

allez, voilà où j'en suis  :

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:

il faut peut etre placer des NOP sur les cellules vides entre les instructions... à voir..
C'est ok  pour toi ?

Posté par
Rasengan
re : Question informatique exo 2 08-01-20 à 23:22

Je peux vous envoyer mon cours ou c'est obligatoire de recopier ?

Ce que j'ai fais en cours c'est par exemple que l'on devait dire ce que provoque la mise en route d'une machine, par exemple dans la première case il y avait 399 (donc on ne fait rein), dans la deuxiee 011 donc on va a la case 11 (il y a 123), on mets donc 123 dans la case A,...ECT

Je dois choisir un nombre a mettre a coté de LDA @0,MOV A R et STR @somme ?

Posté par
Leile
re : Question informatique exo 2 08-01-20 à 23:24

messages croisés..
que penses tu de mon message de 23:22 ?

Posté par
Rasengan
re : Question informatique exo 2 08-01-20 à 23:42

Pourquoi 402 ? J'ai compris le 4 (car c'est mov), mais en essayant de faire votre code assembleur sur le tableau je n'y arrive pas, il faut noter 070 dans la case 070 pour commencer ?

Posté par
Rasengan
re : Question informatique exo 2 08-01-20 à 23:49

070 dans la première case pout commencer* puis mettre 70 dans la case A ? Et ensuite ?

Posté par
Leile
re : Question informatique exo 2 08-01-20 à 23:50

pourquoi 402 ?     MOV A R        4  pour MOV     et sur le lien que je t'ai donné  on voit la correspondance entre registre et N°
le registre A   : 0
le registre B : 1
le registre R : 2
d'où MOV A R ==> 402

on commence en case 00  : tu y inscris 070
puis en case  01      tu inscris 402
en case 02      : 275  

en case 4     (j'ai choisis que début serait en 04)  tu inscris 074
en case 5     : 402
etc...

Posté par
Leile
re : Question informatique exo 2 08-01-20 à 23:54

Rasengan @ 08-01-2020 à 23:49

070 dans la première case pout commencer* puis mettre 70 dans la case A ? Et ensuite ?


??  
non,
070     c'est une autre façon de dire   LDA @0
j'ai décidé que @0 était placé en case 70
0 au début ca veut dire "ranger dans le registre A"
070    ca veut dire "ranger en registre A ce qui est à la case 70)..

Posté par
Rasengan
re : Question informatique exo 2 09-01-20 à 00:04

Je dois écrire dans la case A(le registre A) dès le debut 70 ? Vous avez ecrit :"on commence en case 00  : tu y inscris 070" donc dans la case tout en haut à gauche je mets 070 ou 402 ?

Posté par
Rasengan
re : Question informatique exo 2 09-01-20 à 00:05

Et que dois-je mettre dans les cases R A et B (je sais que c'est au fur et a mesure)

Posté par
Rasengan
re : Question informatique exo 2 09-01-20 à 00:10

Et pourrez-vous m'aider demain si on a pas fini ? s'il vous plait

Posté par
Leile
re : Question informatique exo 2 09-01-20 à 00:22

oui, je pourrai t'aider demain si on n'a pas fini, mais pas le soir..

et franchement, je t'ai tout donné..
dans les cases A R et B, tu ne mets rien : c'est ton programme qui va le faire.
les cases  A R et B  sont des registres.
On  te demande juste de programmer   le M999, pas de remplir toutes les cases.

Ensuite, quand je te dis en case 00  tu écris 070, ça me semble clair..
c'est la 1ère case en haut à gauche..
tu dis "on commence en case 00  : tu y inscris 070" donc dans la case tout en haut à gauche je mets 070 ou 402 ?"  
je te dis d'y placer 070...
ensuite je t'ai écrit   de placer  402 dans la case suivante la n0 01..
et ainsi de suite.

dans la grille, au final, tu te retrouveras avec des nombres de 3 chiffres dans chaque cellule.
C'est ça le programme du processeur.

sur le lien suivant, tu vois un exemple de programme du M999. C'est juste un exemple. C'est pour te montrer qu'il n'y a finalement que des nombres dans les cellules, et rien dans les registres.


toi, il faudra que tu écrives en plus la valeur 0 dans la case 70 (la premiere case de la colonne 70) et la valeur 1 dans la case 71

Posté par
Rasengan
re : Question informatique exo 2 09-01-20 à 00:32

Pourtant en cours on mettait des choses dans R A et B selon le jeu d'instruction 0 signifie copie le mot mémoire d'addresse addr dans le registre A... Le lien que vous avez envoyé renvoi sur un tableau avec les cases vides.
Je vais y aller à demain

Posté par
Leile
re : Question informatique exo 2 09-01-20 à 00:39

tu dois arriver à quelque chose comme ça :

         00       10           20         30        40      50     60     70       80    90
0    070       075                                                                        0
1    402      173                                                                        1
2    275       300
3                   275
4    074       074
5    402       171
6    610       301
7    599       274
8                   504
9

en case 73 et 74  tu mettras les valeurs de x et y    et tu trouveras le resultat en case 75..
je quitte
bonne nuit.

Posté par
Leile
re : Question informatique exo 2 09-01-20 à 00:43

le lien que je t'ai donné ne renvoie pas à un tableau de cases vides ; regarde mieux.

en cours  tu as fait vu ce que faisais une instruction : tu as fait tourner un programme, et tu as noté ce qui venait s'inscrire dans les  registres..
Ici, on te demande juste de programmer M999, pas de le faire tourner. C'est différent.

Bonne nuit.

Posté par
Rasengan
re : Question informatique exo 2 09-01-20 à 10:22

Votre exemple(sur le lien) est exactement ce que j'ai fais en cours (sauf que moi ça va jusqu'à la case ou il y a écrit 042), et il y a une question : Que provoque la mise en route de la machine ?: Elle affiche 42, il s'agit du minimum entre les 2 nombres
Il y a aussi une 2eme exécution dans mon cours qui va jusqu'à 501 (comme dans votre exemple) et il y a écrit : I l s'agit du même programme min que le précédent à la différence près que c'est à l'utilisateur d'entrer les 2 valeurs

Il y a aussi dans mon cours un programme que l'on avait du écrire...

Posté par
Rasengan
re : Question informatique exo 2 09-01-20 à 10:25

Le faire tourner c'est à dire essayer le programme avec le jeu d'instruction ?

Posté par
Leile
re : Question informatique exo 2 09-01-20 à 13:44

tu as fait en cours davantage que je n'en ai jamais fait personnellement.. (j'ai découvert le code M999 hier..).

je t'ai donné ce que je pense correct comme réponse à ton exercice (mon message d'hier à 00:39)
la question était :
Compléter la grille suivante afin que ce programme soit réalisé par le processeur M999.
Vous choisirez les cases correspondant à @x, @y, @somme, @0, @1, début:, vrai, et fin:

c'est ce  que je t'ai proposé :  une grille complétée par le langage du M999, qui pourrait réaliser le programme assembleur donné, et j'ai choisi les cases pour @x, @y, @somme, @0, @1, début:, vrai, et fin:

je ne vois pas ce que je pourrais t'apporter de plus.. tout est dit.
Je te laisse vérifier mon codage M999, car tu en sais plus que moi à ce sujet..  
Bonne journée.

Posté par
Rasengan
re : Question informatique exo 2 09-01-20 à 13:52

C'est ça que je voudrai, je veux vérifier en l'essayant sur le tableau, étape par étape mais je n'y arrive pas... et que donne votre programme à la fin ?

Posté par
Rasengan
re : Question informatique exo 2 09-01-20 à 13:53

Qu'est ce qu'il affiche ?*

Posté par
Leile
re : Question informatique exo 2 09-01-20 à 16:28

j'ai découvert le code M999 hier....
  je t'ai donné une solution, le code,  je n'irai pas plus loin.
Je t'ai indiqué où j'ai choisi de placer @x, @y, @somme, @0, @1, début:, vrai, et fin:
et je t'ai précisé  "en case 73 et 74  tu mettras les valeurs de x et y    et tu trouveras le résultat en case 75.."
encore une fois, je te laisse vérifier, corriger éventuellement : je ne peux pas aller plus loin, je ne sais même pas comment on fait démarrer le programme sur M999.
par rapport à hier, où tu n'avais rien du tout,  j'ai beaucoup (trop?) avancé .
A toi de faire le reste.
Bonne journée.

Posté par
Rasengan
re : Question informatique exo 2 09-01-20 à 16:32

D'accord merci...Mais est-ce que les vérifications sont demandes ou tout ce que j'ai à rendre c'est le tableau rempli comme vous l'avez envoyé à 00h39 et le code assembleur a 23h22 ? Ainsi je pourrai faire mes autres devoirs et vérifier ça plus tard...

Posté par
Rasengan
re : Question informatique exo 2 09-01-20 à 16:36

D'ailleurs tout ce que j'ai fais est un cours en 1h30...



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1538 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !