私はこれを行う方法を知っていたと思っていました。でも実際にやってみました。これが私が書いたプログラムですが、Mac用のBerkeley S ***シミュレーターは、最後の行に構文エラーがあると言っています。何を間違えたのですか?
.text
.globl __start
__start:
la $a0,ask
li $v0,4
syscall
li $v0,8
syscall
la $t0,buffer
move $t0,$v0
syscall
la $a0,ret
li $v0,4
syscall
move $a0,$t0
li $v0,4
syscall
.data
ask: .asciiz "Enter string: "
ret: .asciiz "You wrote: "
buffer: .space 100
OK。年の初めから、私がやりたいことを実行するプログラムが他のファイルに深く埋め込まれているのを発見しました。私は経験豊富なスピムや低レベルのプログラマーではないので、提案された提案について実際にコメントすることはできません。
.text
.globl __start
__start:
la $a0,str1 #Load and print string asking for string
li $v0,4
syscall
li $v0,8 #take in input
la $a0, buffer #load byte space into address
li $a1, 20 # allot the byte space for string
move $t0,$a0 #save string to t0
syscall
la $a0,str2 #load and print "you wrote" string
li $v0,4
syscall
la $a0, buffer #reload byte space to primary address
move $a0,$t0 # primary address = t0 address (load pointer)
li $v0,4 # print string
syscall
li $v0,10 #end program
syscall
.data
buffer: .space 20
str1: .asciiz "Enter string(max 20 chars): "
str2: .asciiz "You wrote:\n"
###############################
#Output:
#Enter string(max 20 chars): qwerty 123
#You wrote:
#qwerty 123
#Enter string(max 20 chars): new world oreddeYou wrote:
# new world oredde //lol special character
###############################
# This code works fine in QtSpim simulator
.data
buffer: .space 20
str1: .asciiz "Enter string"
str2: .asciiz "You wrote:\n"
.text
main:
la $a0, str1 # Load and print string asking for string
li $v0, 4
syscall
li $v0, 8 # take in input
la $a0, buffer # load byte space into address
li $a1, 20 # allot the byte space for string
move $t0, $a0 # save string to t0
syscall
la $a0, str2 # load and print "you wrote" string
li $v0, 4
syscall
la $a0, buffer # reload byte space to primary address
move $a0, $t0 # primary address = t0 address (load pointer)
li $v0, 4 # print string
syscall
li $v0, 10 # end program
syscall