Bài tập có lời giải và code đính kèm chương 8 sách Embedded Systems with ARM CortexM Microcontrollers in Assembly Language and C (Third Edition – Dr Yifeng Zhu ), gồm những bài tập: Viết các chương trình con: xác định các số nguyên tố, mã hóa caeser, bài toán tính giá vé xem phim, tính tổng giai thừa, tìm số lượng bit khác, tìm phần tử duy nhất trong mảng, tính giá trị biểu thức phương trình bậc hai, fibonaci, xác định số đối xứng (palindrome), tính lũy thừa của 2.
Trang 1LẬP TRÌNH VI ĐIỀU KHIỂN STM32L152
(Sách Embedded Systems with ARM Cortex-M Microcontrollers
in Assembly Language and C (Third Edition) – Dr Yifeng Zhu )
BÀI TẬP CHƯƠNG 8 – CHƯƠNG TRÌNH CON
(Code đính kèm)
81_SoNguyenTo
Đề: Viết một chương trình con kiểm tra thử xem một số đưa vào có phải là số
nguyên tố hay không ? Chương trình con nhận một tham số và trả về đúng hoặc sai Tìm tất cả các số nguyên tố trong khoảng từ 100 đến 200 ?
Code:
INCLUDE stm32l1xx_tim_constants.s ; TIM Constants
AREA main, CODE, READONLY
Trang 2program hangs here
Trang 3INCLUDE stm32l1xx_tim_constants.s ; TIM Constants
AREA main, CODE, READONLY
Trang 4STR r1, [r6], #4 ; la so nguyen to , luu vao r6
Trang 5SUB r0, r1, r0 ; r0 = r0-r3; tim so du cua phep chia r1/r3
Trang 6Code:
INCLUDE stm32l1xx_tim_constants.s ; TIM Constants
AREA main, CODE, READONLY
Trang 8B thành chữ E…
Code:
Trang 9INCLUDE stm32l1xx_tim_constants.s ; TIM Constants
AREA main, CODE, READONLY
Trang 10Code:
INCLUDE stm32l1xx_tim_constants.s ; TIM Constants
AREA main, CODE, READONLY
linker
ENTRY
Trang 12INCLUDE stm32l1xx_tim_constants.s ; TIM Constants
AREA main, CODE, READONLY
Trang 13bl sumS ; call sumS(a,n)
; ket qua luu vao r2
Trang 14AREA myData, DATA, READWRITE
Code:
INCLUDE stm32l1xx_tim_constants.s ; TIM Constants
AREA main, CODE, READONLY
linker
ENTRY
; r2 chua ket qua
ENDP
Trang 15sumFactorial PROC ; ham thu nhat
Trang 16INCLUDE stm32l1xx_tim_constants.s ; TIM Constants
AREA main, CODE, READONLY
linker
ENTRY
Trang 17SUB r2, r0, r1 ; c = a - b
CMP r2, #0 ; c == 0 countinue while BEQ skip
skip
LSR r0, #1
stop1
Trang 18INCLUDE stm32l1xx_tim_constants.s ; TIM Constants
AREA main, CODE, READONLY
Trang 20Code:
INCLUDE stm32l1xx_tim_constants.s ; TIM Constants
AREA main, CODE, READONLY
linker
ENTRY
Trang 21skip
Trang 22B loop
;co the xai pop{pc}
ENDP
PUSH {r0,r1,r2,r3,r5} ; luu cac gia tri nay vao ngan xep
Trang 23Code:
INCLUDE stm32l1xx_tim_constants.s ; TIM Constants
AREA main, CODE, READONLY
linker
ENTRY
Trang 25AREA myData, DATA, READWRITE
INCLUDE stm32l1xx_tim_constants.s ; TIM Constants
AREA main, CODE, READONLY
Trang 27Code:
INCLUDE stm32l1xx_tim_constants.s ; TIM Constants
AREA main, CODE, READONLY
bne else
mov r0, #1
return
Trang 29END
814_KPowerof2
Đề: Viết một chương trình con asm tính K th (2 k lũy thừa của 2)
Code:
INCLUDE stm32l1xx_tim_constants.s ; TIM Constants
AREA main, CODE, READONLY