无法以mips方式访问和打印索引中的字节数组

时间:2017-09-11 06:12:06

标签: assembly mips

我正在尝试将一个随机字节打印到屏幕上,以检查我是否得到了正确的元素。我使用li $ v0,11,因为它是一个字节,但显然,你可以然后使用一个字节值,但我尝试了它,它也不能正常工作。它打印出一个类似268501003的地址,例如我设置的当前行+ col索引,并且地址确实根据我在调用计算地址之前设置为$ a0和$ a1的参数而改变。但我没有得到我正在尝试打印的数组索引值的输出。请帮助!

.data

N: .word 10  # gives board dimensions

board:
   .byte 1, 0, 0, 0, 0, 0, 0, 0, 0, 0
   .byte 1, 1, 0, 0, 0, 0, 0, 0, 0, 0
   .byte 0, 0, 0, 1, 0, 0, 0, 0, 0, 0
   .byte 0, 0, 1, 0, 1, 0, 0, 0, 0, 0
   .byte 0, 0, 0, 0, 1, 0, 0, 0, 0, 0
   .byte 0, 0, 0, 0, 1, 1, 1, 0, 0, 0
   .byte 0, 0, 0, 1, 0, 0, 1, 0, 0, 0
   .byte 0, 0, 1, 0, 0, 0, 0, 0, 0, 0
   .byte 0, 0, 1, 0, 0, 0, 0, 0, 0, 0
   .byte 0, 0, 1, 0, 0, 0, 0, 0, 0, 0

newBoard: .space 100

.data

maxiter: .word 0
nn: .word 0
promptMsg: .asciiz "# Iterations: "
dot: .asciiz "."
newLine: .asciiz "\n"
.text
#===============================
main: 
la $a0, promptMsg
jal printText

li $v0, 5
syscall

li $a0, 6 #random row/col index
li $a1, 7
la $a2, board
jal calculate_address

move $t5, $v0

li $v0, 1
move $a0, $t5
syscall

la $a0, newLine
jal printText

li $t7, 0
li, $a0, 0
lb $t7, board($t5)
move $a0, $t7
li $v0, 11
syscall

li $v0, 10
syscall

printText:
li $v0, 4
syscall
jr $ra 

calculate_address:
#(Row Index * Column Size + Column Index)*dataSize + base address
#a0 = rowIndex, a1 = colIndex, a2 = base address
lw $t6, N # col size
li $t3, 0
mult $a0, $t6
mfhi $t3
add $t3, $t3, $a1
add $t3, $t3, $a2
#la $a0, msg4
#jal printText
move $v0, $t3 #return address of element [i][j]
jr $ra

0 个答案:

没有答案