.data buffer: .space 200 format0: .asciiz "Hello, world!\n" format1: .asciiz "%d%% of all %ss " format2: .asciiz "say %d %c " format3: .asciiz "%x%c\n" str: .asciiz "American" chrs: .asciiz " characters:\n" .text main: la $a0, buffer # first arg: place to put formatted version la $a1, format0 # second arg: format string jal sprintf add $a0, $v0, 0 # move return value to argument position jal putint puts chrs puts buffer addi $a0, $0, '\n' putc $a0 la $a0, buffer # first arg: place to put formatted version la $a1, format1 # second arg: format string addi $a2, $0, 87 # third argument: 87 la $a3, str # fourth argument: "American" jal sprintf add $a0, $v0, 0 # move return value to argument position jal putint puts chrs puts buffer addi $a0, $0, '\n' putc $a0 la $a0, buffer # first arg: place to put formatted version la $a1, format2 # second arg: format string addi $a2, $0, -5002 # third argument: -5002 addi $a3, $0, '<' # fourth argument: '<' jal sprintf add $a0, $v0, 0 # move return value to argument position jal putint puts chrs puts buffer addi $a0, $0, '\n' putc $a0 la $a0, buffer # first arg: place to put formatted version la $a1, format3 # second arg: format string addi $a2, $0, 3840 # third argument: 0xf00 addi $a3, $0, 33 # fourth argument: '!' jal sprintf add $a0, $v0, 0 # move return value to argument position jal putint puts chrs puts buffer addi $a0, $0, '\n' putc $a0 done putint: addi $sp, $sp, -8 # void putint(int value) { sw $ra, 0($sp) # if( value/10 != 0 ) { rem $t0, $a0, 10 # putint( value/10 ) ; addi $t0, $t0, '0' # } div $a0, $a0, 10 # print the digit for value%10 beqz $a0, onedig # } sw $t0, 4($sp) jal putint lw $t0, 4($sp) onedig: putc $t0 lw $ra, 0($sp) addi $sp, $sp, 8 jr $ra .end