处理类似这样的问题:
编写一个程序,提示用户输入3个不超过6的数字(逗号不能存储为字符串)数字。数字必须作为空终止字符串存储在内存中,第一个数字必须存储在内存地址0x10000000中。第二个数字必须存储在内存地址0x10000008中。第三个数字必须存储在内存地址0x10000010中。
这就是我写的内容,但我在第14行遇到了语法错误,这很奇怪,因为它看起来很好。如何知道输入的字符串是否在正确的内存地址中?
.globl main
.data
prompt1: .asciiz "Enter first number:"
prompt2: .asciiz "Enter second number:"
prompt3: .asciiz "Enter third number:"
.text
#0x10000000 stores first number
#0x10000008 stores second number
#0x10000010 stores third number
main:
#printing prompt1
li $v0, 4 #line 14 where syntax error happens
la $a0, prompt1
syscall
lui $s0, 0x1000 # get address into $s0
#input first number
li $v0, 8
la $a0, 0($s0) #reads number into memory(0x10000000)
li $a1,8 #7 characters
syscall
#prinitng prompt2
li $v0,4
la $a0, prompt2
syscall
#input second number
li $v0,8
la $a0,8($s0) #reads number into memory 0x10000008
li $a1,8
syscall
#printing prompt3
li $v0,4
la $a0,prompt3
syscall
#inputting third number
li $v0,8
la $a0, 10($s0) #reads number into memory 0x10000010
li $a1, 8 #7 characters
syscall
答案 0 :(得分:0)
我怀疑你是在spim -bare模式下运行你的程序。这意味着诸如li,la等伪指令将不起作用。伪指令不是真正的mips指令。如果你要在spim -bare模式下运行,你必须重新编写代码并删除那些伪指令。