2016-07-03 4 views
0
mov 8[+r1], 1337 

Modifier, après avoir lu le fil recommandé de dwelch je reçois à (à supposer que je l'ai compris à droite):Ai-je changé l'instruction d'assembleur donnée (très courte) correctement?

add #8, r1 
mov #1337, r2 
mov [r1], [r2] 
sub #7, r1 

Est-ce exact ou ai-je fait des erreurs?

Information que nous avions sur l'assembleur:

  • n[+rx] registre indexé avec pré-incrément; n est la valeur d'index et rx est s'inscrire x
  • rx Inscrivez-vous directement face

  • [rx] registre d'adressage indirect

  • #n adressage immédiat

Nous ne pouvons utiliser add, sub, mov. Sauf pour r1, nous pouvons en outre modifier r2 si nécessaire.

J'espère que je l'ai fait correctement?

+0

Pourquoi le sous-numéro 1336, r2 est-il nécessaire? –

+0

C'est/devrait être nécessaire pour l'incrément +1. Vous le soustrayez de 1337 et obtenez +1 incrément (incrément nécessaire à cause de [+ r1]). – rpbudd

+0

Puisque 'r1' utilise le pré-incrément, quelle serait l'utilité de le faire pour' r2'? –

Répondre

1
add #8, r1 
mov #1337, r2 
mov [r1], [r2] 

Cela ne semble pas intégrer la pré-incrément sur le registre r1.
Il suffit d'ajouter au lieu de .

add #9, r1 
mov #1337, r2 
mov [r1], [r2] 
+0

Je pense que le problème est la limite dans la tâche: "Sauf pour r1 nous pouvons en outre modifier r2 si nécessaire." Donc, il ne serait pas permis pour moi de changer # 8 à # 9 ou ai-je tort? Tyvm pour votre aide btw! – rpbudd

+0

Puisque vous avez indiqué "* I * changé en", nous pensons tous que * vous * avez écrit les 4 lignes de code. Alors évidemment vous êtes libre d'écrire n'importe quel nombre que vous aimez pour résoudre la tâche. –