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