# TITLE Iodemo (IOdemo.s) # This program demonstrates some system I/O. .data # variables FloatPrompt: .asciiz "Enter a float: " DblPrompt: .asciiz "Enter a double: " IntPrompt: .asciiz "Enter a integer: " StrPrompt: .asciiz "Enter a string: " OutStr: .asciiz "\nYour input was " NewLine: .asciiz "\n" FloatIn: .float 0.0 DoubleIn: .double 0.0 IntIn: .word 0 StrIn: .space 256 .text .globl main main: # start of the main procedure # Get and print a string la $a0, StrPrompt # point to StrPrompt li $v0, 4 # print_string syscall la $a0, StrIn # point to input buffer li $a1, 255 # set length of buffer li $v0, 8 # read_string syscall la $a0, OutStr # point to OutStr li $v0, 4 # print_string syscall la $a0, StrIn # point to input buffer li $v0, 4 # print_string syscall la $a0, NewLine # point to NewLine li $v0, 4 # print_string syscall # Get and print a float la $a0, FloatPrompt # point to FloatPrompt li $v0, 4 # print_string syscall li $v0, 6 # read_float syscall la $a0, OutStr # point to OutStr li $v0, 4 # print_string syscall mov.s $f12, $f0 # move float input to output li $v0, 2 # print_float syscall la $a0, NewLine # point to NewLine li $v0, 4 # print_string syscall # Get and print a double la $a0, DblPrompt # point to DblPrompt li $v0, 4 # print_string syscall li $v0, 7 # read_double syscall la $a0, OutStr # point to OutStr li $v0, 4 # print_string syscall mov.d $f12, $f0 # move float input to output li $v0, 3 # print_double syscall la $a0, NewLine # point to NewLine li $v0, 4 # print_string syscall # Get and print an integer la $a0, IntPrompt # point to IntPrompt li $v0, 4 # print_string syscall li $v0, 5 # read_integer syscall move $t0, $v0 # move input before it gets changed la $a0, OutStr # point to OutStr li $v0, 4 # print_string syscall move $a0, $t0 # move the integer we saved into $a0 li $v0, 1 # print_integer syscall la $a0, NewLine # point to NewLine li $v0, 4 # print_string syscall jr $ra