下面是mips的数组
网格:.byte
26, 25,22,22,12,22,22,22,22,22,10
25,22,22,22,42,22,22,22,22,25,10
25,22,22,22,22,22,22,22,22,25,10
25,22,22,22,22,22,22,22,22,25,10
25,22,24,24,80,42,24,24,24,24,24
24,32,32,32,32,32,32,43,34,34,34
23,32,21,23,13,32,34,23,42,32,32
25,23,23,23,23,23,23,23,23,23,23
我如何访问数组中元素 80 的位置,以便我可以将元素向上移动一列。假设数组的基地址是0x00000000
这里是演示它按指定工作的示例代码(具有常量偏移量):
.globl main
main:
jal print
# move starts here
la $t1, grid
lb $t5, 48($t1)
sb $t5, 37($t1)
li $t5, ' '
sb $t5, 48($t1)
# move ends
li $a0, 10
li $v0, 11
syscall
jal print
li $v0, 10
syscall
print:
la $t1, grid
li $t2, 0
print_row:
li $t3, 11
li $v0, 1
move $a0, $t2
syscall
li $a0, ':'
li $v0, 11
syscall
li $a0, ' '
li $v0, 11
syscall
print_next:
lb $a0, ($t1)
addiu $t1, $t1, 1
li $v0, 1
syscall
li $a0, ' '
li $v0, 11
syscall
addiu $t3, $t3, -1
bgtz $t3, print_next
li $a0, 10
li $v0, 11
syscall
addiu $t2, $t2, 1
slti $t4, $t2, 8
bnez $t4, print_row
jr $ra
.data
grid:
.byte 26,25,22,22,12,22,22,22,22,22,10
.byte 25,22,22,22,42,22,22,22,22,25,10
.byte 25,22,22,22,22,22,22,22,22,25,10
.byte 25,22,22,22,22,22,22,22,22,25,10
.byte 25,22,24,24,80,42,24,24,24,24,24
.byte 24,32,32,32,32,32,32,43,34,34,34
.byte 23,32,21,23,13,32,34,23,42,32,32
.byte 25,23,23,23,23,23,23,23,23,23,23
输出:
0: 26 25 22 22 12 22 22 22 22 22 10
1: 25 22 22 22 42 22 22 22 22 25 10
2: 25 22 22 22 22 22 22 22 22 25 10
3: 25 22 22 22 22 22 22 22 22 25 10
4: 25 22 24 24 80 42 24 24 24 24 24
5: 24 32 32 32 32 32 32 43 34 34 34
6: 23 32 21 23 13 32 34 23 42 32 32
7: 25 23 23 23 23 23 23 23 23 23 23
0: 26 25 22 22 12 22 22 22 22 22 10
1: 25 22 22 22 42 22 22 22 22 25 10
2: 25 22 22 22 22 22 22 22 22 25 10
3: 25 22 22 22 80 22 22 22 22 25 10
4: 25 22 24 24 32 42 24 24 24 24 24
5: 24 32 32 32 32 32 32 43 34 34 34
6: 23 32 21 23 13 32 34 23 42 32 32
7: 25 23 23 23 23 23 23 23 23 23 23
您可以看到
80
向上移动了一行,从 4 到 3 并被 32(空格)取代。