1. ホーム
  2. string

[解決済み] Mips ユーザー入力文字列の保存方法

2022-01-30 09:45:06

質問事項

以前は、この方法を知っていると思っていました。しかし、その後、実際にやってみたのです。これは私が書いたプログラムですが、Berkeley S*** simulator for macは最後の行でシンタックスエラーがあると言いました。何がいけなかったのでしょうか?

       .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
             ###############################