PRINT_INT = 1 PRINT_STR = 4 READ_INT = 5 PRINT_CHAR = 11 # struct student { # int zid; //4 bytes # char first[20]; // 20 bytes # char last[20]; // 20 bytes # int program; // 4 bytes # char alias[10]; // 10 bytes # // Need 2 bytes padding # }; STUDENT_OFFSET_ZID = 0 STUDENT_OFFSET_FIRST = 4 STUDENT_OFFSET_LAST = STUDENT_OFFSET_FIRST + 20 # total 24 STUDENT_OFFSET_PROGRAM = STUDENT_OFFSET_LAST + 20 # total 44 STUDENT_OFFSET_ALIAS = STUDENT_OFFSET_PROGRAM + 4 # total 48 # Padding to make struct size divisible by 4 for alignment SIZEOF_STRUCT_STUDENT = STUDENT_OFFSET_ALIAS + 10 + 2 .text main: li $v0, PRINT_STR # syscall 4: print_string la $a0, zid_msg # syscall # printf("zID: z"); #TODO # printf("%d", selection->zid); li $v0, PRINT_CHAR # syscall 11: print_char li $a0, '\n' # syscall # putchar('\n'); li $v0, PRINT_STR # syscall 4: print_string la $a0, first_name_msg # syscall # printf("First name: "); #TODO # printf("%s", selection->first); li $v0, PRINT_CHAR # syscall 11: print_char li $a0, '\n' # syscall # putchar('\n'); li $v0, PRINT_STR # syscall 4: print_string la $a0, last_name_msg # syscall # printf("Last name: "); #TODO # # printf("%s", selection->last); li $v0, PRINT_CHAR # syscall 11: print_char li $a0, '\n' # syscall # putchar('\n'); li $v0, PRINT_STR # syscall 4: print_string la $a0, program_msg # syscall # printf("Program: "); #TODO # printf("%d", selection->program); li $v0, PRINT_CHAR # syscall 11: print_char li $a0, '\n' # syscall # putchar('\n'); li $v0, PRINT_STR # syscall 4: print_string la $a0, alias_msg # syscall # printf("Alias: "); #TODO # printf("%s", selection->alias); li $v0, PRINT_CHAR # syscall 11: print_char li $a0, '\n' # syscall # putchar('\n'); end: li $v0, 0 # jr $ra # return 0; .data abiram: # struct student abiram { .word 5308310 # int zid; .asciiz "Abiram" # char first[20]; .space 20 - 7 .asciiz "Nadarajah" # char last[20]; .space 20 - 10 .word 3778 # int program; .asciiz "abiramn" # char alias[10]; .space 10 - 8 .space 2 # Make sure struct size is divisible by 4 xavier: # struct student xavier { .word 5417087 # int zid; .asciiz "Xavier" # char first[20]; .space 20 - 7 .asciiz "Cooney" # char last[20]; .space 20 - 7 .word 3778 # int program; .asciiz "xavc" # char alias[10]; .space 10 - 5 .space 2 # Make sure struct size is divisible by 4 # struct student abiram = { # .zid = 5308310, # .first = "Abiram", # .last = "Nadarajah", # .program = 3778, # .alias = "abiramn" # }; # struct student xavier = { # .zid = 5417087, # .first = "Xavier", # .last = "Cooney", # .program = 3778, # .alias = "xavc" # }; zid_msg: .asciiz "zID: z" first_name_msg: .asciiz "First name: " last_name_msg: .asciiz "Last name: " program_msg: .asciiz "Program: " alias_msg: .asciiz "Alias: "