Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PRESERVE8 ; 8-битное выравнивание стека
- THUMB ; Режим Thumb (AUL) инструкций
- GET stm32f10x.s
- AREA RESET, CODE, READONLY
- ; Таблица векторов прерываний
- DCD STACK_TOP ; Указатель на вершину стека
- DCD Reset_Handler ; Вектор сброса
- ENTRY ; Точка входа в программу
- Reset_Handler PROC ; Вектор сброса
- EXPORT Reset_Handler ; Делаем Reset_Handler видимым вне этого файла
- main
- MOV32 R1, POINTER
- MOV R0, #5
- STRB R0, [R1], #1
- MOV R0, #2
- STRB R0, [R1], #1
- MOV R0, #3
- STRB R0, [R1], #1
- MOV R0, #4
- STRB R0, [R1], #1
- MOV R0, #0xFF
- STRB R0, [R1]
- MOV32 R0, POINTER
- MOV R1, AMOUNT
- BL generateLRC
- ENDP
- generateLRC PROC ; Подпрограмма задержки
- PUSH {R0, R1, R3} ; Загружаем в стек R0, т.к. его значение будем менять
- MOV32 R2, #0
- lrc_loop
- LDRB R3, [R0], #1
- ADD R2, R3
- SUBS R1, #1
- BNE lrc_loop
- EOR R2, #0xFF ; before - 0001 0000 1101, after 0001 1111 0010
- ADD R2, #1
- AND R2, #0xFF
- POP {R0, R1, R3} ; Выгружаем из стека R0
- BX LR ; выход из подпрограммы (переход к адресу в регистре LR - вершина стека)
- ENDP
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement