You are on page 1of 35

1

+
Chương 11
Tập lệnh:
Chế độ định địa chỉ và định dạng Hang Phuong - TLU
+ NỘI DUNG 2

1. Các chế độ định địa chỉ


Địa chỉ tức thời
Địa chỉ trực tiếp
Địa chỉ gián tiếp
Địa chỉ thanh ghi
Địa chỉ gián tiếp thanh ghi
Địa chỉ dịch
Địa chỉ ngăn xếp
2. Định dạng lệnh
Chiều dài lệnh
Phân bổ Bit
Lệnh có độ dài thay đổi
3. Các định dạng lệnh của x86 và ARM
4. Hợp ngữ
Hang Phuong - TLU
+ 3

1. Các chế độ định địa chỉ


Toán hạng của lệnh có thể là:
 Một giá trị cụ thể nằm ngay
a. Tức thời
trong lệnh
b. Trực tiếp Chế
 Nội độdung
địnhcủa
địathanh
chỉ làghi
phương
c. Gián tiếp thức
 Nộixác định
dung củavị trí hoặc
ngăn giá trị
nhớ hoặc
củacổng
mộtvào-ra
toán hạng.
d. Thanh ghi
e. Gián tiếp thanh ghi
f. Dịch
g. Ngăn xếp

Giá trị của trường chế độ quyết định chế độ địa chỉ nào được sử dụng
4

Các chế độ định địa chỉ cơ bản


Chế độ Thuật toán Ưu điểm Nhược điểm
Hạn chế về giá trị của toán
Tức thời Toán hạng = A Không cần tham chiếu bộ nhớ
hạng
Trực tiếp EA = A Đơn giản Không gian địa chỉ hạn chế

Gián tiếp EA = (A) Không gian địa chỉ lớn Tham chiếu bộ nhớ nhiều lần

Thanh ghi EA = R Không cần tham chiếu bộ nhớ Không gian địa chỉ hạn chế

Gián tiếp
EA = A + (R) Linh hoạt Phức tạp
thanh ghi
EA = đỉnh ngăn
Ngăn xếp Không cần tham chiếu bộ nhớ Khả năng ứng dụng ít
xếp

 A = nội dung trường address trong từ lệnh


 R = tên thanh ghi được tham chiếu đến
 EA = địa chỉ hiệu dụng của vị trí chứa toán hạng (địa chỉ bộ nhớ chính hoặc
thanh ghi)
 (X) = Nội dung của vị trí bộ nhớ X hoặc thanh ghi X
5

a. Địa chỉ tức thời Từ lệnh


Opcode Toán hạng

 Dạng định địa chỉ đơn giản nhất


 Toán hạng = A (nằm ngay trong trường địa chỉ)
 Sử dụng để định nghĩa hằng số or thiết lập giá trị ban đầu của biến
 Ví dụ: ADD 5 ; AC  AC + 5
ADD R1, 5 ; R1  R1 + 5
 Ưu điểm:
+ Không cần tham chiếu bộ nhớ để lấy dữ liệu toán hạng
+ Truy xuất toán hạng rất nhanh  tiết kiệm một chu kỳ cache hoặc
bộ nhớ trong chu kỳ lệnh.
 Nhược điểm: Kích thước của số bị giới hạn bởi kích thước của
trường địa chỉ.

Hang Phuong - TLU


6

0000 0000 0000


Op Địa chỉ?
Từ lệnh 0000 0000 0001

0000 0000 0010


S Giá trị
Từ dữ liệu 0000 0000 0011

..

..

..

1111 1111 1110

1111 1111 1111

Bộ nhớ chính (212 byte)


Hang Phuong - TLU
7

b. Địa chỉ trực tiếp

 Địa chỉ hiệu dụng (EA) = trường địa chỉ (A)


 Trường địa chỉ chứa địa chỉ hiệu dụng của toán hạng
 Ví dụ: ADD R1, A; R1  R1 + (A)
– Cộng nội dung thanh ghi R1 với nội dung của ngăn nhớ có
địa chỉ là A
– Tìm toán hạng trong bộ nhớ ở địa chỉ A
 Phổ biến trong các thế hệ máy tính trước đây
 CPU chỉ tham chiếu bộ nhớ 1 lần để lấy dữ liệu
 Không cần tính toán để tìm EA
 Hạn chế: chỉ cung cấp một không gian địa chỉ nhỏ
 UD: lưu dữ liệu / truy xuất dữ liệu trong bộ nhớ
+ Ví dụ 8

