Upload
shiftdel
View
174
Download
18
Embed Size (px)
Citation preview
Lệnh MOV • MOV R0, #1234;
• MOV R0, R1;
• MOV R0, # ’A’;
• MOVCS R0, R1; R0 R1 chỉ khi cờ nhớ (Carry) được lập (=1), R0 sẽ vẫn không thay đổi nếu cờ C bị xóa (=0)
• MOV R0, R1, LSL #2;
• MOV R0, R1, LSL R2;
• MOV R0, R1, LSR #3;
• MOV R0, R1, LSR R2;
• MOV R0, R1, ASR #4;
• MOV R0, R1, ASR R2;
• MOV R0, R1, ROR #2;
• MOV R0, R1, ROR R2;
• MOV R0, R1, RRX;
1
Truy cập bộ nhớ
• Đánh địa chỉ với độ lệch (Offset addressing):
LDR R0, [R1];
LDR R0, [R1, #4];
LDR R0, [R1, R2];
LDR R0, [R1, R2, LSL #3];
2
3
Truy cập bộ nhớ (tiếp)
• Đánh địa chỉ tiền chỉ số (Pre-index addressing):
LDR R0, [R1, #4]!;
LDR R0, [R1, R2]!;
LDR R0, [R1, R2, LSL #2]!;
• Đánh địa chỉ hậu chỉ số (Post-index addressing):
LDR R0, [R1], #4;
LDR R0, [R1], R2;
LDR R0, [R1], R2, LSL #2;
LDMIA r10, {r0,r1,r4}
LDMIB r10, {r0,r1,r4}
STMDA r10, {r0,r1,r4}
STMDB r10, {r0,r1,r4}
4
Truy cập bộ nhớ (tiếp)
IA
r1 Increasing
Address
r4
r0
r1
r4
r0
r1
r4
r0 r1
r4
r0
r10
IB DA DB
LDMxx r10, {r0,r1,r4}
STMxx r10, {r0,r1,r4}
Base Register (Rb)
5
PUSH và POP
6
Ví dụ tập lệnh ARM
7
• VD:
8
Định nghĩa hằng số
• Value1 DCW 12;
• EMESS DCB ‘Error’;
• SQRS DCB 1,4,9,16;
9
• Đặt số 12 vào vị trí ô nhớ có sẵn kế tiếp, và ấn định tên cho vị trí ô nhớ đó là Value1
• Cho phép xử lý một lượng lớn dữ liệu tại cùng một thời điểm
• Gán địa chỉ hoặc dữ liệu vào một tên
10
11
Ví dụ 1. Chuyển dữ liệu 16 bit
Ví dụ 2. Tìm số bù (đảo) của một số
13
Ví dụ 3. Cộng hai số
14
Ví dụ 3b. Cộng hai số & lưu KQ
15
Ví dụ 4. Dịch trái 1 bit
16
VD 5. Tách 1 byte thành nibble cao và thấp
17
VD 6. Tìm số lớn hơn trong 2 số
18
Các lệnh so sánh có dấu/không dấu
19
VD 7. Cộng 64 bit
20
VD 8. Tìm giai thừa từ 1 bảng sử dụng địa chỉ của vị trí ô nhớ
21
Bài tập
1. Chuyển DL 64 bit:
2. Trừ 32 bit:
22
3. Dịch phải 3 bit:
4. Tìm số nhỏ nhất trong 3 số:
23
5. Tổng các bình phương:
6. Dịch trái n bit:
24
7. Giải thích hoạt động, chức năng của chương trình sau:
25
26
8. Giải thích hoạt động, chức năng của chương trình sau: