如何在MIPS中不使用数组的情况下存储多个用户输入的整数?

时间:2019-11-21 19:33:48

标签: assembly storage mips mars

我的问题是;如何在不创建数组的情况下将多个用户输入的输入存储到变量中?当我按照此处发布的代码运行代码时,出现错误“商店地址在字边界上未对齐”。变量一是store1,变量二是store2。我想将两个分别输入的整数分别存储到store1和store2中。

.data

store1: .byte 4                     #Stores data entered by user
store2: .byte 4                     # "                        "
msg: .asciiz "Enter your first decimal number: "
msg2: .asciiz "Enter your second decimal number: "
.text

main:

la $a0, msg #Displays msg
li $v0, 4
syscall

li $v0, 5   #Prompts user to enter an integer
syscall

la $t0, store1  #Loads user input into store1
sw $v0, store1  #Stores user input into store1

la $a0, msg2    #Displays msg2
li $v0, 4
syscall

li $v0, 5   #Prompts user to enter another integer
syscall

la $t1, store2    #My error occurs here 
sw $v0, store2    #If I delete these 3 lines the code compiles with no errors
syscall

li $v0, 10  #Cleanly exits the program 
syscall 

1 个答案:

答案 0 :(得分:1)

.byte 4是一个值为4的字节,而不是四个字节(一个字)。因此,它们不能同时对齐。您可以通过使用调试器查看内存内容来看到这一点。

如果MARS允许该GAS伪指令,也许您正在寻找.skip 4

或者像杰斯特所说的,只需使用.int 0.word 0