
This is program 4
Dependencies: LCD_DISCO_F429ZI mbed TS_DISCO_F429ZI BSP_DISCO_F429ZI
PROGRAM4_F20_Harrison.s@2:a38c09fad0fe, 2020-12-07 (annotated)
- Committer:
- mcharrison17
- Date:
- Mon Dec 07 04:03:14 2020 +0000
- Revision:
- 2:a38c09fad0fe
- Parent:
- 1:2308340de21d
- Child:
- 3:2ec663c724ea
Updated Program 4
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mcharrison17 | 0:37c51fede871 | 1 | AREA PROGRAM4, CODE, READONLY |
mcharrison17 | 0:37c51fede871 | 2 | |
mcharrison17 | 0:37c51fede871 | 3 | GLOBAL CountItems |
mcharrison17 | 0:37c51fede871 | 4 | ;int32_t CountItems() |
mcharrison17 | 2:a38c09fad0fe | 5 | |
mcharrison17 | 0:37c51fede871 | 6 | CountItems ; get max num of words |
mcharrison17 | 1:2308340de21d | 7 | MOV R4, #0 ; track num of words |
mcharrison17 | 0:37c51fede871 | 8 | ADR R1, table ; get address of beginning of table |
mcharrison17 | 0:37c51fede871 | 9 | LDR R2, [R1] ; get value at address of beginning of table |
mcharrison17 | 0:37c51fede871 | 10 | MOV R3, #12 ; use to move to next word in table |
mcharrison17 | 0:37c51fede871 | 11 | B getWordCount |
mcharrison17 | 0:37c51fede871 | 12 | |
mcharrison17 | 0:37c51fede871 | 13 | getWordCount |
mcharrison17 | 0:37c51fede871 | 14 | CMP R2, #0 ; compare value in table to 0 |
mcharrison17 | 0:37c51fede871 | 15 | BEQ leave1 |
mcharrison17 | 0:37c51fede871 | 16 | ADD R4, R4, #1 ; add 1 to num of words |
mcharrison17 | 1:2308340de21d | 17 | LDR R2, [R1, R3] ; move R3 num of bytes in the table |
mcharrison17 | 0:37c51fede871 | 18 | ADD R3, R3, #12 ; add 12 bytes to R3 |
mcharrison17 | 0:37c51fede871 | 19 | B getWordCount ; loop back |
mcharrison17 | 0:37c51fede871 | 20 | |
mcharrison17 | 0:37c51fede871 | 21 | leave1 |
mcharrison17 | 0:37c51fede871 | 22 | MOV R0, R4 |
mcharrison17 | 0:37c51fede871 | 23 | BX LR |
mcharrison17 | 0:37c51fede871 | 24 | |
mcharrison17 | 0:37c51fede871 | 25 | GLOBAL SumAllFrequencies |
mcharrison17 | 0:37c51fede871 | 26 | ;int32_t SumAllFrequencies() |
mcharrison17 | 0:37c51fede871 | 27 | |
mcharrison17 | 0:37c51fede871 | 28 | SumAllFrequencies |
mcharrison17 | 0:37c51fede871 | 29 | MOV R4, #0 ; track frequency num |
mcharrison17 | 0:37c51fede871 | 30 | ADR R1, table ; get address of beginning of table |
mcharrison17 | 0:37c51fede871 | 31 | MOV R3, #8 ; use 8 to account for word being first in table |
mcharrison17 | 0:37c51fede871 | 32 | LDR R2, [R1, R3] ; get value where first frequency is stored in table |
mcharrison17 | 0:37c51fede871 | 33 | ADD R3, R3, #12 ; use to move to next frequency in table |
mcharrison17 | 0:37c51fede871 | 34 | B getFrequencyCount |
mcharrison17 | 0:37c51fede871 | 35 | |
mcharrison17 | 0:37c51fede871 | 36 | getFrequencyCount |
mcharrison17 | 0:37c51fede871 | 37 | CMP R2, #0 ; compare value in table to 0 |
mcharrison17 | 0:37c51fede871 | 38 | BEQ leave ; break because looped through entire table |
mcharrison17 | 0:37c51fede871 | 39 | ADD R4, R4, R2 ; add current frequency to total frequency |
mcharrison17 | 0:37c51fede871 | 40 | LDR R2, [R1, R3] ; move R3 num of bytes in the table |
mcharrison17 | 2:a38c09fad0fe | 41 | ADD R3, R3, #12 ; add 12 bytes to R3 |
mcharrison17 | 0:37c51fede871 | 42 | B getFrequencyCount ; loop back |
mcharrison17 | 0:37c51fede871 | 43 | |
mcharrison17 | 0:37c51fede871 | 44 | leave |
mcharrison17 | 0:37c51fede871 | 45 | MOV R0, R4 |
mcharrison17 | 0:37c51fede871 | 46 | BX LR |
mcharrison17 | 0:37c51fede871 | 47 | |
mcharrison17 | 0:37c51fede871 | 48 | GLOBAL GetWordAt |
mcharrison17 | 0:37c51fede871 | 49 | ;uint8_t * GetWordAt(int32_t i) |
mcharrison17 | 0:37c51fede871 | 50 | |
mcharrison17 | 0:37c51fede871 | 51 | GetWordAt |
mcharrison17 | 0:37c51fede871 | 52 | MOV R1, #1 |
mcharrison17 | 0:37c51fede871 | 53 | ADR R2, table ; get address of beginning of table |
mcharrison17 | 0:37c51fede871 | 54 | LDR R3, [R2] ; get value at address of beginning of table |
mcharrison17 | 2:a38c09fad0fe | 55 | MOV R4, #12 ; use to move to next word in table |
mcharrison17 | 0:37c51fede871 | 56 | B findWord |
mcharrison17 | 0:37c51fede871 | 57 | |
mcharrison17 | 0:37c51fede871 | 58 | findWord |
mcharrison17 | 0:37c51fede871 | 59 | CMP R1, R0 ; compare 1 to i |
mcharrison17 | 0:37c51fede871 | 60 | BEQ wordFound ; break because word found |
mcharrison17 | 0:37c51fede871 | 61 | LDR R3, [R2, R4] ; move R4 num of bytes in table |
mcharrison17 | 2:a38c09fad0fe | 62 | ADD R4, R4, #12 ; add 12 bytes to R3 |
mcharrison17 | 2:a38c09fad0fe | 63 | ADD R1, R1, #1 |
mcharrison17 | 2:a38c09fad0fe | 64 | B findWord |
mcharrison17 | 0:37c51fede871 | 65 | |
mcharrison17 | 0:37c51fede871 | 66 | wordFound |
mcharrison17 | 0:37c51fede871 | 67 | MOV R0, R3 |
mcharrison17 | 0:37c51fede871 | 68 | BX LR |
mcharrison17 | 0:37c51fede871 | 69 | |
mcharrison17 | 0:37c51fede871 | 70 | GLOBAL GetFreqAt |
mcharrison17 | 0:37c51fede871 | 71 | ;int16_t GetFreqAt(int32_t i) |
mcharrison17 | 0:37c51fede871 | 72 | |
mcharrison17 | 0:37c51fede871 | 73 | GetFreqAt |
mcharrison17 | 0:37c51fede871 | 74 | MOV R1, #1 |
mcharrison17 | 0:37c51fede871 | 75 | ADR R2, table ; get address of beginning of table |
mcharrison17 | 0:37c51fede871 | 76 | MOV R3, #8 ; use 8 to account for word being first in table |
mcharrison17 | 2:a38c09fad0fe | 77 | LDRH R4, [R2, R3] ; get value where first frequency is stored in table |
mcharrison17 | 0:37c51fede871 | 78 | ADD R3, R3, #12 ; use to move to next frequency in table |
mcharrison17 | 0:37c51fede871 | 79 | B findFrequency |
mcharrison17 | 0:37c51fede871 | 80 | |
mcharrison17 | 0:37c51fede871 | 81 | findFrequency |
mcharrison17 | 2:a38c09fad0fe | 82 | CMP R1, R0 ; compare R1 to i |
mcharrison17 | 0:37c51fede871 | 83 | BEQ frequencyFound ; break because frequency found |
mcharrison17 | 2:a38c09fad0fe | 84 | LDRH R4, [R2, R3] ; move R3 num of bytes in table |
mcharrison17 | 2:a38c09fad0fe | 85 | ADD R3, R3, #12 ; add 12 bytes to R3 |
mcharrison17 | 2:a38c09fad0fe | 86 | ADD R1, R1, #1 |
mcharrison17 | 0:37c51fede871 | 87 | B findFrequency |
mcharrison17 | 0:37c51fede871 | 88 | |
mcharrison17 | 0:37c51fede871 | 89 | frequencyFound |
mcharrison17 | 2:a38c09fad0fe | 90 | MOV R0, R4 |
mcharrison17 | 0:37c51fede871 | 91 | BX LR |
mcharrison17 | 0:37c51fede871 | 92 | |
mcharrison17 | 0:37c51fede871 | 93 | stop B stop |
mcharrison17 | 0:37c51fede871 | 94 | |
mcharrison17 | 2:a38c09fad0fe | 95 | table DCB "pie",0 |
mcharrison17 | 2:a38c09fad0fe | 96 | SPACE 4 |
mcharrison17 | 2:a38c09fad0fe | 97 | DCW 34 |
mcharrison17 | 0:37c51fede871 | 98 | SPACE 2 |
mcharrison17 | 2:a38c09fad0fe | 99 | DCB "cake",0 |
mcharrison17 | 2:a38c09fad0fe | 100 | SPACE 3 |
mcharrison17 | 2:a38c09fad0fe | 101 | DCW 29 |
mcharrison17 | 0:37c51fede871 | 102 | SPACE 2 |
mcharrison17 | 2:a38c09fad0fe | 103 | DCB "souffle",0 |
mcharrison17 | 2:a38c09fad0fe | 104 | DCW 22 |
mcharrison17 | 0:37c51fede871 | 105 | SPACE 2 |
mcharrison17 | 2:a38c09fad0fe | 106 | DCB "cookie",0 |
mcharrison17 | 2:a38c09fad0fe | 107 | SPACE 1 |
mcharrison17 | 2:a38c09fad0fe | 108 | DCW 15 |
mcharrison17 | 0:37c51fede871 | 109 | SPACE 2 |
mcharrison17 | 0:37c51fede871 | 110 | DCB 0 |
mcharrison17 | 0:37c51fede871 | 111 | |
mcharrison17 | 0:37c51fede871 | 112 | END |