This is program 4

Dependencies:   LCD_DISCO_F429ZI mbed TS_DISCO_F429ZI BSP_DISCO_F429ZI

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?

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