Cấu trúc bên trong của 8086, các thanh ghi, chế độ địa chỉ, mã hóa lệnh, quản lý bộ nhớ, so sánh cấu trúc bên trong của PIC với 8086
Trang 1KHOA ĐIỆN TỬ VIỄN THÔNG
BỘ MÔN ĐIỆN TỬ TIN HỌC
- MÔN HỌC: KỸ THUẬT VI XỬ LÝ Học kỳ: 2 Năm học: 2009-2010 BÀI TẬP VỀ NHÀ SỐ 2
Hạn nộp: Buổi học VXL cuối của tuần 30 (nộp quá hạn sẽ nhận điểm 0)
Hạn trả bài: Buổi học cuối cùng của tuần 32
Chú ý: yêu cầu trả lời rõ ràng, ngắn gọn và chính xác
Nội dung đề cập đến: Cấu trúc bên trong của 8086, các thanh ghi, chế độ địa chỉ, mã
hóa lệnh, quản lý bộ nhớ, so sánh cấu trúc bên trong của PIC với 8086
1 (2 điểm) Các thành phần chính bên trong của bộ vi xử lý là gì ?
- Các Thanh ghi (Các thanh ghi chung, các thanh ghi quản lý bộ nhớ, các thanh ghi có chức năng chuyên dụng khác…)
- Khối giao tiếp với BUS ngoại vi,
- Bộ số học và logic,
2 (5 điểm) Bộ vi xử lý 8086 có bao nhiêu thanh ghi ở bên trong ? chúng được phân loại ra sao ? các vi xử lý sau này của Intel có các thanh ghi nào, có gì khác so với của 8086?
- 8086 có 14 thanh ghi
- Phân loại các thanh ghi của 8086:
o các thanh ghi chung (AX, BX, CX, DX),
o các thanh ghi chỉ số và con trỏ dùng để quản lý địa chỉ (IP, SI,DI,SP,BP),
o các thanh ghi đoạn dùng để quản lý địa chỉ đoạn nhớ (SS, DS, CS, ES)
o Thanh ghi cờ dùng để thể hiện trạng thái làm việc của VXL
- Các vi xử lý sau 8086 mở rộng các thanh ghi lên 32 bít (EAX, EBX…) và thêm một số thanh ghi khác như GS, FS và các thanh ghi ẩn khác (người dùng không truy nhập vào được)
3 (2 điểm) Cách quản lý địa chỉ của 8086 ?
- 8086 quản lý theo địa chỉ logic Địa chỉ logic được khối giao tiếp BUS chuyển thành địa chỉ vật lý bên ngoài theo cách: SEGMENT*16 + OFFSET,
4 (5 điểm) Liệt kê các thanh ghi/cặp các thanh ghi hoặc các bit cụ thể trong thanh ghi mà vi xử lý 8086 có thể dùng để:
Trang 2a Chỉ ra địa của lệnh cần thực hiện ?
CS:IP
b Chỉ ra một biến nhớ ?
DS:SI hoặc ES:DI
c Chỉ ra đỉnh ngăn xếp ?
SS:SP
d Chỉ thị các đặc trưng cơ bản cho kết quả thực hiện phép toán cũng như trạng thái làm việc của vi xử lý?
Thanh ghi cờ,
e Chỉ ra cổng ngoại vi cần được đọc/ghi dữ liệu ?
DX
f Chỉ ra trạng thái cho phép ngắt hay không cho phép ngắt ?
Bít cờ I và T
5 (5 điểm) Hãy tìm địa chỉ vật lý của các ô nhớ sau:
a 1001:0110 11000h
b 1023:3201 13431h
c 50AF:492C 5541Ch
6 (5 điểm) Hãy chỉ ra số byte không bị chồng lấn (overlap) giữa hai đoạn nhớ liên tiếp ?
16 byte
7 (5 điểm) Hãy tím địa chỉ ô nhớ cuối cùng của các đoạn nhớ sau trong chế độ real mode:
a ADFF ADFF:FFFF (BDFEFh)
b 9A9B 9A9B:FFFF (AA9AFh)
c CCDB CCDB:FFFF (DCDAFh)
8 (5 điểm) 8086 có bao nhiêu chế độ đánh địa chỉ bộ nhớ (memory addressing modes)? Liệt kê chúng và giải thích tại sao họ dùng cụm từ tiếng Anh tương ứng
để đặt tên cho các chế độ tương ứng đó ?
- Có 7 chế độ địa chỉ dành cho bộ nhớ dữ liệu
- Chế độ địa chỉ thanh ghi: bởi thanh ghi chứa dữ liệu được dùng,
- Chế độ địa chỉ tức thì: Bởi giá trị cụ thể được đưa trực tiếp vào lệnh
- Chế độ địa chỉ trực tiếo: bởi địa chỉ của ô nhớ có dữ liệu cần truy nhập được chỉ ra trên lệnh,
- Chế độ địa chỉ gián tiếp qua thanh ghi: bởi địa chỉ của ô nhớ được chứa trong thanh ghi,
- Chế độ địa chỉ tương đối cơ sở: Bởi dùng thanh ghi cơ sở để chỉ ra địa chỉ của ô nhớ cần truy nhập hoặc của ô nhớ có địa chỉ được dịch đi kể
từ địa chỉ trong thanh ghi cơ sở đó,
- Chế độ địa chỉ tương đối chỉ số: tương tự trường hợp tương đối cơ sở, chỉ khác là dùng thanh ghi chỉ số,
Trang 3- Chế độ địa chỉ tương đối chỉ số cơ sở: tương tự hai trường hợp trên, tuy nhiên địa chỉ của ô nhớ cần truy nhập là tổng của hai thanh ghi chỉ số và
cơ sở và dịch chuyển tương đối nếu có
9 (5 điểm) Đối với 8086, độ dài tối đa của một đoạn nhớ là bao nhiêu ?
10 (5 điểm) Chế độ địa chỉ bảo vệ (protected mode) có trong các vxl nào của Intel ?
- 80286 trở lên
11 (5 điểm) Cách quản lý đoạn nhớ trong chế độ protected mode như thế nào ?
- Dùng các bảng descriptor để chỉ ra địa chỉ và phạm vi của đoạn nhớ,
truy nhập Nó được gọi là selector bởi nó chọn 1 trong các descriptor
12 (5 điểm) Có bao nhiêu loại bảng descriptor ? và tối đa có bao nhiêu descriptor ?
- Có 2 loại, global và local
- Tối đa 16K descriptors
13 (5 điểm) Selector là gì? và Các thanh ghi nào đựơc dùng để chỉ ra một descriptor trong vi xử lý 80486?
- Selector dùng để chỉ ra descriptor được chọn có ô nhớ cần được truy nhập Selector được chưa trong thanh ghi SEGMENT
14 (5 điểm) Độ dài của một đoạn nhớ mà 80286 có thể quản lý là bao nhiêu ? của
80486 là bao nhiêu ?
15 (5 điểm) Bit G (Granularity) dùng để làm gì ? Khi G=1, đoạn nhớ có bước tăng là bao nhiêu ?
- G dùng để chỉ ra hệ số nhân bằng 4K vào độ lớn của đoạn dữ liệu
16 (5 điểm) Khi G=1, mỗi đoạn bộ nhớ của 80386 là bao nhiêu ?
- Khi đó, mỗi đoạn bộ nhớ là bao nhiêu tùy thuộc vào giá trị của phần LIMIT trong descriptor nhân với 4 K
17 (5 điểm) Hãy chỉ ra không gian địa chỉ của các đoạn nhớ với địa chỉ base và limit tương ứng như sau (với G=0):
a Với 80286: base là 100000H và Limit là 40AF ?
b Với 80486: base là 10000000H và Limit là 020F0 ?
Trang 418 (5 điểm) Chức năng chính của các chương trình dịch là gì ?
Câu trả lời là: Chương trình dịch có chức năng chính là chuyển từ MÃ NGỮ dang MÃ MÁY
19 (5 điểm) Hãy giải thích các cột số viết trước các lệnh trong đoạn chương trình được liệt kê ra ở Trang 122 trong quyển sách tham khảo có ý nghĩa gì?
- Có 02 cột số cơ bản, cột thứ nhất (từ trái sang phải) chỉ ra địa chỉ Offset bắt đàu cho lệnh tương ứng trên dòng đó
- Cột các số viết dưới dạng hexa tiếp theo thể hiện lệnh tương ứng được dịch sang mã máy
20 (5 điểm) Viết rõ giải thích cho từng bít về mã hóa các lệnh dùng trong đoạn code của chương trình ở Trang 247?
Các lệnh tương ứng được giải thích như sau:
Với lệnh PUSH REG có mã là 01010rrr; với rrr là mã của thanh ghi (theo bảng kèm theo)
- B9 và BB tiếp theo biểu diễn cho trường hợp mov giá trị trực tiếp vào thanh ghi tương ứng Với lệnh mov giá trị trực tiếp vào thanh ghi có dạng: 1011wrrr data Với w chỉ ra độ rộng của thanh ghi (w=08 bit tức
1 byte hay w=1 tức 2 byte), rrr thể hiện mã của thanh ghi và data là giá trị được chuyển vào thanh ghi
- Các lệnh mov dữ liệu từ thanh ghi đến thanh ghi được giải thích đơn giản bởi đó không là những trường hợp đặc biệt,
sau CD,
- Lệnh CALL gần có mã lệnh là E8, CALL xa có mã là 9A tiếp sau đó chỉ
ra khoảng cách từ lệnh tiếp theo đến chương trình con (là
displacement)
- Lệnh SHL BX,CL là dịch trái nội dung BX với số lần dịch bằng giá trị trong
CL Nó có mã lệnh là 110100cw mm100rrr; vớii bit c=1 (dịch với số lần được chỉ ra trong CL, nếu bit c=0 thì sẽ dịch 1 lần) w chỉ ra độ rộng của thanh ghi, mm chỉ ra dịch nội dung thanh ghi (=11), và rrr là mã hóa cho các thanh ghi có nội dung được dịch Trường hợp này là D3 E3
của các thanh ghi trong lệnh ADD như đã biết,
- Lệnh DEC reg có mã 01001rrr với rrr là mã của thanh ghi tương ứng, ví
dụ ở đây SI có rrr=110 và mã lệnh này sẽ là 4E
thể hiện điều kiện” JNZ có cccc=0101 Disp ở đây là khoảng cách tính bằng số byte tới nơi cần đến, F2 trong trường hợp này là số byte biểu diễn số byte cần nhảy dưới dạng mã bù
Trang 5- Lệnh POP tương tự như giải thích cho PUSH
AL là 3C, giá trị là 39 chỉ ra mã ASCII của ‘9’, tương tự với các trường hợp khác
-
21 (6 điểm) Hãy so sánh PIC16F87 với 8086 trên các khía cạnh sau:
a Kiến trúc vi xử lý?
b Thanh ghi ?
- Dung lượng nhớ và cách quản lý bộ nhớ ?
c …
Phần này dài, các thày xem xét cho điểm phù hợp với mức độ rõ rang của so sánh,
-Tổng điểm bằng 100 -
Chúc các bạn làm bài tốt và nhớ nộp bài đúng hạn