Before proceeding, I will concede that I neglected criteria #7 and #13 (Number of duplicates displayed on screen when conversion takes place). This value was calculated (see lines 266 and 267 project source), I forgot to print it out. However, my program fulfilled all other requirements. To begin, the following was inserted at line 22: .globl menu_start This allows the use of menu_start as a breakpoint, breaking immediately before each time the main menu appears. The output of spim is attached below (comments regarding each criteria in question were added afterwards) ###################################################################### timberlake {~} > spim -bare SPIM Version 8.0 of January 8, 2010 Copyright 1990-2010, James R. Larus. All Rights Reserved. See the file README for a full copyright notice. Loaded: /util/spim-8.0/lib/spim/exceptions.s (spim) load "project_1.s" (spim) br menu_start (spim) run Breakpoint encountered at 0x0040002c (spim) con 1. Enter a New String 2. Convert 3. Mean 4. Median 5. Display String 6. Display Array 7. Exit Enter a menu number and press : 1 Enter comma-separated integers (max. 255 chars): 1,4,3,2,5 ################################################################################ # Criteria #5, #11 # # String is properly stored in memory at address 0x100000100. # # # # Data shown below in memory. Please bear in mind that spim prints these # # values in reverse order, as though they were integers. # # # # 0x 31 2c 34 2c 33 2c 32 2c 35 = "1,4,3,2,5" # ################################################################################ Breakpoint encountered at 0x0040002c (spim) print 0x10000100 Data seg @ 0x10000100 (268435712) = 0x2c342c31 (741616689) (spim) print 0x10000104 Data seg @ 0x10000104 (268435716) = 0x2c322c33 (741485619) (spim) print 0x10000108 Data seg @ 0x10000108 (268435720) = 0x00000a35 (2613) (spim) con 1. Enter a New String 2. Convert 3. Mean 4. Median 5. Display String 6. Display Array 7. Exit Enter a menu number and press : 2 ##################################################################################### # Criteria #8, #14 # # Array length is stored at the address is 0x100000200 in memory. # # # # Criteria #6, #12 # # Array is sorted in ascending order at address 0x100000202. # # # # # # Data is shown below in memory. Again, it is important to note that spim prints # # these values in reverse byte order, treating them as 4-byte integers. # # # # At this point, it is also important to note that SPIM uses the endianness of its # # host system. In the case of timberlake, the host is using an Intel Xeon # # processor, and therefore spim uses little endian. # # # # This is further evidenced by the numerous times in this program that 0x10000200 # # is referenced in this program as an array length used for iteration, completely # # without incident. # # # # 0x 0500, 0100, 0200, 0300, 0400, 0500 = 5, 1, 2, 3, 4, 5 (little endian) # ##################################################################################### Breakpoint encountered at 0x0040002c (spim) print 0x10000200 Data seg @ 0x10000200 (268435968) = 0x00010005 (65541) (spim) print 0x10000204 Data seg @ 0x10000204 (268435972) = 0x00030002 (196610) (spim) print 0x10000208 Data seg @ 0x10000208 (268435976) = 0x00050004 (327684) (spim)