Kiến trúc bộ lệnh của CPU - Tìm hiểu bộ lệnh của CPU 16bit họ Intel - Các dạng dữ liệu
Chia sẻ bởi Nguyễn Việt Vương |
Ngày 29/04/2019 |
103
Chia sẻ tài liệu: Kiến trúc bộ lệnh của CPU - Tìm hiểu bộ lệnh của CPU 16bit họ Intel - Các dạng dữ liệu thuộc Bài giảng khác
Nội dung tài liệu:
Kiến trúc bộ lệnh của CPU
Các dạng dữ liệu
Tìm hiểu bộ lệnh của CPU 16bit họ Intel
Dạng byte – 8 bit
Có thể biểu diễn dạng:
Số nguyên không dấu 8bit
Có giá trị từ 0 28-1=255
Số nguyên có dấu
bit dấu
Có giá trị từ: -27 27-1 (-128 127)
Dạng byte
1 ký tự theo bảng mã ASCII
‘a’ 97 = 61Hex = 01100001
‘A’ 65 = 41Hex = 01000001
Dạng byte
Ví dụ cho dạng byte 10111000
Số nguyên không dấu tương ứng
10111000 = 128 + 32 + 16 + 8 = 184
Số nguyên có dấu (xét bit dấu = bit 7 = 1)
Lấy bù: 01000111
+ 1
01001000 = 64 + 8 = 72
Số nguyên có dấu là: -72
Nhận xét: 256 – 184 = 72
Dạng word – 16 bit
Có thể biễu diễn dạng:
Số nguyên không dấu 16bit:
Có giá trị: 0 216-1=65535
Số nguyên có dấu 16bit
Có giá trị: -215215-1 (3276832767)
word = (byte cao)x28 + (byte thấp)
byte cao = word / 28
byte thấp = word % 28
bit dấu = bit cao nhất = bit 15
Dạng word
Ví dụ: xét word 1010110111011000
Số nguyên không dấu tương ứng
1010110111011000 = 10x163+13x162+13x16+8=44504
A D D 8 Hex
163 162 161 160
Số nguyên có dấu: Xét bit dấu = bit 15 = 1
Lấy bù: 0101001000100111
+ 1
0101001000101000 = 5x163+2x162+2x16+8 = -21032
Nhận xét: 216-44504=21032
word/16 = 0000101011011101 dịch phải 4 bit
word%16 = 1000 = 8
Kiến trúc bộ lệnh của CPU
Tổ chức bộ nhớ
Tổ chức bộ nhớ phẳng
Bộ nhớ gồm 1 dãy các ô nhớ được đánh địa chỉ theo thứ tự tăng dần bắt đầu từ 0.
Mỗi ô nhớ chứa 1 byte thông tin
Bộ nhớ gồm n ô nhớ
0
1
2
3
4
5
6
7
8
n-1
Nếu n lớn Không gian địa chỉ lớn khó quản lý
Tổ chứ bộ nhớ theo Segment
Bộ nhớ chia thành các đoạn, mỗi đoạn gọi là 1 Segment
Địa chỉ bắt đầu của 1 đoạn gọi là địa chỉ Segment
1 segment
đ/c segment
đ/c segment
đ/c segment
đ/c offset
Các ô nhớ trong segment được đánh địa chỉ theo tứ tự tăng dần và bắt đầu từ 0 được gọi là địa chỉ offset
Phân loại địa chỉ
Đ/c vật lý là đ/c của ô nhớ trong tổ chức bộ nhớ phẳng
Đ/c logic là đ/c gồm: đ/c segment + đ/c offset
Nhận xét:
Chương trình (các lệnh CPU) luôn dùng đ/c logic để truy xuất bộ nhớ
Khi truy xuất bộ nhớ CPU sẽ chuyển đổi đ/c logic sang đ/c vật lý để truy xuất bộ nhớ
Ký hiệu đ/c logic: segment:offset
Kiến trúc bộ lệnh của CPU
Thanh ghi - Register
Thanh ghi là gì?
Thanh ghi là bộ nhớ bên trong CPU
Thanh ghi dùng để chứa các thông tin mà CPU sẽ sử dụng, hay xử lý.
CPU có nhiều thanh ghi, mỗi thanh ghi có 1 tên biểu thị (tên thanh ghi)
Số lượng và kích thước thanh ghi phụ thuộc vào loại CPU
Nhóm các thanh ghi đa dạng
Có 4 thanh ghi 16 bit có tên: AX, BX, CX, DX
AX (Accumulator Register) thanh ghi tích lũy
BX (Base Register) thanh ghi cơ sở (lưu đ/c)
CX (Count Register) thanh ghi đếm
DX (Data Register) thanh ghi dữ liệu
Thể hiện các thanh ghi đa dạng
AX = AH|AL; BX = BH|BL; CX = CH|CL; DX = DH|DL
16bit 8bit cao|8 bit thấp
Ví dụ: AX = 10111101|10101011
AH AL
BX = 7EAB Hex
byte cao byte thấp
BH BL
DX = 10008 thập phân
DH = 39 = 10008/28
DL = 24 = 10008%28
Nhóm các thanh ghi con trỏ/chỉ mục
Gồm 4 thanh ghi 16bit có tên SP, BP, SI, DI
SP (Stack Pointer): làm việc theo cơ chế LIFO (last in first out). Stack là vùng nhớ dùng để lưu các dữ liệu tạm thời khi CPU thực hiện chương trình
Địa chỉ trở về
Các trị của tham số hàm
Biến cục bộ
Thao tác cơ bản:
Push: lưu vào
Pop: lấy ra
Thanh ghi SP dùng để xác định đỉnh stack
Nhóm các thanh ghi con trỏ/chỉ mục
BP (Base pointed) thường dùng làm con trỏ để truy xuất các phần tử trong stack
SI (Source Index) chỉ số nguồn thường dùng để xác định đ/c offset bắt đầu của vùng nhớ nguồn (chuỗi nguồn)
DI (Destination Index) chỉ số đích thường dùng để xác định đ/c offset bắt đầu của vùng nhớ đích (chuỗi đích)
Nhóm các thanh ghi con trỏ/chỉ mục
Có 4 loại segment: CS, DS, SS, ES
CS (Code Segment) chứa địa chỉ segment của đoạn mã lệnh
DS (Data Segment) chứa địa chỉ segment của dữ liệu
SS (Stack Segment) chứa địa chỉ segment của stack
ES (Extra Segment) chứa địa chỉ segment dữ liệu thứ 2 nếu có
Nhóm các thanh ghi Segment
Gồm 4 thanh ghi 16bit có tên: CS, DS, SS, ES
Chứa địa chỉ Segment của 1 đoạn
Thanh ghi IP (Intruction pointer)
Thanh ghi con trỏ lệnh
IP xác định đ/c offset của lệnh kế tiếp trong đoạn mã lệnh sẽ được CPU thi hành
Cặp thanh ghi CS:IP = đ/c lệnh kế tiếp trong bộ nhớ mà CPU thi hành
Thanh ghi cờ (flag)
Là thanh ghi 16 bit chứa các thông tin trạng thái hiện thời của CPU (vd: trạng thái tràn của phép toán vừa thực hiện)
Thanh ghi cờ gồm các cờ, mỗi cờ dùng 1 bit
Cờ bật có giá trị 1
Cờ tắt có giá trị 0
Một số cờ: CF, ZF, SF, OF, AF, PF, DF, IF,...
Thanh ghi cờ
CF (carry flag) cờ nhớ: thường dùng với số không dấu CF=1 khi kết quả phép toán vừa thực hiện có nhớ (phép cộng) hay có mượn (phép trừ).
Đối với số không dấu:
Phép cộng: CF=1 cộng bị tràn, CF=0 không bị tràn
Phép trừ: CF=1 số nhỏ - số lớn, CF=0 số lớn - số nhỏ
ZF (Zero flag)=1 khi kết quả phép toán vừa thực hiện là zero.
SF (Signed flag)=1 khi kết quả phép toán vừa thực hiện là 1 số âm.
OF (Overflow flag) cờ tràn chỉ dùng với số có dấu
OF=1 khi kết quả phép toán số có dấu và thực hiện bị tràn
Các dạng dữ liệu
Tìm hiểu bộ lệnh của CPU 16bit họ Intel
Dạng byte – 8 bit
Có thể biểu diễn dạng:
Số nguyên không dấu 8bit
Có giá trị từ 0 28-1=255
Số nguyên có dấu
bit dấu
Có giá trị từ: -27 27-1 (-128 127)
Dạng byte
1 ký tự theo bảng mã ASCII
‘a’ 97 = 61Hex = 01100001
‘A’ 65 = 41Hex = 01000001
Dạng byte
Ví dụ cho dạng byte 10111000
Số nguyên không dấu tương ứng
10111000 = 128 + 32 + 16 + 8 = 184
Số nguyên có dấu (xét bit dấu = bit 7 = 1)
Lấy bù: 01000111
+ 1
01001000 = 64 + 8 = 72
Số nguyên có dấu là: -72
Nhận xét: 256 – 184 = 72
Dạng word – 16 bit
Có thể biễu diễn dạng:
Số nguyên không dấu 16bit:
Có giá trị: 0 216-1=65535
Số nguyên có dấu 16bit
Có giá trị: -215215-1 (3276832767)
word = (byte cao)x28 + (byte thấp)
byte cao = word / 28
byte thấp = word % 28
bit dấu = bit cao nhất = bit 15
Dạng word
Ví dụ: xét word 1010110111011000
Số nguyên không dấu tương ứng
1010110111011000 = 10x163+13x162+13x16+8=44504
A D D 8 Hex
163 162 161 160
Số nguyên có dấu: Xét bit dấu = bit 15 = 1
Lấy bù: 0101001000100111
+ 1
0101001000101000 = 5x163+2x162+2x16+8 = -21032
Nhận xét: 216-44504=21032
word/16 = 0000101011011101 dịch phải 4 bit
word%16 = 1000 = 8
Kiến trúc bộ lệnh của CPU
Tổ chức bộ nhớ
Tổ chức bộ nhớ phẳng
Bộ nhớ gồm 1 dãy các ô nhớ được đánh địa chỉ theo thứ tự tăng dần bắt đầu từ 0.
Mỗi ô nhớ chứa 1 byte thông tin
Bộ nhớ gồm n ô nhớ
0
1
2
3
4
5
6
7
8
n-1
Nếu n lớn Không gian địa chỉ lớn khó quản lý
Tổ chứ bộ nhớ theo Segment
Bộ nhớ chia thành các đoạn, mỗi đoạn gọi là 1 Segment
Địa chỉ bắt đầu của 1 đoạn gọi là địa chỉ Segment
1 segment
đ/c segment
đ/c segment
đ/c segment
đ/c offset
Các ô nhớ trong segment được đánh địa chỉ theo tứ tự tăng dần và bắt đầu từ 0 được gọi là địa chỉ offset
Phân loại địa chỉ
Đ/c vật lý là đ/c của ô nhớ trong tổ chức bộ nhớ phẳng
Đ/c logic là đ/c gồm: đ/c segment + đ/c offset
Nhận xét:
Chương trình (các lệnh CPU) luôn dùng đ/c logic để truy xuất bộ nhớ
Khi truy xuất bộ nhớ CPU sẽ chuyển đổi đ/c logic sang đ/c vật lý để truy xuất bộ nhớ
Ký hiệu đ/c logic: segment:offset
Kiến trúc bộ lệnh của CPU
Thanh ghi - Register
Thanh ghi là gì?
Thanh ghi là bộ nhớ bên trong CPU
Thanh ghi dùng để chứa các thông tin mà CPU sẽ sử dụng, hay xử lý.
CPU có nhiều thanh ghi, mỗi thanh ghi có 1 tên biểu thị (tên thanh ghi)
Số lượng và kích thước thanh ghi phụ thuộc vào loại CPU
Nhóm các thanh ghi đa dạng
Có 4 thanh ghi 16 bit có tên: AX, BX, CX, DX
AX (Accumulator Register) thanh ghi tích lũy
BX (Base Register) thanh ghi cơ sở (lưu đ/c)
CX (Count Register) thanh ghi đếm
DX (Data Register) thanh ghi dữ liệu
Thể hiện các thanh ghi đa dạng
AX = AH|AL; BX = BH|BL; CX = CH|CL; DX = DH|DL
16bit 8bit cao|8 bit thấp
Ví dụ: AX = 10111101|10101011
AH AL
BX = 7EAB Hex
byte cao byte thấp
BH BL
DX = 10008 thập phân
DH = 39 = 10008/28
DL = 24 = 10008%28
Nhóm các thanh ghi con trỏ/chỉ mục
Gồm 4 thanh ghi 16bit có tên SP, BP, SI, DI
SP (Stack Pointer): làm việc theo cơ chế LIFO (last in first out). Stack là vùng nhớ dùng để lưu các dữ liệu tạm thời khi CPU thực hiện chương trình
Địa chỉ trở về
Các trị của tham số hàm
Biến cục bộ
Thao tác cơ bản:
Push: lưu vào
Pop: lấy ra
Thanh ghi SP dùng để xác định đỉnh stack
Nhóm các thanh ghi con trỏ/chỉ mục
BP (Base pointed) thường dùng làm con trỏ để truy xuất các phần tử trong stack
SI (Source Index) chỉ số nguồn thường dùng để xác định đ/c offset bắt đầu của vùng nhớ nguồn (chuỗi nguồn)
DI (Destination Index) chỉ số đích thường dùng để xác định đ/c offset bắt đầu của vùng nhớ đích (chuỗi đích)
Nhóm các thanh ghi con trỏ/chỉ mục
Có 4 loại segment: CS, DS, SS, ES
CS (Code Segment) chứa địa chỉ segment của đoạn mã lệnh
DS (Data Segment) chứa địa chỉ segment của dữ liệu
SS (Stack Segment) chứa địa chỉ segment của stack
ES (Extra Segment) chứa địa chỉ segment dữ liệu thứ 2 nếu có
Nhóm các thanh ghi Segment
Gồm 4 thanh ghi 16bit có tên: CS, DS, SS, ES
Chứa địa chỉ Segment của 1 đoạn
Thanh ghi IP (Intruction pointer)
Thanh ghi con trỏ lệnh
IP xác định đ/c offset của lệnh kế tiếp trong đoạn mã lệnh sẽ được CPU thi hành
Cặp thanh ghi CS:IP = đ/c lệnh kế tiếp trong bộ nhớ mà CPU thi hành
Thanh ghi cờ (flag)
Là thanh ghi 16 bit chứa các thông tin trạng thái hiện thời của CPU (vd: trạng thái tràn của phép toán vừa thực hiện)
Thanh ghi cờ gồm các cờ, mỗi cờ dùng 1 bit
Cờ bật có giá trị 1
Cờ tắt có giá trị 0
Một số cờ: CF, ZF, SF, OF, AF, PF, DF, IF,...
Thanh ghi cờ
CF (carry flag) cờ nhớ: thường dùng với số không dấu CF=1 khi kết quả phép toán vừa thực hiện có nhớ (phép cộng) hay có mượn (phép trừ).
Đối với số không dấu:
Phép cộng: CF=1 cộng bị tràn, CF=0 không bị tràn
Phép trừ: CF=1 số nhỏ - số lớn, CF=0 số lớn - số nhỏ
ZF (Zero flag)=1 khi kết quả phép toán vừa thực hiện là zero.
SF (Signed flag)=1 khi kết quả phép toán vừa thực hiện là 1 số âm.
OF (Overflow flag) cờ tràn chỉ dùng với số có dấu
OF=1 khi kết quả phép toán số có dấu và thực hiện bị tràn
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...
Người chia sẻ: Nguyễn Việt Vương
Dung lượng: |
Lượt tài: 5
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)