如何更改元素 80 在数组 mips 中的位置 [重复]

问题描述 投票:0回答:1

下面是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

assembly multidimensional-array mips mars-simulator mips64
1个回答
1
投票

这里是演示它按指定工作的示例代码(具有常量偏移量):

.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(空格)取代。

© www.soinside.com 2019 - 2024. All rights reserved.