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

Bài tập lớp kiến trúc máy tính

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 (998.02 KB, 30 trang )

TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP
KHOA ĐIỆN TỬ
Bộ môn:

TIN HỌC CÔNG NGHIỆP

BÁO CÁO BÀI TẬP LỚN

ĐỀ TÀI: TÌM HIỂU VỀ KIẾN TRÚC CỦA ARM
NHÓM 2:
SINH VIÊN:
1: NGÔ QUANG KHÁ
2: NGUYỄN KHẮC SĨ
3: CAO THỊNH TỌA
4: NGUYỄN THỊ HỒNG NHUNG
LỚP HP: 45Z

Giáo viên hướng dẫn : TH.S PHÙNG THỊ THU HIỀN

Thái Nguyên – 2012
`


TRƯỜNG ĐHKTCN
Khoa Điện tử

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc

BÀI TẬP LỚN
Môn học:



Kiến trúc máy tính

Bộ môn:

Tin học công nghiệp

Sinh viên thực hiện :

Ngô quang khá
Cao thịnh tọa

Nguyễn khắc sĩ
Nguyễn thị hồng nhung

Lớp HP:45Z
Giáo viên hướng dẫn: TH.S PHÙNG THỊ THU HIỀN
Ngày giao đề:

Ngày hoàn thành:

Tên đề tài :
Tìm hiểu kiến trúc ARM

Yêu cầu:
-Mô hình lập trình
-Tập lệnh và cấu trúc dữ liệu
-Quản lý bộ nhớ
-Ví dụ minh họa
Thông qua phần

Xác định yêu cầu

Thông qua phần
Lý thuyết

P.Trưởng bộ môn

ThS. Nguyễn Tuấn Linh
Phân công nhiệm vụ mỗi thành viên:

Thông qua phần
Mô phỏng (nếu có), kết luận

Đồng ý cho bảo vệ

Giáo viên hướng dẫn

…………………………


-Mô hình lập trình: NGÔ QUANG KHÁ
-Tập lệnh và cấu trúc dữ liệu: NGUYỄN KHẮC SĨ
-Quản lý bộ nhớ:CAO THỊNH TỌA
-Ví dụ minh họa :NGUYỄN THỊ HỒNG NHUNG
Ngoài nhiệm vụ được phân công cụ thể của từng người thì các thành viên trong nhóm đã
nhiệt tình giúp đỡ ,đưa ra sự góp ý để mỗi thành viên có thể hoàn thành được phần công
việc của mình cũng như có hoàn chỉnh bài báo cáo chung của nhóm.

MỤC LỤC



LỜI NÓI ĐẦU……………………………………………………………………………5
I) MÔ HÌNH LẬP TRÌNH………………………………………………………….…...7
1.1 Môhình thiết kếARM………………………………………………………………....7
1.2 Các thanh ghi của ARM………………………………………………………..……...8
II) TẬP LỆNH VÀ CẤU TRÚC DỮ LIỆU…………………………………………..10
2.1. Kiểu dữ liệu…………………………………………………………………………10
2.2. Chế độ hoạt động…………………………………………………………………...10
2.3. Thực thi các điều kiện…..…………………………………………………………..11
2.4. Ngắt phần mềm<SWI>:……………………………………………………….........12
2.5. Lệnh xử lý dữ liệu: ………………………………………………………………….14
2.6 lệnh cộng số học và logic…………………………………………………………..14
2.7 Lệnh nhân: …………………………………………………………………...……..15
2.8. Lệnh chuyển dữ liệu: byte không dấu và 1 word: …………………….……………17
2.9. Lệnh chuyển dữ liệu………………………………………………………………...17
2.10. Lệnh chuyển dữ liệu nhiều thanh ghi:…………………………………………....19
2.11.Lệnh hoán đổi giá trị của bộ nhớ và thanh ghi: …………………………19
2.12. Lệnh chuyển giá trị từ thanh ghi trạng thái vào thanh ghi đa dụng: …….……19
2.13. Lệnh chuyển giá trị từ thanh ghi đa dụng vào thanh ghi trạng thái: ……………....20
2.14 Lệnh so sánh: …..…………………………………………………………………..21
2.15 Lệnh dịch………………………………………………………………..……….…22
IV )QUẢN LÝ BỘ NHỚ…………………………………………………………....…24
3.1)Vùng RAM……………………………………………………………………....…25
3.2Vùng ROM……………………………………………………………………....….26
3.3EPROM/Flash…………………………………………………………………...….27
KẾT LUẬN ………………………………………………………………………….…28
TÀI LIỆU THAM KHẢO……………………………………………………………..29


LỜI NÓI ĐẦU

Kiến trúc ARM (tên gốc trước đây là Advanced RISC Machines, hiện nay là Acorn
Machine) là loại kiến trúc vi xử lý 32-bit kiểu RISC (Reduced Instructions Set
Computer Máy tính với tập lệnh đơn giản hóa), mô hình bộ nhớ theo kiến trúc
Harvard (tuyến dữ liệu và tuyến lệnh tách riêng), mô hình thanh ghi theo kiến trúc
Registry – Registry, được phát triển bởi tập đoàn ARM Technology, được dùng
rộng rãi trong các thiết kế hệ thống nhúng. Do có đặc điểm tiết kiệm năng lượng,
nên các CPU ARM chiếm ưu thế trong thị trường điện tử di động, nơi mà các sản
phẩm tiêu tốn ít năng lượng được xem như là mục tiêu thiết kế hàng đầu.
Ngày nay, kiến trúc ARM là kiến trúc CPU 32-bit được dùng rộng rãi nhất trên thế
giới, ước tính trên 75% CPU 32-bit nhúng là thuộc họ ARM. ARM được tìm thấy
khắp nơi trong các sản phẩm điện tử, từ thiết bị cầm tay (PDA, điện thoại di động,
máy trò chơi cầm tay, …) cho đến các thiết bị ngoại vi của máy tính (ổ đĩa cứng,
bộ định tuyến …). Một nhánh nổi tiếng của họ ARM là các vi xử lý XScale.
* ARM7: GBA, iPod
* ARM9: NDS, PSP, Sony Ericssion, BenQ.
* ARM11: Apple iPhone, Nokia N93, N800.
Chúng em xin chân thành cảm ơn cô giáo Thạc sĩ PHÙNG THỊ THU HIỀN đã nhiệt
tình giúp đỡ em trong quá trình nghiên cứu và hoàn thành đề tài này.


NHẬN XÉT
(của giáo viên)
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………

………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
……………………………………………………………………………………………..



I. MÔ HÌNH LẬP TRÌNH
1.1 Mô hình thiết kế ARM

- Lõi xử lý
Dạng đơn giản của lõi xử lý gồm những phần cơ bản sau:

● Program Counter (PC): Bộ đếm chương trình: giữ địa chỉ của lệnh
hiện tại.
● Thanh ghi tich lũy(ACC):giữ giá trị dữ liệu khi đang làm việc.
● Đơn vị sử lý số học(ALU):thực thi các lệnh nhị phân công trừ,gia
tăng…
● Thanh ghi lệnh (IR): giữ tập lệnh hiện tại đang thực thi.
Lõi xử lý MU0 được phát triển đầu tiên và là lõi xử lý đơn giản, có tập lệnh dài
16 bit, với 12 bit địa chỉ và 4 bit mã hóa.
Cấu trúc tập lệnh lõi MU0 có dạng:
4Bits

12bits

opcode

S

Hình1: Cấu trúc chuẩn cho tập lệnh của MU0.
- Mô hình thiết kế đường truyền dữ liệu đơn giản của lõi xử lý MU0 được mô tả
trong hình 2. Việc thiết kế ở cấp chuyển đổi mức thanh ghi (RTL): Bộ đếm chương
trình (PC) chỉ đến tập lệnh cần thực thi, nạp vào thanh ghi lệnh (IR), giá trị chứa
trong IR chỉ đến vùng địa chỉ ô nhớ, nhận giá trị, kết hợp với giá trị đang chứa
trong thanh ghi tích lũy (ACC) qua đơn vị xử lý số học (ALU) để tạo giá trị mới,
chứa vào ACC. Mỗi một lệnh như vậy, tùy vào số lần truy cập ô nhớ mà tốn số chu

kỳ xung nhịp tương đương. Sau mỗi lệnh thực thi, PC sẽ được tăng thêm.


Hình 2: Đường truyền dữ liệu của lõi xử lý MU0.
1.2

Các thanh ghi của ARM

Để phục vụ mục đích của người dùng: r0 ÷ r14 là 15 thanh ghi đa dụng, r15 là
thanh ghi Program Counter (PC), thanh ghi trạng thái chương trình hiện tại(CPSR
-Current Program Status Register). Các thanh ghi khác được giữ lại cho hệ thống
(như thanh ghi chứa các ngắt).
Các thanh ghi của ARM được mô tả trong hình 3.

Hình 3: Mô hình các thanh ghi của ARM.


- Thanh ghi CPSR được người dùng sử dụng chứa các bit điều kiện.
- N: Negative - cờ này được bật khi bit cao nhất của kết quả xử lý ALU bằng 1.
- Z: Zero - cờ này được bật khi kết quả cuối cùng trong ALU bằng 0.
- C: Carry - cờ này được bật khi kết quả cuối cùng trong ALU lớn hơn giá trị 32
bit và tràn.
- V: Overflow - cờ báo tràn sang bit dấu.
- Thanh ghi SPSR (Save Program Status Register) dùng để lưu giữ trạng thái của
thanh ghi CPSR khi thay đổi chế độ.
II. TẬP LỆNH VÀ CẤU TRÚC DỮ LIỆU ARM:
2.1. Kiểu dữ liệu:
ARM hỗ trợ 6 loại dữ liệu:

o 8 bit có dấu và không dấu.

o 16 bit có dấu và không dấu.
o 32 bit có dấu và không dấu.
Như phần trên đề cập, các tóan tử của ARM có 32 bit, bởi vậy, khi làm việc
với các
dữ liệu ngắn hơn,các bit cao của toán tử sẽ được thay thế bằng bit ‘0’.


2.2. Chế độ hoạt động:

Bảng 1: Banger

Bảng 2
2.3. Thực thi các điều kiện:
Điều kiện cần thực thi nằm trên 4 bit cao nhất của chỉ lệnh.

Hình 4 : vi trí các bit điều kiện trong chỉ lệnh 32 bit
Hình vị trí các bit điều kiện trong hcir lệnh 32 bit
Tổ hợp các điều kiện này được quyết định bởi các bit <N,Z,C,V> nằm trong thanh ghi


trạng thái chương trình hiện tại <CPSR>
2

Bảng 3
2.4. Ngắt phần mềm<SWI>:
Các chỉ lệnh ngắt phần mềm gọi chương trình giám sát. Nó đưa vi xử lý vào chế độ
giám sát tại địa chỉ 0x0008.
3

Hình 5: ngắt mềm

Trường 24bit của vector này không ảnh hưởng tới hoạt động các chỉ lệnh nhưng có
thể tác động tới code hệ thống. Nếu vào được chế độ giám sát, vi xử lý sẽ:
+Lưu địa chỉ PC vào thanh ghi r14.
+Lưu giá trị thanh ghi trạng thái chương trình chương trình hiện tại vào thanh ghi SPSR
+Vào chế độ giám sát và không cho phép các ngắt bình thường xảy ra nhanh
vẫn còn tác động> bằng cách gán CPSR[4:0]=100112 và CPSR[7]=1.
+gán PC=0x08 và thực thi các chỉ lệnh tại đấy.
Để trở về lại chương trình bình thường sau SWI:
+Copy giá trị thanh ghi r14 vào PC.
+Lấy lại giá trị CPSR từ SPSR


-lệnh : SWI {<cond>} SWI_number
Example:

Here is some example code, from the ARM610 datasheet:
0x08 B Supervisor
EntryTable
DCD ZeroRtn
DCD ReadCRtn
DCD WriteIRtn
...
Zero EQU 0
ReadC EQU 256
WriteI EQU 512
; SWI has routine required in bits 8-23 and data
; (if any) in bits 0-7.
; Assumes R13_svc points to a suitable stack
STMFD R13, {r0-r2 , R14}

; Save work registers and return address
LDR R0,[R14,#-4]
; Get SWI instruction.
BIC R0,R0, #0xFF000000
; Clear top 8 bits.
MOV R1, R0, LSR #8
; Get routine offset.
ADR R2, Entry Table
; Get start address of entry
; table.
LDR R15,[R2,R1,LSL #2]
; nhánh đến chương trình con thích hợp.
WriteIRtn
; Wnte with character in R0 bits 0 - 7.
.............
LDMFD R13, {r0-r2 , R15}^
; khôi phục lại không gianlamf việc
; chế độ bộ xử lý và cờ.


2.5. Lệnh xử lý dữ liệu:
2.5.1. Mã hóa nhị phân:
Xem cấu trúc một chỉ lệnh xử lý dữ liệu:

Hình 6: cấu trúc một tập lệnh
2.5. 2. Phân tích:
Như đã nói ở các phần trước, mỗi chỉ lệnh của ARM có 32bit, 2 toán tử nguồn và 1
tóan tử đích. Toán tử nguồn thứ nhất là 1 thanh ghi, toán tử nguồn thứ 2 có thể là 1 thanh
ghi,
một thanh ghi được dịch(hoặc xoay) bit, hoặc là một giá trị cụ thể

* Opcode:
có tất cả 16 lệnh opcode=[00002-11112]; tham khảo cụ thể bàng bảng sau:


Bảng 3:: bảng Opcode
*. Điều kiện:
Bị ảnh hưởng bởi các bit cờ, trạng thái các cờ được quy định:
+Cờ N=1 nếu kết quả là âm <N=bit cao nhất của kết quả>
+cờ Z=1 nếu kết quả bằng 0.
+Cờ C được bật nếu kết quả có nhớ từ ALU(ADD, ADC, SUB, SBC, RSB, RSC, CMP,
CMN) hay từ kết
quả của phép dịch bit. Nếu không có phép dịch bit, cờ C được giữ giá trị trước đó.
+Cờ V chỉ bị ảnh hưởng trong các phép toán số học. V=1 khi có tràn từ bit 30 sang 31.

quan trọng chỉ trong phép toán học bù 2 có dấu.
2.6 lệnh cộng số học và logic
2.6.1 cộng với cờ nhớ (ADC)
ADC<suffix> <dest>, <op 1>, <op 2>
dest = op_1 + op_2 + carry
ADC sẽ cộng hai toán hạng ,đặt kết quả vào thanh ghi đích.nó sử dụng một bit nhớ ,có
thể cộng số lượng lớn hơn 32 bit .
128 bit numbers.
128 bit result: Registers 0, 1, 2, and 3
128 bit first: Registers 4, 5, 6, and 7
128 bit second: Registers 8, 9, 10, and 11.


ADDS R0, R4, R8
; Add low words
ADCS R1, R5, R9

; Add next word, with carry
ADCS R2, R6, R10
; Add third word, with carry
ADCS R3, R7, R11
; Add high word, with carry
Nếu thực hiện phép cộng như thế này,nên đặt S vào trạng thái của cờ nhớ được cập nhật
2.6.2 phép cộng (ADD)
ADD<suffix> <dest>, <op 1>, <op 2>
dest = op_1 + op_2
cộng hai toán hạng ,đặt kết quả vào thanh ghi đích .toán hạng 1 là 1 thanh ghi ,toán hạng
2 cớ thể là một thanh ghi ,một thanh ghi dịch hoặc một giá trị tức thời
ADD R0, R1, R2
; R0 = R1 + R2
ADD R0, R1, #256
; R0 = R1 + 256
ADD R0, R2, R3,LSL#1
; R0 = R2 + (R3 << 1)
Phép cộng có thể thực hiện số có dấu và không dấu
2.6.3 phép logic (AND)
AND<suffix> <dest>, <op 1>, <op 2>
dest = op_1 AND op_2
AND sẽ thực hiện logic giữa hai toán hạng ,đặt kết quả vào thanh ghi đích ,điều này
thuận lợi cho việc tạo ra các bit bạn muốn làm việc .toán hạng 1 là một thanh ghi, một
thanh ghi dịch hoặc một giá trị tức thời:
AND<suffix> <dest>, <op 1>, <op 2>
dest = op_1 AND op_2
AND sẽ thực hiện logic giữa hai toán hạng ,đặt kết quả vào thanh ghi đích ,điều này
thuận lợi cho việc tạo ra các bit bạn muốn làm việc .toán hạng 1 là một thanh ghi, một
thanh ghi dịch hoặc một giá trị tức thời:
AND


R0, R0, #3

; R0 = Keep bits zero and one of R0, discard the rest

.
An AND table (result = both):
Op_1 Op_2 Result
0
0
1
1

0
1
0
1

0
0
0
1


2.7 Lệnh nhân:
Có hai lệnh khác nhau từ các lệnh số học bình thường ,ở đó có những hạn chế về toán
hạng như là :

1.
2.

3.
4.

Tất cả các toán hạng và đích phải được đưa vào thanh ghi đơn giản
Ta không thể sử dụng ngay các giá trị thanh ghi dịch cho hai toán hạng
Đích và toán hạng phải khác thanh ghi
Cuối cùng ,ta không thể xác định rõ rằng R15 là đích

2.7 .1. Mã hóa nhị phân:

Hình 7 : mã hóa nhị phân cho chỉ lệnh nhân
2.7.2. Phân tích:
quy tắc:
Giả lệnh hợp ngữ trong thanh ghi từ 21-23 được cho bởi bảng sau:

Bảng 4: giả lệnh hợp ngữ cho phép nhân
MLA : Multiplication with Accumulate
MLA<suffix> <dest>, <op 1>, <op 2>, <op 3>
dest = (op_1 * op_2) + op_3
MLA thực hiện như MUL, trừ khi giá trị của toán hạng 3 được công vào kết quả. Điều này
hữu ích cho chạy kết quả tổng


MUL : Multiplication
MUL<suffix> <dest>, <op 1>, <op 2>
dest = op_1 * op_2
MUL cung cấp 32 bit nhân số nguyên. Nếu toán hạng có dấu.nó cũng được giả định
rằng kết quả cũng chứa dấu

Ví dụ:

DIM code% 12
P%=code%
[ OPT 2
MUL R2, R0, R1
MOV R0, R2
MOV PC, R14
]
REPEAT
INPUT "Number 1 : "A%
INPUT "Number 2 : "B%
PRINT "Result : "+STR$(USR(code%))'
UNTIL A% = 0
END


2.8. Lệnh chuyển dữ liệu: byte không dấu và 1 word:
2.8.1. Mã hóa nhị phân:

Hình 8:Mã hóa nhị phân cho cấu trúc truyền dữ liệu dạng byte không dấu hoặc word

2.8.2. Lệnh hợp ngữ:
Dạng định chỉ số trước: LDRlSTR{<cond>}{B} Rd, [Rn, <oIIIIset>]{!}
Dạng định chỉ số sau: LDRlSTR{<cond>}{B}{T} Rd, [Rn], <oIIIIset>
Dạng tương đối nhờ thanh ghi PC: LDRlSTR{<cond>}{B} Rd, LABEL


2.9. Lệnh chuyển dữ liệu: byte có dấu và nửa word
2.9.1. Mã hóa nhị phân:

Hình 9:mã hóa nhị phân chuyển dữ liệu dạng byte có dấu và nửa word

2.9.2. Chú thích:

Bảng 5: Mã hóa loại dữ liệu
Bit S và H cho biết loại dữ liệu truyền được quy ước như bảng trên.
2.9.3. Lệnh hợp ngữ:
Định dạng chỉ số trước: LDR|STR{<cond>}H|SHI SB Rd, [Rn, <oIIIIset>] { ! }
Định dạng chỉ số sau: LDRlSTR{<cond>}H|SHlSB Rd, [Rn], <oIIIIset>


2.10. Lệnh chuyển dữ liệu nhiều thanh ghi:
2.10.1. Mã hóa nhị phân:

Hình 10: mã hóa nhị phân lệnh chuyển dữ liệu nhiều thanh ghi
2.10.2. Chú thích:
Danh sách các thanh ghi bao gồm một mảng 16 bit thay thế cho 16 thanh ghi từ R0
đến R15 <vị trí bit tương ứng với số thứ tự thanh ghi>. U=1 địa chỉ nền tăng và ngược
lại,
P=1, địa chỉ nền tăng trước và ngược lại.
2.10.3. Lệnh hợp ngữ:
LDMISTM{<cond>}<add mode> Rn{!}, <registers>
2.11. Lệnh hoán đổi giá trị của bộ nhớ và thanh ghi:
2.11.1. Mã hóa nhị phân:

Hình 11mã hóa nhị phân chỉ lệnh đổi giá trị của bộ nhớ và thanh ghi
2.11.2. Chú thích:
B=1=>load byte không dấu, B=0=>load word ở ô nhớ được định địa chỉ bởi Rn tới
Rd, chứa giá trị từ Rm vào ô nhớ tương ứng. Rd và Rm có thể là 1 thanh ghi.
2.11.3. Lệnh hợp ngữ:
SWP{<cond>}{B} Rd, Rm,Rn
Chú ý:

+Thanhghi PC không được dùng trong chỉ lệnh này.
+Thanh ghi Rn phải khác với thanh ghi Rm và thanh ghi Rd
2.12. Lệnh chuyển giá trị từ thanh ghi trạng thái vào thanh ghi đa dụng:


2.12.1. Mã hóa nhị phân:

Hình 12: mã hóa nhị phân của chỉ lệnh chuyển giá trị thanh ghi trạng thái vào thanh ghi
đa dụng
2.12.2. Chú thích:
R=1=>Rd=SPSR
R=0=>Rd=CPSR
2.12.3. Lệnh hợp ngữ:
MRS{<cond>} Rd, CPSR
MRS{<cond>} Rd, SPSR
Chú ý:
+Chỉ có thể truy cập giá trị SPSR nhờ lệnh này.
+Khi chỉnh sửa các giá trị CPSR hoặc SPSR phải chú ý các bit không được sử dụng.
2.13. Lệnh chuyển giá trị từ thanh ghi đa dụng vào thanh ghi trạng thái:
2.13.1. Mã hóa nhị phân:

Hình 13 :mã hóa nhị phân của lệnh chuyển giá trị thanh ghi đa dụng vào thanh ghi trạng
thái


2.13.2 Lệnh hợp ngữ:
MSR{<cond>} CPSR_II, #<32-bit immediate>
MSR{<cond>}, SPSR_II, #<32-bit immediate>
MSR{<cond>} CPSR_<IIield>, Rm
MSR{<cond>} SPSR_<IIield>, Rm

- MSR –chuyển nội dung của CPSR hoặc SPSR vào trong một thanh ghi
- MSR- chuyển nội dung của thanh ghi tới CPSR tới SPSR
Ví dụ:
- Cho phép ngắt IRQ
+) PRE cpsr =nzcvqIFt_SVC
MRS r1,CPSR
BIC r1,r1,#0x80
+) POST cpsr =nzcvqiFt_SVC
Chú ý:
+Người lập trình không thay đổi được giá trị CPSR[23:0]
+Tránh truy cập SPSR khi không thật cần thiết.
2.14 Lệnh so sánh
2.14.1 CMN : So sánh với số âm
CMn giống như là CMP ,trừ khi nó cho phép so sánh lại với giá trị âm nhỏ (logic không
phải toán hạng bậc hai) điều đó sẽ khó đối với thành phần khác ,như là 1 tới cuối danh
sách
CMN<suffix> <op 1>, <op 2>
CMN

status = op_1 - (- op_2)
R0, #1
; Compare R0 with -1

Vì vậy để so sánh với -1 chúng ta sẽ sử dụng :
CMN R0, #1
; Compare R0 with -1
2.14.2 CMP: so sánh
CMP<suffix> <op 1>, <op 2>
status = op_1 - op_2


cmp cho phép bạn so sánh nội dung của một thanh ghi với một hanh ghi khác hoặc
một giá trị tức thời ,cập nhật trạng thái cờ để cho phép điều kiện thực hiện .
nó tác động một chương trình con ,nhưng không lưu trữ kết quả ở bất kỳ nơi nào
,thay vì ,cờ được cập nhật riêng
-cờ liên quan tới việc so sánh toán hạng 1 và toán hạng 2.


2.14.3 TEQ : kiểm tra tương đương
TEQ<suffix> <op 1>, <op 2>
Status = op_1 EOR op_2
TEQ thì tương tự với TST .điều khác biệt rằng tính toán số học là EOR hơn là 1 AND
Cách cung cấp này cho thấy nếu các bits ở cả hai toán hạng đều giống nhau
Hoặc không ảnh hưởng tới cờ nhớ (không giống CMP)
2.14.4 TST : test bits
TST<suffix> <op 1>, <op 2>
Status = op_1 AND op_2

TsT giống như CMP không tạo ra một kết quả để đặt vào thanh ghi đích Thay vì nó
thực hiện một hoạt đọng trên hai toán hạng ,kết quả được phản ánh trong trạng thái
của cờ TST được sử dụng để thấy nếu đặt một bit đặc biệt .1 toán hạng là dữ liệu
word để kiểm tra và hai toán hạng là một bit mặt nạ .sau khi kiểm tra ,cờ 0 sẽ được
đặt ở phép toán ,or cái khác Giống như CMP ,nó không quan trọng nếu bạn quan
tâm đến hậu tố S hay không
TST

R0, #%1

; Test if bit zero is set in R0

2.15 Lệnh dịch


Bộ xử lý ARM kết hợp các bộ dịch có thể sử dụng với các lệnh xử lý dữ liệu (ADC,
ADD, AND, BIC, CMN, CMP, EOR, MOV, MVN, ORR, RSB, SBC, SUB, TEQ,
TST).ta cũng có thể sử dụng bộ dịch để tác động đến giá trị đầu trong sựu hoạt động
của LDR/STR
Có 6 quy tắc cho cá bộ dịch khác nhau:
LSL dịch trái
ASL dịch trái số học
LSR dịch phải
ASR dịch phải số học
ROR quay phải
RRX quay phải mở rộng

ASL and LSL là giống nhau có thể thay đổi cho nhau tự do
2.15.1 Dịch trái và dịch trái số học
Rx, LSL #n
Rx, ASL #n
Rx, LSL Rn

or
or
or


Rx, ASL Rn

Nội dung của Rx sẽ được lấy và dịch tới nhiều vị trí bằng một lượng n xác định.bit tín
hiệu cuối cùng được điền với bit
Xem xét ví dụ này ;
MOV

MOV

R1, #12
R0, R1, LSL#2

Môt lối ra, R0 là 48. Lệnh được cấu trúc tổng R0 = #12, LSL#2 tương đương
R0 = 12 << 2

2.15.2 Dịch phải
Rx, LSR #n
Rx, LSR Rn

or

register = value >>> shift.

2.15.3 Dịch trái số học
Rx, ASR #n
Rx, ASR Rn

or

register = value >> shift.

2.15.4Quay phải
Rx, ROR #n
Rx, ROR Rn

or


Quay phải cũng tương tự với dịch phải,chỉ khác là các bít chuyển ra phải được thay thế
bên trái , đây là các bit xoay. Quay phải mở rộng Rx, RRX Đây là một hoạt động
ROR # 0, xoay bên phải – sựu khác biệt là cờ dấu của vi xử lý đước sử dụng để cung cấp
32 bit dịch chuyển


III.

QUẢN LÝ BỘ NHỚ

- Trong vi điều khiển ARM, bộ nhớ nội bộ có thể có các dạng bộ nhớ như: SSRAM,
SRAM, DRAM, EPROM/Flash.
Bản đồ bộ nhớ chính

Hinh 14: Sự phân tách hai trạng thái trên bản đồ bộ nhớ.
Bản đồ bộ nhớ có hai trạng thái:
- Trạng thái Reset.
- Trạng thái thông thường: sau khi đã được ánh xạ các thanh ghi định địa chỉ vào.


×