J'écris un simple extrait de code pour une affectation et j'ai besoin de convertir un nombre décimal en binaire, octal et hexadécimal. Je l'ai fonctionné, mais j'ai réalisé par la suite qu'à cause de l'algorithme que j'utilise, j'imprime le nombre binaire en arrière. La stratégie que j'utilisais consistait à imprimer un chiffre à la fois. Je suis toujours un débutant donc j'ai pensé que ce serait un moyen facile d'éviter plus de problèmes intermédiaires. Malheureusement, je n'ai pas tout compris.Conversion de décimal en binaire et impression dans MIPS
binary: la $a0, bType #binary function selected, notify user
li $v0, 4 #print notification
syscall
la $a0, in_val #ask user for input decimal number
li $v0, 4 #print
syscall
li $v0, 5 #syscall read int
syscall
move $t0, $v0 #save input value to $t0
li $t1, 2 #load 2 into $t1 to divide by 2
li $v0, 4
la $a0, bRes
syscall #print result tag
binLoop: divu $t0, $t1 #LO = $t0/2, HI = $t0 % 2
mfhi $t2 #$t2 = HI (remainder)
mflo $t0 #$t0 = $t0/2 (quotient)
move $a0, $t2 #store digit to print
li $v0, 1 #Print digit
syscall
bgtz $t0, binLoop #if input != 0, keep dividing
j main
Est-il possible que je peux peut-être stocker chaque chiffre dans une chaîne avec une étiquette et concaténer chaque chiffre à la suite, puis lire la chaîne en arrière ou quelque chose? Peut-être que vous pourriez me suggérer une meilleure suggestion. Il suffit de noter que le code fonctionne à ce stade en imprimant un seul chiffre binaire à la fois, mais dans l'ordre inverse que nous le voulons. Le programme est supposé être capable de gérer de gros nombres (comme 20 chiffres binaires), donc je ne peux pas stocker chaque chiffre dans son propre registre. Merci a tous!
N'est-il une sorte de pile? – ruslik