J'écris un code MIPS pour une calculatrice simple, et je me demandais comment vous branchez à la fonction correspondante en fonction de l'entrée de l'utilisateur. Par exemple, si l'utilisateur souhaite ajouter deux nombres, comment vous assurer que la calculatrice saute à l'étiquette d'ajout, au lieu de peut-être la multiplier ou la soustraire?Branchement aux étiquettes
Répondre
Prendre l'entrée de l'utilisateur dans un registre. Puis comparez cela à la première valeur ASCII, dites '+', en utilisant une instruction beq.
.data
plus: .asciiz "+"
sub: .asciiz "-"
prod: .asciiz "*"
div .asciiz "/"
.text
.global calculator
.align 2
.ent calculator
calculator:
//t0 holds user input
la $t1,plus
lb $t1,0($t1)
beq $t0,$t1,add
//now check for subtraction, division product. Same code, just change the address (add)
//if none matched, jump to error
b error
add:
//addition code goes here
division:
//division code goes here
product:
//product code goes here
subtraction:
//subtraction code goes here.
error:
//error code goes here.
Pour autant que je puisse voir, cette méthode ne peut fonctionner que pour 3 types d'entrée différents, et non 4. Alors, comment puis-je m'assurer branches à une autre étiquette s'il y a une 4ème valeur à laquelle il faut comparer? Dites les entrées de l'utilisateur '+' (ascii 43) et il est comparé à l'ascii 45 (-), vous pouvez utiliser branche si moins que l'ascii pour '*' est également inférieur à 45, alors comment je m'assure il va à l'étiquette '+' plutôt que le '*'. – Taylor
ne pense pas en termes de plus/moins de. Pensez-y plus comme une déclaration de commutateur. – Tom
J'ai codé un exemple de ceci. L'affichera si nécessaire, mais essayez de comprendre cela. – Tom
- 1. Branchement aux compilateurs Java
- 2. Résultat DataBind DataSource aux étiquettes ASP
- 3. Branches de développement Perforce - Branchement simplifié vs branchement privé
- 4. , l'élimination de branchement
- 5. Partage et branchement SourceSafe
- 6. prédiction de branchement
- 7. Comportement de branchement GLSL
- 8. git-svn branchement
- 9. Branchement dans Mercurial
- 10. Diagrammes de branchement TFS
- 11. Plan de branchement requis?
- 12. Ajouter une unité aux étiquettes yaxis dans MatPlotLib
- 13. Comment ajouter des étiquettes aux barres de points CPBarPlot?
- 14. ARM Assembly - Instructions de branchement
- 15. Gestionnaire de mémoire sans branchement?
- 16. Mercurial, "Branchement avec des signets"
- 17. Les points de données Flex LineChart ne correspondent pas aux graduations/aux étiquettes d'axe
- 18. svn branchement et marquage des bonnes pratiques
- 19. Branchement TFS avec les binaires partagés
- 20. Branchement avec le client distant clearcase
- 21. Branchement unidirectionnel et fusion dans TFS
- 22. Git: Questions de branchement apparemment simples
- 23. git-svn branchement: comment configurer git config
- 24. AnkhSVN Erreur d'exception (solution de branchement)
- 25. Stratégie de branchement pour logiciel configurable
- 26. Logique de branchement dans une vue MVC
- 27. Diapositives de branchement dans PowerPoint (VBA)
- 28. Conseils de prédiction de branchement portable
- 29. Branchement et fusion dans TFS 2010
- 30. BackgroundColor des étiquettes UITableViewCellStyleSubtitle?
Veuillez poster quelques informations supplémentaires. Qu'est-ce que vous avez, de quoi avez-vous besoin? Avez-vous déjà du code que vous pouvez nous montrer? – EricSchaefer
J'ai le code que lorsque l'utilisateur entre une fonction à exécuter (+ - * /), il le stocke comme une valeur ASCII dans l'un des registres temporaires. Ma question est alors, comment puis-je m'assurer que pour la fonction que l'utilisateur a entré il saute à l'étiquette correcte qui exécute la fonction. Par exemple, il saute à l'addition et ne pas soustraire (comme indiqué ci-dessous), si l'utilisateur veut ajouter les nombres. addnum: add.s f12 $, f1 $, $ # f0 Additionner chiffres et mis en syscall registre de résultat j résultat subnum: sub.s f12 $, f1 $, $ f0 j résultat – Taylor
Je roulais retour l'addition de '[devoirs]' - vous devez demander d'abord avant de le marquer, dans ce cas. Voir http://meta.stackexchange.com/questions/10811/homework-on-stackoverflow –