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