Tải bản đầy đủ (.docx) (7 trang)

Giải bài tập lập trình hệ thống nhúng KMA

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (30.82 KB, 7 trang )

Bài 1 Tính tổng 1+ x^2 + x^3 +...+ x^n va 5<=n<=10
AREA RESET, DATA, READONLY
DCD 0x20001000
DCD RESET_HANDLER
ALIGN
AREA MYCODE, CODE, READONLY
ENTRY
EXPORT RESET_HANDLER
PT PROC
ADD R2, #1
CMP R2, #8 ;#8 la so mu cua phuong trinh, so N
BGT EXIT
B NHAN
NHAN
MUL R0, R1
ADD R3, R0
B PT
EXIT
BX LR
ENDP
RESET_HANDLER
MAIN PROC
MOV R0, #3 ;Dat R0 la so X cua phuong trinh
MOV R1, R0 ;Truyen gia tri cua R0 vao trong R1
MOV R2, #1 ;R2 la bien chay tu 1 den mu N
MOV R3, #1 ;R3 la ket qua cua phuong trinh
BL PT
ENDP
END

Bài 2:


- Tính tồng các phần tử trên đường chéo phụ của ma trận 4x4
- Đếm số phần tử là SNT trên đường chéo chính của ma trận 4x4
AREA RESET, DATA, READONLY
DCD 0x20001000
DCD RESET_HANDLER
ALIGN


MATRIX

DCD 0,2,3,4
DCD 5,7,7,8
DCD 9,10,15,12
DCD -3,14,15,-13
AREA MYCODE, CODE, READONLY
ENTRY
EXPORT RESET_HANDLER
HAM1 PROC
ADD R8, #1
CMP R8, #4
BGT EXIT
ADD R0, #12
LDR R1, [R0]
ADD R2, R1
B HAM1
;------------------------------------HAM2 PROC
ADD R8, #1
CMP R8, #4
BGT EXIT
LDR R1, [R0], #20

MOV R5, #1; Bien chay i
CMP R1, #0
BGT CHECK
B HAM2
CHECK
ADD R5,#1
CMP R5, R1
BEQ ADDSNT
BGT HAM2
UDIV R4, R1, R5
MLS R4, R4, R5, R1
CMP R4, #0
BEQ HAM2
B CHECK
ADDSNT
ADD R3, #1
B HAM2
EXIT
BX LR


ENDP
RESET_HANDLER
MAIN PROC
LDR R0, =MATRIX
MOV R8, #0
BL HAM1
;------------------------------------LDR R0, =MATRIX
MOV R8, #0
BL HAM2

NOP
ENDP
END

Bài 3:
- Tính tổng các số chia hết cho 7 trên đường chéo chính của ma trận
4x4(Tương tự cho 5, 6, 8, 10)
- Đếm số phần tử là số chẵn trên đường chéo phụ của ma trận
4x4(Nếu số lẻ thì số dư sẽ là 1 thay vì 0)
AREA RESET, DATA, READONLY
DCD 0x20001000
DCD RESET_HANDLER
ALIGN
MATRIX DCD 0,2,3,4
DCD 5,21,7,8
DCD 9,10,1,12
DCD -4,14,15,-7
AREA MYCODE, CODE, READONLY
ENTRY
EXPORT RESET_HANDLER
HAM1 PROC
ADD R8, #1
CMP R8, #4
BGT EXIT
LDR R1, [R0], #20
MOV R2, R1


CMP R2, #0
BGT CHECK

BLT HOANDOI
B HAM1
HOANDOI
NEG R2, R2; R2 = -R2
B CHECK
CHECK
UDIV R4, R2, R7
MLS R4, R4, R7, R2; R4 = R2 - (R4*R7)
CMP R4, #0
BEQ ADDNUM
B HAM1
ADDNUM
ADD R3, R1
B HAM1
;---------------------------------------HAM2 PROC
ADD R8, #1
CMP R8, #4
BGT EXIT
ADD R0, #12
LDR R1, [R0]
CMP R1, #0
BLT HAM2
UDIV R5, R1, R7
MLS R5, R5, R7, R1
CMP R5, #0
BEQ COUNT2
B HAM2
COUNT2
ADD R4, #1
B HAM2

EXIT
BX LR
ENDP
RESET_HANDLER
MAIN PROC
LDR R0, =MATRIX
MOV R7, #7


MOV R8, #0
BL HAM1 ;LUU KET QUA VAO R3
;----------------------------------LDR R0, =MATRIX
MOV R7, #2
MOV R8, #0
MOV R4, #0
BL HAM2 ;LUU KET QUA VAO R4
ENDP
END

Bài 4:
- Tính tổng giá trị của các số dương trên đường chéo chính của ma
trận 4x4
- Tính ước chung lớn nhất của một chuỗi số
AREA RESET, DATA, READONLY
DCD 0x20001000
DCD RESET_HANDLER
ALIGN
MATRIX DCD 0,2,3,4
DCD 5,7,7,8
DCD 9,10,15,12

DCD -3,14,15,-13
STRING DCD 0,0,4,-13,0,6
AREA MYCODE, CODE, READONLY
ENTRY
EXPORT RESET_HANDLER
HAM1 PROC
ADD R8, #1
CMP R8, #4
BGT EXIT
LDR R1, [R0], #20
CMP R1, #0
BLE HAM1
ADD R4, R1
B HAM1


;------------------------HAM2 PROC
LDR R1, [R0]
CMP R1, #0
BLT HOANDOI1
BEQ PASSZERO
B FINDUCLN
FINDUCLN
ADD R8, #1
CMP R8, #6
BGT EXIT
LDR R2,[R0],#4
CMP R2, #0
BLT HOANDOI2
BEQ FINDUCLN

B UCLN
HOANDOI2
NEG R2, R2
B UCLN
UCLN
CMP R1, R2
BGT S_A
BLT S_B
BEQ FINDUCLN
S_A
SUB R1, R1, R2
B UCLN
S_B
SUB R2, R2, R1
B UCLN
EXIT
BX LR
ENDP
HOANDOI1
NEG R1, R1
B FINDUCLN
PASSZERO
ADD R8, #1
ADD R0, #4
LDR R1, [R0]


CMP R1, #0
BEQ PASSZERO
BLT HOANDOI1

B FINDUCLN
RESET_HANDLER
MAIN PROC
LDR R0, =MATRIX
MOV R8, #0
BL HAM1
;----------------------------LDR R0, =STRING
MOV R8, #0
BL HAM2
ENDP
END



×