// This program does the simple search of the // the database. Assumes number is found // // $r0 : index register // $r1 : name to lookup // $r2 : matching number when done // $r3 : temp // // The program needs to run about 300 cycles with the // data_250.dat data file. // // The final register values should be: // R0: 0057 // R1: 07D9 // R2: 0EF9 // R3: 0000 // // Initialize 10111_000___00001000 // 0. ldi $r0, 8 // First name address 10110_001__00_001_001 // 1. sub $r1, $r1, $r1 // clear 11111_001_00000_001 // 2. ldr $r1, $r1 // load name to search for // Search loop 11111_011_00000_000 // 3. ldr $r3, $r0 // Load name 10110_011__00_001_011 // 4. sub $r3, $r1, $r3 // Compare name 00001_00001001_011 // 5. brz $r3, 9 // Found 10010_000__00_000_000 // 6. inc $r0, $r0 // Go to next name 10010_000__00_000_000 // 7. inc $r0, $r0 00000_00000011_000 // 8. br 3 10010_000__00_000_000 // 9. inc $r0, $r0 // Found: load number 11111_010_00000_000 // 10. ldr $r2, $r0 00000_00001011_000 // 11. br +0 // Sit and spin 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP 00000_000___00001100 // NOP