spim

.data
buffer: .space 64
str1: .asciiz "Enter int-number:"
str2: .asciiz "Enter float-number:"
str3: .asciiz "Enter double-number:"
str4: .asciiz "Enter String:"
str5: .asciiz "Enter char:"
ans1: .asciiz "this number is =>"
ans2: .asciiz "this string is =>"
ans3: .asciiz "this char is =>"
eol: .asciiz "\n"
.text
.globl main
main: li $v0,4 # print_stringを格納
la $a0,str1 # asciizの文字列を格納
syscall # 文字列の出力
li $v0,5 # read_int
syscall
move $t0,$v0 # 読み込んだ値を$t0に
li $v0,4 # print_stringを格納
la $a0,ans1 # asciizの文字列を格納
syscall
li $v0,1 # print_intを格納
move $a0,$t0 # 出力する整数を$a0に格納
syscall
li $v0,4 # print_stringを格納
la $a0,eol # 改行
syscall

li $v0,4 # print_stringを格納
la $a0,str2 # asciizの文字列を格納
syscall # 文字列の出力
li $v0,6 # read_float
syscall
li $v0,4 # print_stringを格納
la $a0,ans1 # asciizの文字列を格納
syscall
li $v0,2 # print_floatを格納
mov.s $f12,$f0 # 出力する整数を$f12に格納
syscall
li $v0,4 # print_stringを格納
la $a0,eol # 改行
syscall

li $v0,4 # print_stringを格納
la $a0,str3 # asciizの文字列を格納
syscall # 文字列の出力
li $v0,7 # read_double
syscall
li $v0,4 # print_stringを格納
la $a0,ans1 # asciizの文字列を格納
syscall
li $v0,3 # print_doubleを格納
la $f0,$f1
mov.s $f12,$f0 # 出力する整数を$f12に格納
syscall
li $v0,4 # print_stringを格納
la $a0,eol # 改行
syscall

li $v0,4 # print_stringを格納
la $a0,str4 # asciizの文字列を格納
syscall # 文字列の出力
li $v0,8 # read_string
la $a0,buffer # 文字サイズbufferを格納
li $a1,20 # Stringのための語長
move $t0,$a0 # $a0を$t0に格納
syscall
li $v0,4 # print_stringを格納
la $a0,ans2 # asciizの文字列を格納
syscall
la $a0,buffer # 語長を再読み込み
move $a0,$t0 # $a0を$t0に格納(読み込みのアドレス)
syscall

li $v0,4 # print_stringを格納
la $a0,str5 # asciizの文字列を格納
syscall # 文字列の出力
li $v0,12 # read_char
syscall

move $t0,$v0 # 読み込んだ値を$t0に
li $v0,4 # print_stringを格納
la $a0,ans3 # asciizの文字列を格納
syscall
li $v0,11 # print_charを格納
move $a0,$t0 # $a0を$t0に格納(読み込みのアドレス)
syscall


jr $ra