Je pensais que je savais comment faire ça. Mais j'ai essayé de le faire. Voici le programme que j'ai écrit mais le simulateur Berkeley S *** pour mac a indiqué qu'il y avait une erreur de syntaxe sur la dernière ligne. Qu'ai-je fait de mal?
.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
D'accord. J'ai trouvé un programme enfoui profondément dans d'autres fichiers depuis le début de l'année qui fait ce que je veux. Je ne peux pas vraiment commenter les suggestions proposées parce que je ne suis pas un programmeur expérimenté ou bas niveau.
.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