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