ví dụ tập lệnh arm.pdf
TRANSCRIPT
![Page 1: Ví dụ tập lệnh ARM.pdf](https://reader030.vdocuments.site/reader030/viewer/2022033008/55cf917b550346f57b8dca1f/html5/thumbnails/1.jpg)
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
![Page 2: Ví dụ tập lệnh ARM.pdf](https://reader030.vdocuments.site/reader030/viewer/2022033008/55cf917b550346f57b8dca1f/html5/thumbnails/2.jpg)
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
![Page 3: Ví dụ tập lệnh ARM.pdf](https://reader030.vdocuments.site/reader030/viewer/2022033008/55cf917b550346f57b8dca1f/html5/thumbnails/3.jpg)
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;
![Page 4: Ví dụ tập lệnh ARM.pdf](https://reader030.vdocuments.site/reader030/viewer/2022033008/55cf917b550346f57b8dca1f/html5/thumbnails/4.jpg)
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)
![Page 5: Ví dụ tập lệnh ARM.pdf](https://reader030.vdocuments.site/reader030/viewer/2022033008/55cf917b550346f57b8dca1f/html5/thumbnails/5.jpg)
5
PUSH và POP
![Page 6: Ví dụ tập lệnh ARM.pdf](https://reader030.vdocuments.site/reader030/viewer/2022033008/55cf917b550346f57b8dca1f/html5/thumbnails/6.jpg)
6
![Page 7: Ví dụ tập lệnh ARM.pdf](https://reader030.vdocuments.site/reader030/viewer/2022033008/55cf917b550346f57b8dca1f/html5/thumbnails/7.jpg)
Ví dụ tập lệnh ARM
7
![Page 8: Ví dụ tập lệnh ARM.pdf](https://reader030.vdocuments.site/reader030/viewer/2022033008/55cf917b550346f57b8dca1f/html5/thumbnails/8.jpg)
• VD:
8
![Page 9: Ví dụ tập lệnh ARM.pdf](https://reader030.vdocuments.site/reader030/viewer/2022033008/55cf917b550346f57b8dca1f/html5/thumbnails/9.jpg)
Đị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
![Page 10: Ví dụ tập lệnh ARM.pdf](https://reader030.vdocuments.site/reader030/viewer/2022033008/55cf917b550346f57b8dca1f/html5/thumbnails/10.jpg)
• Gán địa chỉ hoặc dữ liệu vào một tên
10
![Page 11: Ví dụ tập lệnh ARM.pdf](https://reader030.vdocuments.site/reader030/viewer/2022033008/55cf917b550346f57b8dca1f/html5/thumbnails/11.jpg)
11
Ví dụ 1. Chuyển dữ liệu 16 bit
![Page 12: Ví dụ tập lệnh ARM.pdf](https://reader030.vdocuments.site/reader030/viewer/2022033008/55cf917b550346f57b8dca1f/html5/thumbnails/12.jpg)
Ví dụ 2. Tìm số bù (đảo) của một số
![Page 13: Ví dụ tập lệnh ARM.pdf](https://reader030.vdocuments.site/reader030/viewer/2022033008/55cf917b550346f57b8dca1f/html5/thumbnails/13.jpg)
13
Ví dụ 3. Cộng hai số
![Page 14: Ví dụ tập lệnh ARM.pdf](https://reader030.vdocuments.site/reader030/viewer/2022033008/55cf917b550346f57b8dca1f/html5/thumbnails/14.jpg)
14
Ví dụ 3b. Cộng hai số & lưu KQ
![Page 15: Ví dụ tập lệnh ARM.pdf](https://reader030.vdocuments.site/reader030/viewer/2022033008/55cf917b550346f57b8dca1f/html5/thumbnails/15.jpg)
15
Ví dụ 4. Dịch trái 1 bit
![Page 16: Ví dụ tập lệnh ARM.pdf](https://reader030.vdocuments.site/reader030/viewer/2022033008/55cf917b550346f57b8dca1f/html5/thumbnails/16.jpg)
16
VD 5. Tách 1 byte thành nibble cao và thấp
![Page 17: Ví dụ tập lệnh ARM.pdf](https://reader030.vdocuments.site/reader030/viewer/2022033008/55cf917b550346f57b8dca1f/html5/thumbnails/17.jpg)
17
VD 6. Tìm số lớn hơn trong 2 số
![Page 18: Ví dụ tập lệnh ARM.pdf](https://reader030.vdocuments.site/reader030/viewer/2022033008/55cf917b550346f57b8dca1f/html5/thumbnails/18.jpg)
18
Các lệnh so sánh có dấu/không dấu
![Page 19: Ví dụ tập lệnh ARM.pdf](https://reader030.vdocuments.site/reader030/viewer/2022033008/55cf917b550346f57b8dca1f/html5/thumbnails/19.jpg)
19
VD 7. Cộng 64 bit
![Page 20: Ví dụ tập lệnh ARM.pdf](https://reader030.vdocuments.site/reader030/viewer/2022033008/55cf917b550346f57b8dca1f/html5/thumbnails/20.jpg)
20
VD 8. Tìm giai thừa từ 1 bảng sử dụng địa chỉ của vị trí ô nhớ
![Page 21: Ví dụ tập lệnh ARM.pdf](https://reader030.vdocuments.site/reader030/viewer/2022033008/55cf917b550346f57b8dca1f/html5/thumbnails/21.jpg)
21
![Page 22: Ví dụ tập lệnh ARM.pdf](https://reader030.vdocuments.site/reader030/viewer/2022033008/55cf917b550346f57b8dca1f/html5/thumbnails/22.jpg)
Bài tập
1. Chuyển DL 64 bit:
2. Trừ 32 bit:
22
![Page 23: Ví dụ tập lệnh ARM.pdf](https://reader030.vdocuments.site/reader030/viewer/2022033008/55cf917b550346f57b8dca1f/html5/thumbnails/23.jpg)
3. Dịch phải 3 bit:
4. Tìm số nhỏ nhất trong 3 số:
23
![Page 24: Ví dụ tập lệnh ARM.pdf](https://reader030.vdocuments.site/reader030/viewer/2022033008/55cf917b550346f57b8dca1f/html5/thumbnails/24.jpg)
5. Tổng các bình phương:
6. Dịch trái n bit:
24
![Page 25: Ví dụ tập lệnh ARM.pdf](https://reader030.vdocuments.site/reader030/viewer/2022033008/55cf917b550346f57b8dca1f/html5/thumbnails/25.jpg)
7. Giải thích hoạt động, chức năng của chương trình sau:
25
![Page 26: Ví dụ tập lệnh ARM.pdf](https://reader030.vdocuments.site/reader030/viewer/2022033008/55cf917b550346f57b8dca1f/html5/thumbnails/26.jpg)
26
8. Giải thích hoạt động, chức năng của chương trình sau: