This is program 4

Dependencies:   LCD_DISCO_F429ZI mbed TS_DISCO_F429ZI BSP_DISCO_F429ZI

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?

UserRevisionLine numberNew 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