.text .globl print_hexbytes print_hexbytes: # # procedure to print bytes in hex # # $a0 has address of first byte to print # $a1 has number of bytes to print # # YOUR CODE GOES HERE jr $ra # IF YOU NEED VARIABLES YOU CAN PUT THEM HERE .data # uncomment if you think this will be useful, renaming if you like #phb_hexdigits: .ascii "0123456789abcdef" # # YOU SHOULD NOT NEED TO CHANGE ANYTHING BELOW # # test/demo of procedure to print bytes in hex # .text .globl main main: # # opening linkage (save return address) # addi $sp, $sp, -4 sw $ra, 0($sp) # # prompt for and get user input (string), then echo # la $a0, prompt1 li $v0, 4 # print string syscall la $a0, input_str la $a1, 20 li $v0, 8 # read string syscall la $a0, echo li $v0, 4 # print string syscall la $a0, input_str li $v0, 4 # print string syscall # # print string using procedure # la $a0, header_result li $v0, 4 # print string syscall la $a0, input_str li $a1, 20 jal print_hexbytes la $a0, nl li $v0, 4 # print string syscall # # prompt for and get user input (integer), then echo # la $a0, prompt2 li $v0, 4 # print string syscall li $v0, 5 # read integer syscall addi $s0, $v0, 0 la $a0, echo li $v0, 4 # print string syscall addi $a0, $s0, 0 li $v0, 1 # print integer syscall la $a0, nl li $v0, 4 # print string syscall # # print integer using procedure # la $a0, header_result li $v0, 4 # print string syscall sw $s0, input_int la $a0, input_int li $a1, 4 jal print_hexbytes la $a0, nl li $v0, 4 # print string syscall # # closing linkage (get return address and restore stack pointer) # lw $ra, 0($sp) addi $sp, $sp, 4 jr $ra .end main # # area for variables and constants # .data prompt1: .asciiz "Enter a line of text:\n" prompt2: .asciiz "Enter an integer:\n" echo: .asciiz "Input " header_result: .asciiz "Result " nl: .asciiz "\n" input_str: .space 20 input_int: .word 0