; ; Template for Project 3 and 4 of CSI333 ; 0011 0000 0000 0000 ;Origin at 0x3000 ;0x3000: ;Program execution begins here: ; First we test the function at 0x30F0 which should subtract R1 from R0 0101 000 000 1 00000 ; R0 <- 0 using AND R0,R0,#0 0001 000 000 1 00100 ; R0 <- R0+4 = 4 using ADD R0,R0,#4 0001 001 000 1 00001 ; R1 <- R0+1 = 5 using ADD R1,R0,#1 0100 1 000 1110 1100 ; JSR to 0x30F0. Our PC=0x3005. Disp=0x30F0-0x3004=EC ; 0x3004: 1111 0000 0010 0101 ; HALT, which is TRAP 0x25 ; We are OK if R0=-1 = 0xFFFF upon the HALT. 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x3008: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x3010: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x3018: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x3020: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x3028: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x3030: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x3038: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x3040: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x3048: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x3050: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x3058: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x3060: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x3068: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x3070: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x3078: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x3080: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x3088: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x3090: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x3098: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x30A0: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x30A8: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x30B0: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x30B8: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x30C0: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x30C8: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x30D0: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x30D8: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x30E0: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x30E8: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x30F0: ; ; The function below subtracts the number in R1 from ; the number in R0 and puts the difference in R0. ; It MESSES UP R1 in addition to returning its result in R0. ; It uses the LC-3 function linkage convention of ; returning to the address in R7 ; 1001 001 001 111111 ; R1 <- ~R1 using NOT R1,R1 0001 001 001 1 00001 ; R1 <- R1+1 using ADD R1,R1,#1 to ; get the 2-s complement of the orig. number into R1 0001 000 000 0 00 001 ; R0 <- R0 + R1 using ADD R0,R0,R1 to get answer 1100 000 111 000000 ; RET 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x30F8: 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; 0000 0000 0000 0000 ; ;0x30FF The long sequence goes here: 0111 1010 0101 1111 ; ;0x3100 The first pattern: 0000 0000 0010 1010 ; ;0x3101 Number of times it appears, computed by project 4 program 0000 0000 0000 0000 ; ;0x3102 The second pattern: 0000 0000 0011 1111 ; ;0x3103 Number of times it appears, computed by project 4 program 0000 0000 0000 0000 ; ; ; ; Add more patterns below: ; ; ;0x3104 0 pattern to terminate the pattern list: 0000 0000 0000 0000 ;