# # procedures for simple I/O # requires consts.s # .globl printline .globl getint .globl printint .text ############################################################################ # # void printline(&string) prints string # at entry: # $a0 contains address of string to print (including newline) # printline: addi $sp,$sp,-4 sw $ra,0($sp) # $a0 contains &string li $v0, 4 # "print string" syscall syscall # return lw $ra,0($sp) addi $sp,$sp,4 jr $ra ############################################################################ # # int getint(&prompt_string) # at entry # $a0 contains address of prompt string # returns value in $v0 # getint: addi $sp,$sp,-4 sw $ra,0($sp) # $a0 contains &prompt li $v0, 4 # "print string" syscall syscall li $v0, 5 # "read int" syscall syscall # $v0 contains value # return lw $ra,0($sp) addi $sp,$sp,4 jr $ra ############################################################################ # # void printint(&ident_string, value) prints value with identifying string # and newline # at entry: # $a0 contains address of string to print first (no newline) # $a1 value to print # printint: addi $sp,$sp,-4 sw $ra,0($sp) # $a0 contains &ident_string li $v0, 4 # "print string" syscall syscall # $a1 contains value addu $a0, $a1, $zero li $v0, 1 # "print int" syscall syscall la $a0, nl li $v0, 4 syscall # return lw $ra,0($sp) addi $sp,$sp,4 jr $ra