0000 0000 0000


Op 0000 0000 0011
Từ lệnh 0000 0000 0001

0000 0000 0010

0000 0000 0011

..

..

..

1111 1111 1110

1111 1111 1111

Bộ nhớ chính (212 byte)


Hang Phuong - TLU
9
Địa chỉ trực tiếp

A 0000 0000 0000


Op 0000 0000 0010
Từ lệnh B 0000 0000 0001

C 0000 0000 0010

D 0000 0000 0011

E 0000 0000 0100

… ..

..

..

Y 1111 1111 1110

Z 1111 1111 1111

Bộ nhớ chính (212 byte)


Hang Phuong - TLU
+ c. Địa chỉ gián tiếp 10

 Trường địa chỉ tham chiếu đến địa chỉ của một từ
trong bộ nhớ chứa địa chỉ đầy đủ của toán hạng
 EA = (A)
 Đến địa chỉ A trong bộ nhớ, lấy địa chỉ (A), tới
(A) để lấy toán hạng
 Ứng dụng:
 Cập nhật/ thiết lập phần tử
 Truy xuất phần tử
 Lưu/ Di chuyển phần tử

Hang Phuong - TLU


Ví dụ 11

0000 0000 0000 0000


Op 0000 0000 0011
Từ lệnh 0000 0000 0000 0001

0000 0000 0000 0010

1111 1111 1111 1110 0000 0000 0000 0011


..

..

..

1111 1111 1111 1110

1111 1111 1111 1111

Bộ nhớ chính (216 byte)


Hang Phuong - TLU
12
Địa chỉ gián tiếp
1111 1111 0101 1111 0000 0000 0000 0000
Op 0000 0000 0011
Từ lệnh 1111 1111 1111 1111 0000 0000 0000 0001

1111 0000 1111 1110 0000 0000 0000 0010

1111 1111 1111 1110 0000 0000 0000 0011

..

..

..

0000 1111 1111 0000 1111 1111 1111 1110

1111 1011 1111 1110 1111 1111 1111 1111

Bộ nhớ chính (216 byte)


Hang Phuong - TLU
+ 13

c. Địa chỉ gián tiếp (2)

 Ưu điểm:
 Không gian địa chỉ lớn
Với một từ có kích thước N cho phép một không gian địa chỉ
là 2N
 Nhược điểm:
 1 thực thi lệnh đòi hỏi hai lần tham chiếu bộ nhớ để truy
xuất toán hạng
 Một để lấy ra địa chỉ, hai là để lấy ra giá trị của nó

Hang Phuong - TLU


14

d. Địa chỉ thanh ghi

 Trường địa chỉ tham chiếu đến thanh ghi


có chứa toán hạng
 EA = R
 Ví dụ: ADD R1, R2; R1  R1 + R2
 Ưu điểm:
 Số lượng thanh ghi ít  Trường địa chỉ chỉ cần ít bit
 lệnh ngắn hơn, truy xuất lệnh nhanh hơn
 Không cần tham chiếu bộ nhớ
 Nhược điểm:
 Không gian địa chỉ giới hạn
Hang Phuong - TLU
15

e. Địa chỉ gián tiếp thanh ghi

 EA = (R)
 Toán hạng nằm trong ô nhớ có
địa chỉ nằm trong thanh ghi R
 Trường địa chỉ cho biết tên thanh ghi
 Thanh ghi này được gọi là thanh ghi con trỏ
 Ưu:

 Không gian địa chỉ lớn hơn (trường địa chỉ tham chiếu đến
vị trí chứa địa chỉ có độ dài bằng một từ )
 Tham chiếu bộ nhớ ít hơn 1 lần so với địa chỉ gián tiếp
Hang Phuong - TLU
16

f. Địa chỉ dịch

 Kết hợp chế độ địa chỉ trực tiếp và địa chỉ gián tiếp thanh ghi
 Lệnh phải có hai trường địa chỉ:
 Tên thanh ghi R
 Hằng số A
 Địa chỉ của toán hạng EA = (R) + A
 Thanh ghi có thể được ngầm định (VD: PC)
 Lợi dụng tính cục bộ của tham chiếu bộ nhớ

Hang Phuong - TLU


Ví dụ 17

0000 0000
Op R3 2
0000 0001
Từ lệnh
0000 0010
Thanh ghi
0000 0011
R1

R2
..
R3 0000 0001
..

..

1111 1110

1111 1111

Bộ nhớ chính
Hang Phuong - TLU
18

A 0000 0000
Op R2 3
B 0000 0001
Từ lệnh
C 0000 0010
Thanh ghi
D 0000 0011
R1 0000 0000
E 0000 0100
R2 0000 0010
..
R3 0000 0001
..
R4 1111 1110
..

Y 1111 1110

Z 1111 1111

Bộ nhớ chính
Hang Phuong - TLU
+ 19

g. Địa chỉ ngăn xếp

 Ngăn xếp là vùng nhớ có cấu trúc LIFO


 Ngăn xếp thường dùng để phục vụ cho chương trình con
 Đáy ngăn xếp là một ngăn nhớ xác định
 Đỉnh ngăn xếp là thông tin nằm ở vị trí trên cùng trong ngăn xếp
 Đỉnh ngăn xếp có thể bị thay đổi
 Con trỏ gắn với ngăn xếp có giá trị là địa chỉ của đỉnh ngăn xếp
 Con trỏ ngăn xếp được duy trì trong một thanh ghi
 Vì vậy, tham chiếu đến các vị trí ngăn xếp trong bộ nhớ trong thực
tế là địa chỉ gián tiếp thanh ghi
 Là một dạng của địa chỉ ngầm định

Hang Phuong - TLU



20

Xét chip xử lý 8051 33H 33H


1AH

Câu lệnh MOV X, Y
30H 33H

1. MOV R3, #0F4H 26H 1AH


33H
1AH
1BH
25H 1BH
2. MOV R1, 24H 24H 12H
3. MOV 26H, 33H 23H 56H
...
4. MOV 26H, #33H
...
5. MOV 26H, R7
07H 1AH R7
6. MOV R1, 30H
… ..
7. MOV 26H, @R0 03H F4H R3
8. MOV @R1, 30H 02H R2
01H 33H
12H R1
Hang Phuong - TLU 00H 25H R0
21

3. Định dạng lệnh

 Định nghĩa cách bố trí của các bit trong 1 lệnh (trong các
trường thành phần của nó)
 Bao gồm:
 1 opcode
 Không hoặc nhiều toán hạng, ngầm định hoặc rõ ràng
 Phải ngầm định hoặc rõ ràng chỉ ra chế độ địa chỉ cho
từng toán hạng
 Với mỗi tập lệnh, có thể sử dụng nhiều định dạng

Hang Phuong - TLU


+ 22

Độ dài lệnh

 Vấn đề thiết kế cơ bản nhất


 Ảnh hưởng, và bị ảnh hưởng bởi:
 Kích thước bộ nhớ
 Tổ chức bộ nhớ More opcodes!
 Cấu trúc bus More operands!
More addressing modes!
 Độ phức tạp của bộ xử lý Greater address range!

 Tốc độ bộ xử lý
 Trade off giữa hiệu quả của lệnh
và tiết kiệm không gian

Hang Phuong - TLU


+ 23

Độ dài lệnh

 Cần xem xét:


 Độ dài lệnh có bằng độ dài dữ liệu bộ nhớ truyền đi.
Hoặc một trong hai cái nên là bội của cái còn lại
 Tốc độ truyền bộ nhớ chậm hơn tốc độ VXL
 Độ dài lệnh nên là bội của độ dài ký tự (thường là 8 bit)
và bội của độ dài số dấu chấm tĩnh

Hang Phuong - TLU


+ 24

Phân bổ bit

Các yếu tố ảnh hưởng đến việc sử dụng bit địa chỉ trong 1 lệnh

 Số lượng chế độ địa chỉ

 Số lượng toán hạng

 Thanh ghi hay bộ nhớ

 Số lượng tập thanh ghi

 Dải địa chỉ

 Độ chi tiết địa chỉ

Hang Phuong - TLU


Định dạng lệnh PDP-8 25

- 35 lệnh
- Từ lệnh 12 bit
- 3 bit opcode
 8 hành động:
• 6 hành động cơ bản
• 110 = lệnh I/O
• 111 = tham chiếu
thanh ghi
- Lệnh tham chiếu bộ
nhớ:
• 7 bit địa chỉ
• 2 bit điều khiển
- Lệnh I/O:
• 6 bit địa chỉ thiết bị
• 3 bit mệnh lệnh I/O
- Lệnh tham chiếu thanh
ghi:
• Mỗi bit = 1 hành động
Hang Phuong - TLU
+ 26

Định dạng lệnh PDP-10

• Từ lệnh 36 bit, độ dài cố định


