首页 文章

MIPS - 在用户输入的数组中存储整数

提问于
浏览
6

我正在尝试将用户输入存储到数组中,但是当我使用sw时,我收到错误“存储地址未在字绑定上对齐” . 我的目标是从数组中读取10个整数,但在输入第一个数字后,我在sw命令中得到一个错误 . 我不知道我做错了什么我花了几个小时试图解决它 . 任何帮助将非常感谢并标记为有用 .

.data 

mess: .asciiz " Enter 10 numbers to be stored in the array. "
array: .space 40    #10 element integer array
    .globl main
    .text 
main:
    jal read
    b done
read:
    la $t0, 0   #count variable
    b readLoop
    jr $ra

readLoop:
    beq $t0, 40, read   #branch if equal to 40, 10 items
    li $v0, 4       #Print string
    la $a0, mess        #load prompt
    syscall
    li $v0, 5       #read int
    syscall 
    sw $v0, array       #store input in array ERROR HERE
    addi  $t0, $t0, 4   #add by 4 to count
    b readLoop
print:

done:

这对我有用 . 我不知道为什么它不起作用

.data 
list:  .space 16
.globl main
.text

main:

    li $v0, 5
    syscall
    sw $v0, list

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

4 回答

  • 1

    Proper Array Input Code

    .data
        myarray:.space 40    
        st:.asciiz "Enter the 10 Elements"
    
    .text    
        li $v0,4
        la $a0,st
        syscall
        jal fun
        li $v0,10
        syscall
    
    fun:        
        li $v0,5
        syscall
        beq $t0,40,exit
        sw $v0,myarray($t0)
        add $t0,$t0,4
        j fun
    
    exit:
        jr $ra
    
  • 1

    在为数据段中的字符串分配空间之前,请尝试为阵列分配空间:

    array: .space 40    #10 element integer array
      mess: .asciiz " Enter 10 numbers to be stored in the array. "
    

    如果先分配字符串,则数组可能从一个不能被4整除的地址开始,并导致字对齐错误

  • 5

    试试这个:

    ...
    .p2align 2
    array: .space 40    #10 element integer array
    ...
    
  • 1
    • 商店应该是

    sw $ v0,数组($ t0)

    • li $t0, 0 替换 la $t0, 0

    • 将数组设置为 mess 以上

    此外,当您达到10个项目时,重新开始读取并覆盖以前的值 .

相关问题