Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PRESERVE8
- THUMB
- GET config.s
- GET stm32f10x.s
- AREA RESET, CODE, READONLY
- DCD STACK_TOP
- DCD Reset_Handler
- ENTRY
- Reset_Handler PROC
- EXPORT Reset_Handler
- main
- MOV R0, #4 ; R0 Порядок полинома
- MOV32 R1, 0x20000200 ; R1 Указатель на область памяти
- MOV R3, #9 ; R3 Значение переменной полинома
- MOV R4, #0 ; R4 Результат
- PUSH {R0,R1,R3}
- BL poli
- loop
- B loop
- ENDP
- poli PROC
- MOV R5, #0 ; Обнуляем R5
- MOV R6, R0
- CMP R0, #1
- IT HI
- BHI exp ; if(R0>1)
- B final ; if(R0=1)
- exp ; Возведение в степень R3 в R0
- CMP R0,#1
- BEQ next ; если степень больше 1 то возводим
- CMP R5,#0 ; проверка, если R5=0 то R5=R3*R3 если нет то R5=R5*R3
- ITE EQ
- MULEQ R5, R3, R3 ; R5=R3*R3
- MULNE R5, R3 ; R5=R5*R3
- SUB R0,#1
- B exp
- next ; Считаем остальную часть
- MOV R0, R6 ; Восстанавливаем R0
- MOV R6, #0 ; Обнуляем R6
- LDR R2,[R1] ; в R2 значение по адресу R1
- MUL R6, R5, R2 ; R6=R5*R2=R3^R0*[R1]
- ADD R4, R4, R6 ; R4=R4+R6
- ADD R1, #4 ; Считываем следующие 32 бита
- SUB R0, #1 ; Вычитаем еденицу и считаем дальше
- B poli
- final
- LDR R2,[R1]
- MUL R3, R2
- ADD R1, #4
- LDR R2,[R1]
- ADD R3, R2
- ADD R4, R4, R3
- POP {R3,R1,R0}
- BX LR
- ENDP
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement