Các cờ điều khiển:
Cờ Interrupt (IF - cờ cho phép ngắt):
Nếu IF = 1 → CPU ở trạng thái cho phép ngắt với tín
hiệu yêu cầu ngắt từ bên ngoài.
Nếu IF = 0 → CPU ở trạng thái cấm ngắt với tín hiệu
yêu cầu ngắt từ bên ngoà
Giới thiệu chung
Mỗi bộ xử lý có một tập lệnh xác định
Tập lệnh thường từ hàng chục đến hàng trăm lệnh
Mỗi lệnh là một chuỗi số nhị phân mà BXL hiểu được
để thực hiện một thao tác xác định
Các lệnh được mô tả bằng ký hiệu gợi nhớ ? đó là
các lệnh hợp ngữ
Phan Trung Kiên 22
Giản đồ trạng thái của chu kỳ lệnh
Không kiểm tra ngắt
Tính toán
địa chỉ lệnh
Giải mã
thao tác
lệnh
Tính toán
địa chỉ toán
hạng
Xử lý dữ liệu
Tính toán
địa chỉ toán
hạng
Nhận lệnh Nhận toán
hạng
Cất toán
hạng
Nhiều
toán
hạng
Nhiều
kết
quả
DL dạng
xâu hoặc
vectơ
Kết thúc lênh,
nhận lệnh
tiếp theo
Phan Trung Kiên 23
Giản đồ trạng thái của chu kỳ lệnh
Có kiểm tra ngắt
Tính toán
địa chỉ
lệnh
Giải mã
thao tác
lệnh
Tính toán
địa chỉ
toán hạng
Xử lý dữ
liệu
Tính toán
địa chỉ
toán hạng
Nhận lệnh Nhận toán
hạng
Cất toán
hạng
Nhiều
toán
hạn
14 trang |
Chia sẻ: trungkhoi17 | Lượt xem: 657 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Bài giảng môn Kiến trúc máy tính - Chương 3: Tập lệnh, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
11
Chương 3. Tập Lệnh
Phan Trung Kiên
Đại học Tây Bắc
Phan Trung Kiên 2
Chương 3. Kiến Trúc Tập Lệnh
Tập thanh ghi
Tập lệnh
Ví dụ nghiên cứu
Phan Trung Kiên 3
3.1. Tập thanh ghi
Chức năng và đặc điểm:
Chứa các thông tin tạm thời phục vụ cho hoạt động
ở thời điểm hiện tại của CPU
Được coi là mức đầu tiên của hệ thống nhớ
Số lượng thanh ghi nhiều Î tăng hiệu năng của
CPU
Có hai loại thanh ghi:
Các thanh ghi lập trình được
Các thanh ghi không lập trình được
Phan Trung Kiên 4
Phân loại thanh ghi theo chức năng
Thanh ghi địa chỉ: quản lý địa chỉ của ngăn nhớ
hay cổng vào-ra.
Thanh ghi dữ liệu: chứa tạm thời các dữ liệu.
Thanh ghi đa năng: có thể chứa địa chỉ hoặc dữ
liệu.
Thanh ghi điều khiển/trạng thái: chứa các thông
tin điều khiển và trạng thái của CPU.
Thanh ghi lệnh: chứa lệnh đang được thực hiện.
2Phan Trung Kiên 5
Một số thanh ghi điển hình
Các thanh ghi địa chỉ
Các thanh ghi dữ liệu
Thanh ghi trạng thái
Phan Trung Kiên 6
Các thanh ghi địa chỉ:
Chức năng: dùng để quản lý địa chỉ của ngăn nhớ hay
cổng vào – ra
Chương trình đang thực hiện phải nằm trong bộ nhớ
chính và nó chiếm 3 vùng nhớ cỏ bản sau:
Vùng nhớ lệnh (Code): chứa các lệnh của chương trình.
Vùng dữ liệu (Data): chứa dữ liệu của chương trình. Thực chất
đây là nơi cấp phát các ngăn nhớ cho các biến nhớ.
Vùng ngăn xếp (Stack): là vùng nhớ có cấu trúc LIFO (Last in
first Out) dùng để cất dữ thông tin và sau đó có thể khôi phục
lại. Thường dùng cho việc thực hiện các chương trình con.
Phan Trung Kiên 7
Bộ đếm chương trình (Program
Counter – PC):
Còn gọi là con trỏ lệnh (Instruction Pointer – IP)
Là thanh ghi chứa địa chỉ cảu một lệnh tiếp theo
sẽ được nhận vào.
Sau khi một lệnh được nhận vào thì nội dung
của PC tự động tăng để trỏ sang lệnh kế tiếp
nằm ngay sau lệnh vừa nhận.
Phan Trung Kiên 8
Minh họa bộ đếm chương trình
3Phan Trung Kiên 9
Thanh ghi con trỏ dữ liệu (Data
Pointer – DP):
Chứa địa chỉ của ngăn nhớ dữ liệu mà CPU
muốn truy nhập.
Thường có một số thanh ghi con trỏ dữ liệu
Phan Trung Kiên 10
Minh hoạ thanh ghi con trỏ dữ liệu
Phan Trung Kiên 11
Ngăn xếp (Stack)
Ngăn xếp là vùng nhớ có cấu trúc LIFO (Last In
- First Out)
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
Phan Trung Kiên 12
Thanh ghi con trỏ ngăn xếp (Stack
Pointer – SP):
Chứa địa chỉ của ngăn nhớ đỉnh ngăn xếp
Khi cất một thông tin vào ngăn xếp:
Nội dung của SP tự động giảm
Thông tin được cất vào ngăn nhớ được trỏ bởi SP
Khi lấy một thông tin ra khỏi ngăn xếp:
Thông tin được đọc từ ngăn nhớ được trỏ bởi SP
Nội dung của SP tự động tăng
Khi ngăn xếp rỗng, SP trỏ vào đáy
4Phan Trung Kiên 13
Minh họa con trỏ ngăn xếp SP
Phan Trung Kiên 14
Thanh ghi cơ sở (Base Register) và
thanh ghi chỉ số (Index Register):
Thanh ghi cơ sở chứa địa chỉ của ngăn nhớ cơ
sở
Thanh ghi chỉ số: chứa độ lệch địa chỉ giữa
ngăn nhớ mà CPU cần truy nhập so với ngăn
nhớ cơ sở.
Địa chỉ của ngăn nhớ cần truy nhập = địa chỉ cơ
sở + chỉ số
Phan Trung Kiên 15
Minh họa thanh ghi cơ sở và thanh ghi
chỉ số
Phan Trung Kiên 16
Các thanh ghi dữ liệu:
Chức năng: chứa các dữ liệu tạm thời hoặc các
kết qủa trung gian phục vụ cho việc xử lý các dữ
liệu của CPU.
Các loại thanh ghi dữ liệu:
Các thanh ghi số nguyên:8, 16, 32, 64 bit
Các thanh ghi số dấu chấm động (Có trên các bộ xử
lý có khối FPU – Floadting Point Unit)
5Phan Trung Kiên 17
Thanh ghi trạng thái:
Còn gọi là thanh ghi cờ (Flag Register)
Chức năng: chứa các thông tin trạng thái của
CPU.
Các cờ phép toán: biểu thị trạng thái của kết qủa
phép toán.
Các cờ điều khiển: biểu thị trạng thái điều khiển của
CPU.
Phan Trung Kiên 18
Các cờ phép toán:
Cờ Zero (ZF - cờ rỗng): đựoc thiết lập lên một kết quả
của phép toán vừa thực hiện bằng 0.
Cờ Sign (SF - cờ đấu): được thiết lập lên một kết quả
của phép toán vừa thực hiện nhỏ hơn 0, hay nói cách
khác, cờ Sign nhận giá trị bằng bit dấu của kết quả.
Cờ Carry (CF - cờ nhớ): cờ được thiết lập nếu phép
toán có nhớ ra ngoài bit cao nhất → cờ báo tràn với số
không dấu.
Cờ Overflow (OF - cờ tràn): cờ được thiết lập nếu cộng
hai số cùng dấu mà kết quả có dấu ngược lại → cờ báo
tràn với số có dấu.
Phan Trung Kiên 19
Các cờ điều khiển:
Cờ Interrupt (IF - cờ cho phép ngắt):
Nếu IF = 1 → CPU ở trạng thái cho phép ngắt với tín
hiệu yêu cầu ngắt từ bên ngoài.
Nếu IF = 0 → CPU ở trạng thái cấm ngắt với tín hiệu
yêu cầu ngắt từ bên ngoài.
Phan Trung Kiên 20
Tập thanh ghi của một số bộ xử lý
6Phan Trung Kiên 21
3.2. Tập lệnh
Giới thiệu chung
Mỗi bộ xử lý có một tập lệnh xác định
Tập lệnh thường từ hàng chục đến hàng trăm lệnh
Mỗi lệnh là một chuỗi số nhị phân mà BXL hiểu được
để thực hiện một thao tác xác định
Các lệnh được mô tả bằng ký hiệu gợi nhớ ? đó là
các lệnh hợp ngữ
Phan Trung Kiên 22
Giản đồ trạng thái của chu kỳ lệnh
Không kiểm tra ngắt
Tính toán
địa chỉ lệnh
Giải mã
thao tác
lệnh
Tính toán
địa chỉ toán
hạng
Xử lý dữ liệu
Tính toán
địa chỉ toán
hạng
Nhận lệnh Nhận toánhạng
Cất toán
hạng
Nhiều
toán
hạng
Nhiều
kết
quả
DL dạng
xâu hoặc
vectơ
Kết thúc lênh,
nhận lệnh
tiếp theo
Phan Trung Kiên 23
Giản đồ trạng thái của chu kỳ lệnh
Có kiểm tra ngắt
Tính toán
địa chỉ
lệnh
Giải mã
thao tác
lệnh
Tính toán
địa chỉ
toán hạng
Xử lý dữ
liệu
Tính toán
địa chỉ
toán hạng
Nhận lệnh Nhận toánhạng
Cất toán
hạng
Nhiều
toán
hạng
Nhiều
kết
quả
DL dạng
xâu hoặc
vectơ
Kết thúc lênh,
nhận lệnh
tiếp theo
Kiểm tra
ngắt Ngắt
Không
có ngắt
Phan Trung Kiên 24
Cấu trúc lệnh mã máy
Mã lệnh (opcode): cho biết thao tác cần thực hiện
Các toán hạng (Operands): cho biết:
Nơi chứa dữ liệu cần tác động vào: t/h nguồn, t/h đích
Cho biết địa chỉ của lệnh tiếp theo
Mã lệnh Các toán hạng
7Phan Trung Kiên 25
Các kiểu lệnh
Xử lý dữ liệu
Lưu trữ dữ liệu
Di chuyển dữ liệu
Điều khiển thứ tự thực hiện lệnh
Phan Trung Kiên 26
Các kiểu toán hạng
Số lượng toán hạng
Kiểu số
Số nguyên
Số dấu phẩy động
Kiểu ký tự
Mã của ký tự ASCII, BCD mở rộng, ...
Kiểu logic
Toán hạng xử lý với cờ
Phan Trung Kiên 27
Số lượng toán hạng
3 toán hạng:
Toán hạng 1, toán hạng 2, kết quả
a = b + c
Có thể dẫn tới lệnh tiếp theo (thường là ngầm hiểu)
Loại này không phổ dụng
Cần rất nhiều từ lệnh dài để chứa loại này
Ví dụ: SUB r1, r2, r3 (Motorola)
Phan Trung Kiên 28
Số lượng toán hạng
2 toán hạng:
Có một toán hạng vừa là nguồn, vừa là đích
a = a + b
Giảm độ dài của lệnh
Có thể thêm thao tác:
Dùng vùng nhớ tạm để chứa giá trị trước khi thực hiện
Ví dụ: ADD AX, BX
8Phan Trung Kiên 29
Số lượng toán hạng
1 toán hạng:
Toán hạng thường là một thanh ghi
Toán hạng thứ hai được ngầm hiểu
Phổ dụng trong các máy xa xưa
Ví dụ: PUSH AX
Phan Trung Kiên 30
Số lượng toán hạng
0 toán hạng
Điều khiển hệ thống
ít dùng
Ví dụ: NOP (No OPeration)
Phan Trung Kiên 31
So sánh số lượng toán hạng
Nhiều toán hạng:
Các lệnh phức tạp hơn
Cần nhiều thanh ghi hơn
Chỉ cần ít lệnh trong một chương trình
ít toán hạng:
Các lệnh ít phức tạp hơn
Cần dùng nhiều lệnh trong một chương trình
Nhận/xử lý các lệnh nhanh hơn
Phan Trung Kiên 32
Các kiểu thao tác
Các lệnh chuyển dữ liệu
Các lệnh số học
Các lệnh logic
Các lệnh vào/ra
Các lệnh điều khiển hệ thống
Các lệnh chuyển điều khiển
9Phan Trung Kiên 33
Các lệnh chuyển dữ liệu
Đặc điểm:
Sao chép dữ liệu từ nguồn sang đích
Không ảnh hưởng đến các cờ
Các lệnh:
MOVE: copy dữ liệu từ nguồn đến đích
LOAD: copy dữ liệu từ bộ nhớ đến BXL
STORE: copy dữ liệu từ BXL đến bộ nhớ
EXCHANGE: trao đổi nội dung của nguồn và đích
PUSH: copy dữ liệu từ nguồn đến stack
POP: copy dữ liệu từ stack đến đích
Phan Trung Kiên 34
Các lệnh số học
Đặc điểm:
Thực hiện các phép toán số học
Có ảnh hưởng đến thanh ghi cờ
Các lệnh:
ADD: tính tổng hai toán hạng
SUBTRACT: tính hiệu hai toán hạng
MULTIPLY: tính tích hai toán hạng
DIVIDE: tích thương hai toán hạng
ABSOLUTE: lấy giá trị tuyệt đối của toán hạng
NEGATE: đổi dấu toán hạng (lấy bù 2)
INCREMENT: tăng toán hạng lên 1
DECREMENT: giảm toán hạng đi 1
Phan Trung Kiên 35
Các lệnh logic
Đặc điểm:
Thực hiện các phép toán logic
Có ảnh hưởng đến thanh ghi cờ
Các lệnh:
AND: thực hiện AND bit hai toán hạng
OR: thực hiện OR bit hai toán hạng
XOR: thực hiện XOR bit hai toán hạng
NOT: đảo bit của toán hạng (lấy bù 1)
TEST: thực hiện AND hai toán hạng để lập cờ
SHIFT: thực hiện dịch bit toán hạng
ROTATE: thực hiện quay bit toán hạng
COMPARE: so sánh hai toán hạng
Phan Trung Kiên 36
Các lệnh vào ra
Đặc điểm:
Trao đổi dữ liệu với thiết bị ngoại vi
Các lệnh:
INPUT: copy dữ liệu từ một cổng xác định đến đích
OUTPUT: copy dữ liệu từ nguồn đến cổng xác định
START I/O: chuyển các lệnh đến BXL vào/ra để khởi tạo thao
tác vào/ra
TEST I/O: chuyển thông tin trạng thái từ hệ thống vào/ra đến
đích xác định
10
Phan Trung Kiên 37
Các lệnh điều khiển hệ thống
HALT: dừng thực hiện chương trình
WAIT: dừng thực hiện chương trình; liên tục
kiểm tra điều kiện được chỉ định; chương trình
được thực hiện khi điều kiện được thỏa mãn
NO OPERATION: không có thao tác nào được
thực hiện, nhưng chương trình vẫn tiếp tục chạy
Phan Trung Kiên 38
Các lệnh chuyển điều khiển
Đặc điểm:
Điều khiển rẽ nhánh trong chương trình
PC được nạp giá trị địa chỉ mới
Các lệnh:
JUMP: nhảy không điều kiện đến lệnh mới
JUMP CONDITIONAL: nhảy có điều kiện
CALL: lệnh gọi CTC
RETURN: trở về từ CTC
INTERRUPT: lệnh gọi CTC ngắt
INTERRUPT RETURN: trở về từ CTC ngắt
Phan Trung Kiên 39
Minh họa lệnh gọi CTC
Phan Trung Kiên 40
Thể hiện ở Stack
Sau lÖnh
CALL Proc1
Khëi t¹o
néi dung
stack
Sau lÖnh
CALL Proc2
Sau lÖnh
RETURN
Sau lÖnh
CALL Proc2
Sau lÖnh
RETURN
Sau lÖnh
RETURN
11
Phan Trung Kiên 41
Các mode địa chỉ
Toán hạng có thể là:
Một giá trị cụ thể
Nội dung của thanh ghi
Nội dung của ngăn nhớ
Nội dung của cổng vào ra
Mode địa chỉ là cách thức địa chỉ hóa trong lệnh
để xác định toán hạng
Phan Trung Kiên 42
Các mode địa chỉ
Mode địa chỉ tức thì
Mode địa chỉ trực tiếp
Mode địa chỉ gián tiếp
Mode địa chỉ thanh ghi
Mode địa chỉ gián tiếp qua thanh ghi
Mode địa chỉ dịch chuyển
Mode địa chỉ stack
Phan Trung Kiên 43
Mode địa chỉ tức thì
Toán hạng là một phần của lệnh
Toán hạng nằm ngay trong trường địa chỉ
Chỉ có thể là toán hạng nguồn
Truy nhập toán hạng rất nhanh
Dải giá trị của toán hạng bị hạn chế
Ví dụ: ADD AX, 10
Phan Trung Kiên 44
Sơ đồ mode địa chỉ tức thì
Toán hạngMã lệnh
Lệnh
12
Phan Trung Kiên 45
Mode địa chỉ trực tiếp
Toán hạng là ngăn nhớ có địa chỉ được chỉ ra
trong lệnh
BXL tham chiếu bộ nhớ một lần để truy nhập dữ
liệu
Không gian địa chỉ là hữu hạn
Ví dụ: ADD AL, [100]
Phan Trung Kiên 46
Sơ đồ mode địa chỉ trực tiếp
Địa chỉMã lệnh
Lệnh
Bộ nhớ
Toán hạng
Phan Trung Kiên 47
Mode địa chỉ gián tiếp
Toán hạng là nội dung của ngăn nhớ có địa chỉ
nằm trong một ngăn nhớ khác, ngăn nhớ khác
đó được thể hiện trong lệnh
Vùng nhớ có thể được tham chiếu là lớn
Có thể gián tiếp nhiều lần
BXL phải thực hiện tham chiếu bộ nhớ nhiều lần
để tìm toán hạng ? chậm
Ví dụ: ADD AH, [a]
Phan Trung Kiên 48
Sơ đồ mode địa chỉ gián tiếp
Địa chỉMã lệnh
Lệnh
Bộ nhớ
Toán hạng
Địa chỉ của t/hạng
13
Phan Trung Kiên 49
Mode địa chỉ thanh ghi
Toán hạng là nội dung của một thanh ghi
Số lượng thanh ghi có hạn
Trường địa chỉ nhỏ (chỉ cần ít bit)
Độ dài lệnh ngắn hơn
Nhận lệnh nhanh hơn
Không tham chiếu bộ nhớ
Truy nhập toán hạng nhanh
Tăng số lượng thanh ghi ? tăng tốc độ
Ví dụ: ADD AL, AH
Phan Trung Kiên 50
Sơ đồ mode địa chỉ thanh ghi
Tên thanh ghiMã lệnh
Lệnh
Tập thanh ghi
Toán hạng
Phan Trung Kiên 51
Mode địa chỉ gián tiếp qua thanh ghi
Toán hạng là ngăn nhớ có địa chỉ nằm trong
một thanh ghi
Thanh ghi này được gọi là thanh ghi con trỏ
Vùng nhớ có thể được tham chiếu là lớn: 2n,
trong đó n là độ dài (bit) của thanh ghi
Ví dụ: SUB AL, [BX]
Phan Trung Kiên 52
Sơ đồ mode gián tiếp qua
thanh ghi
Tên thanh ghiMã lệnh
Lệnh
Bộ nhớ
Toán hạngĐịa chỉ của t/hạng
Tập thanh ghi
14
Phan Trung Kiên 53
Mode địa chỉ dịch chuyển
Kết hợp hai mode:
Mode gián tiếp qua thanh ghi
Mode trực tiếp
Trường địa chứa hai thành phần:
Tên một thanh ghi
Một hằng số
Địa chỉ toán hạng = ND thanh ghi = hằng số
Ví dụ: ADD AL, [SI + 50]
Phan Trung Kiên 54
Sơ đồ mode địa chỉ dịch
chuyển
Register
R
Mã lệnh
Lệnh
Bộ nhớ
Toán hạng
Địa chỉ của t/hạng
Tập thanh ghi
Address A
+
Phan Trung Kiên 55
Mode địa chỉ stack
Toán hạng được ngầm hiểu là ngăn nhớ đỉnh
ngăn xếp
Ví dụ: PUSH AX
Mã lệnh
Lệnh
Ngăn nhớ đỉnh
stack
Ngầm hiểu
Các file đính kèm theo tài liệu này:
- bai_giang_mon_may_tinh_chuong_3_tap_lenh.pdf