Я пытаюсь преобразовать десятичное число в двоичное с помощью языка ассемблера MIPS. Я только начал изучать MIPS сегодня, так что я едва понял эти понятия. Я пытаюсь реализовать это с помощью массивов, но я все еще не уверен, что положить в sw и lw. Кроме того, я пытаюсь поместить числа в массив и напечатать его в обратном порядке, поскольку он является двоичным. Вот что я пробовал до сих пор. Более чем добро пожаловать комментировать или помочь. Большое спасибо.
.data
enter: .asciiz "Enter an integer: "
ipnum: .asciiz "Input number is "
Bin: .asciiz "Binary: "
Qtr: .asciiz "Quaternary: "
Oct: .asciiz "Octal:"
new: .asciiz "\n"
list: .space 128
.text
.globl main
main:
la $a0, enter #load address into $a0
li $v0, 4 #call to print string
syscall
li $v0, 5 #read integer
syscall
move $t0, $v0 #inter stored in $t0
la $a0, new #print two new lines
li $v0, 4
syscall
la $a0, new
li $v0, 4
syscall
la $a0, ipnum #print the string
li $v0, 4
syscall
li $v0, 1 #print the input number
move $a0, $t0
syscall
la $a0, new #print two new lines
li $v0, 4
syscall
la $a0, new
li $v0, 4
syscall
la $a0, Bin #print "Binary:"
li $v0, 4
syscall
binary:
li $s0, 0 #index i
li $t1, 2 #assign 2 into t1
div $t0, $t1 #
mfhi $t2 #set remainder as t2
sw $t2, 0($s0) #save remiander to the ith index of array
mflo $t0 #input number now become quotient
addi $s0, $s0, 4 #i = i+4, since dealing with integer
beq $t0, $zero, print
j binary
#print backwards from the last indext of the array
print:
beq $a1, -4, exit #if finished printing until list[0]
li $a1, 128 #set $a1 as 128 to print last index of myArray
lw $t3, list($a1)
li $v0 1 #print out the number
move $a0, $t3
syscall
addi $a1, $a1, -4 #i = i-4
j print
exit:
li $v0, 10
syscall