如何将字符串输入特定内存

时间:2018-06-08 00:11:04

标签: mips

处理类似这样的问题:

编写一个程序,提示用户输入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

1 个答案:

答案 0 :(得分:0)

我怀疑你是在spim -bare模式下运行你的程序。这意味着诸如li,la等伪指令将不起作用。伪指令不是真正的mips指令。如果你要在spim -bare模式下运行,你必须重新编写代码并删除那些伪指令。

相关问题