This is program 4

Dependencies:   LCD_DISCO_F429ZI mbed TS_DISCO_F429ZI BSP_DISCO_F429ZI

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?

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