##################################################################### # This program prints an IPv6 address # Author: # # Register Convention: ##################################################################### .data ipv6: .word 0x12345678 0xabcdef01 0x23456789 0xabcdef10 ascii: .asciiz "0123456789abcdef" .text main: la $s1,ipv6 # ipv6array = ipv6 lw $s0,0($s1) # nibble = ipv6array[0] >> 28 srl $a0,$s0,28 jal prtasc # print_ascii_char($a0=nibble) li $v0,10 # exit syscall ################################################################## # void Print_ASCII_Char($a0=nibble to print) ################################################################## prtasc: li $v0,11 # Print Ascii Character($a0=nibble) la $t0,ascii # ascii_char = ascii_tbl[nibble & 0xf] andi $a0,$a0,0xf add $a0,$t0,$a0 lb $a0,0($a0) li $v0,11 # print_char($a0=ascii_char,$v0=print_char) syscall jr $ra # return