• 365 hành động
• 9 bit opcode
• Lệnh 2 địa chỉ:
• 4 bit địa chỉ thanh ghi
• 18 bit địa chỉ tức thời/ địa chỉ bộ nhớ
• Thiết kế “xa xỉ”!
Hang Phuong - TLU
27
Lệnh có độ dài thay đổi

 Lệnh có độ dài cố định: số lượng opcode vs khả năng địa chỉ


 Lệnh có độ dài thay đổi: Các lệnh có khuôn dạng, độ dài
khác nhau
 Độ dài opcode tối thiểu
 1 vài opcode dùng nhiều bit hơn để chỉ định nhiều hành động
hơn (VD: lệnh cần ít toán hạng và/hoặc địa chỉ đơn giản)
 Hiệu quả và linh hoạt hơn
 Tăng sự phức tạp của VXL
 Đòi hỏi lập trình viên hiểu biết nhiều hơn về nguyên lý thiết
kế VXL
Hang Phuong - TLU
28

Khuôn dạng
lệnh PDP-11

 Tập lệnh có độ dài thay đổi

Hang Phuong - TLU


 13 khuôn dạng khác nhau
Định dạng lệnh x86 29

• Linh hoạt, nhiều khuôn dạng lệnh


• 0-4 byte tiền tố lệnh
• 1-3 byte Opcode
• Có hoặc không có trường chế độ địa
chỉ, trường dịch, trường tức thời
• Rất phức tạp - CISC

Hang Phuong - TLU


+ 30

HỢP NGỮ

Hang Phuong - TLU


Hợp ngữ 31

High-level Assembly CPU Main memory


Compiler AC
language language 0
Load b; b  AC data
1 b
a=b-c 1000
2
Sub c; AC – c  AC
1101 3 c

Store a; AC  a : :
1111 9 a
: :
Assembler
: :
200 1000 0001
1000. 0001 201 1101 0011 instruc
Machine
1101. 0011 tion
code 202 1111 1001
Program
1111. 1001 memory : :
Hang Phuong - TLU
Hợp ngữ 32

• Lệnh máy là dãy nhị phân lưu trữ trong bộ nhớ


• Lập trình trực tiếp bằng ngôn ngữ máy = nhập dữ liệu nhị phân cho
chương trình  khó khăn, dễ lỗi

• Xét chương trình đơn giản: N= I+J+K


• Khởi tạo 4 biến I=2, J=3, K=4  chiếm các vị trí 201…204 (H)
• Chương trình gồm 4 lệnh bắt đầu từ vị trí 101 (H) :
 Tải nội dung của vị trí 201 vào AC.
 Cộng nội dung của vị trí 202 vào AC.
 Cộng nội dung của vị trí 203 vào AC.
 Lưu nội dung AC ở vị trí 204.

• Hợp ngữ assembly: bước tiến lớn trong công nghệ máy tính
• Trình biên dịch hợp ngữ assembler:
• Dịch chương trình viết bằng hợp ngữ ra ngôn ngữ máy
• Gán địa chỉ bộ nhớ
Hang Phuong - TLU
Hợp ngữ 33

Hang Phuong - TLU


+ Tổng kết Tập lệnh:
34

Chế độ định địa chỉ


và định dạng
Chương 13
 Chế độ định địa chỉ x86
 Các chế độ định địa chỉ
 Các chế độ định địa chỉ ARM
 Định địa chỉ tức thì
 Định địa chỉ trực tiếp  Định dạng lênh
 Định địa chỉ gián tiếp  Kích thước lệnh
 Định địa chỉ thanh ghi  Phân bố các bit
 Định địa chỉ gián tiếp thanh  Các lệnh có kích thước
ghi thay đổi
 Định địa chỉ dịch chuyển
 Định dạng lênh X86
 Định địa chỉ ngăn xếp
 Định dạng lệnh ARM

Hang Phuong - TLU


+ Câu hỏi chương 13 35

1 Trình bày cách định địa chỉ tức thời.


2 Trình bày cách định địa chỉ trực tiếp.
3 Trình bày cách định địa chỉ gián tiếp.
4 Trình bày cách định địa chỉ thanh ghi.
5 Trình bày cách định địa chỉ gián tiếp thanh ghi.
6 Trình bày cách định địa chỉ dịch.
7 Các yếu tố ảnh hưởng đến việc sử dụng các bit địa chỉ trong 1 lệnh?
8 Ưu điểm và nhược điểm của việc sử dụng định dạng lệnh có độ dài
thay đổi?
9 Hợp ngữ là gì?

Hang Phuong - TLU

You might also like