我的问题是;如何在不创建数组的情况下将多个用户输入的输入存储到变量中?当我按照此处发布的代码运行代码时,出现错误“商店地址在字边界上未对齐”。变量一是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
答案 0 :(得分:1)
.byte 4
是一个值为4的字节,而不是四个字节(一个字)。因此,它们不能同时对齐。您可以通过使用调试器查看内存内容来看到这一点。
如果MARS允许该GAS伪指令,也许您正在寻找.skip 4
。
或者像杰斯特所说的,只需使用.int 0
或.word 0