26
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

Ví dụ tập lệnh ARM.pdf

Embed Size (px)

Citation preview

Page 1: Ví dụ tập lệnh ARM.pdf

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

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

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

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

5

PUSH và POP

Page 6: Ví dụ tập lệnh ARM.pdf

6

Page 7: Ví dụ tập lệnh ARM.pdf

Ví dụ tập lệnh ARM

7

Page 8: Ví dụ tập lệnh ARM.pdf

• VD:

8

Page 9: Ví dụ tập lệnh ARM.pdf

Đị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

• 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

11

Ví dụ 1. Chuyển dữ liệu 16 bit

Page 12: Ví dụ tập lệnh ARM.pdf

Ví dụ 2. Tìm số bù (đảo) của một số

Page 13: Ví dụ tập lệnh ARM.pdf

13

Ví dụ 3. Cộng hai số

Page 14: Ví dụ tập lệnh ARM.pdf

14

Ví dụ 3b. Cộng hai số & lưu KQ

Page 15: Ví dụ tập lệnh ARM.pdf

15

Ví dụ 4. Dịch trái 1 bit

Page 16: Ví dụ tập lệnh ARM.pdf

16

VD 5. Tách 1 byte thành nibble cao và thấp

Page 17: Ví dụ tập lệnh ARM.pdf

17

VD 6. Tìm số lớn hơn trong 2 số

Page 18: Ví dụ tập lệnh ARM.pdf

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

19

VD 7. Cộng 64 bit

Page 20: Ví dụ tập lệnh ARM.pdf

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

21

Page 22: Ví dụ tập lệnh ARM.pdf

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

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

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

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

26

8. Giải thích hoạt động, chức năng của chương trình sau: