Tải bản đầy đủ (.doc) (31 trang)

Nhom9-DeTai6

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 (416.97 KB, 31 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN

-------------o0o-------------

BÁO CÁO BÀI TẬP LỚN
MƠN KIẾN TRÚC MÁY TÍNH
− Đề Tài: Nghiên cứu tìm hiểu thế hệ vi xử lý 8088
− Nhóm thực hiện: Nhóm 09.
− Thành viên trong nhóm:
1. VũVăn Duy
2. Nguyễn Trường Giang
3. Tạ Minh Luận
4. Phạm Minh Phương
5. Vũ Quang Phuc
−Giáo viên hướng dẫn: Nguyễn Thanh Hải.


Hà Nội, ngày 01-11-2015

2


Mở Đầu
Thế hệ vi xử lý 8088
Intel 8088 là thế hệ BVXL đầu tiến “lóe sáng” thực sự trên thị trường.
Năm 1978, một hợp đồng cung cấp sản phẩm quan trọng cho bộ phận máy tính
cá nhân máy tính mới thành lập của IBM đã biến BVXL, 8088 trở thành bộ não
của sản phẩm chủ đạo của sản phẩm mới của IBM – máy tính BM PC, số lượng
bóng bán dẫn: 29000, tốc độ : 5MHz, 8MHz, 10 MHz. Sản phẩm được giới
thiệu năm 1979 và sau đó được tích hợp vào các máy tính cá nhân IBM xuất


hiện trên thị trường vào năm 1982. Intel 8088 có thể được xem như “ ngừơi
tiềm nhiệm chính” của các BXL thê hệ tiếp theo là: Intel 80286,80386,80486
rồi đến Intel Pentium, Pentium Pro, Pentium II, III,IV, tất cả đều được cải tiến
dựa trên thiết kế cơ bản của Intel 8088. Ngày nay, BVXL Intel Pentum 4 có thể
thực hiện bất kỳ đọa mã nào

Bố cục của báo cáo
I.

Bộ vi xử lý Intel 8088

II.

Cấu trúc bên trong và nguyên lý hoạt động của bộ vi xử lí 8088

III.

Sơ đồ khối, các chân chức năng và các chế độ hoạt động

IV.

Các thanh ghi và các chế độ địa chỉ

V.

Các phương pháp vào ra dữ liệu

VI.

Tập lệnh của bộ vi xử lý 8088


VII. Phối ghép 8088
VIII. Quản lý địa chỉ bộ nhớ & khái niệm ngăn xếp của 8088
Bài viết dưới đây do nhóm 22 gồm các thành viên: Đỗ Ngọc Sơn và Đỗ
Quang Hùng cùng nhau tìm tài liệu, cùng nhau thảo luận và soạn thảo. Nhờ có
sự hướng dẫn của thầy giáo và sự giúp đỡ của các bạn, nhóm đã cố gắng và
nghiêm túc làm việc nhưng khơng thể khơng có thiếu sót. Rất mong thầy giáo
và các bạn đọc tài liệu cùng tham khảo và góp ý chỉnh sửa để tài liệu được
hoàn chỉnh hơn. Chân thành cảm ơn!

3


Nội dung báo cáo
I. Bộ vi xử lý Intel 8088
1) Intel 8088:
Intel
Bộ Xử lý trung tâm

8088

Một vi xử lý Intel 8088
Thời gian sản xuất

Từ 1979 đến 1982

Nhà Sản Xuất

Intel


Xung nhip tối đa của CPU

5 MHz và 10HHz

Kiến trúc

x86

Đóng gói

40 pin DIP

Là một vi xử lý của Intel dựa trên 8086, với thanh ghi 16-bit, 8-bit dữ liệu
ngoại tiếp, nó có thể chứa tới 1MB RAM. 8088 ra mắt vào ngày 1 tháng 7 năm
1979, và được sử dụng trong máy IBM PC gốc.
Đích đến của 8088 là hướng tới các hệ thống tiết kiệm tiền sử dụng thiết
kế 8-bit. Bus lớn với chiều rộng chu vi bảng mạch làm nó đắt khi nó ra mắt. Bộ
đệm chờ của 8088 là 4 byte, trái ngược với 8086 là 6 byte.
Biến thể của 8088 với tốc độ đồng hồ tối đa hơn 5MHz bao gồm 8088-1
trong HMOS và 80C88-2 trong CMOS, cả 2 có tốc độ đồng hồ tối đa là
10MHz. Kế thừa 8088 bao gồm 80188, 80186, 80286, 80386 và 80486 vẫn còn
cho đến ngày nay.
Sự ảnh hưởng lớn nhất, dẫn đến các máy tính nhỏ sử dụng 8088 là máy
IBM PC. Bộ xử lý gốc của máy tính chạy ở chu kỳ đồng hồ với tốc độ 4,77
MHz (4/3 xuất hệ màu NTSC có chu kỳ 3,579545 MHz). Phụ thuộc vào model,
Intel 8088 thực hiện khoảng 0,33 đến 0,75 triệu chỉ thị mỗi giây.
2) Đặc tính kĩ thuật:
a) Nguồn điện:

4



Bộ VXL 8088 hoạt động với điện áp +5V sai số 10%, dòng điện max
340 mA, hoạt động ở nhiệt độ 32oF đến 180oF.
b) Đặc tính một chiều:
Đây là đặc tính quan trọng, nếu khơng biết dịng điện đầu vào và cùng các dòng
điện ra ở các chân của 8088 thì khơng thể ghép nối các đầu này với phần tử
khác.
* Đặc tính đầu vào:
Các đầu vào của BVXL 8088 tương thích với tất cả các phần tử logic ngày
nay. Sau đây là miêu tả mức logic điện áp mức dịng điện:
Bit

Điện áp mức dịng điện

0

0,8V Max 10µA Max

1

2,0V Min 10µA Max

* Đặc tính đầu ra :
Mức logic điện áp mức dòng điện đầu ra :
Bit

Điện áp mức dòng điện

0


0,45V Max 2,0mA Max

1

2,4V Min -400µA Max

Phần tử logic chuẩn có mức logic 0 Max = 0,4V cịn 8088 có mức ra
Max 0,45V. Sự sai khác này làm giảm khả năng chống nhiễu từ mức chuẩn
400mV xuống cịn 350mV. Vì vậy cần chú ý khơng q 10 tải khác nhau có thể
nối vào một đầu ra, đặc biệt khi dùng các loại dây dài, tôt nhất nên chọn các
phần tử logic thuộc họ 74LS, 74ALS, 74HC. . .
3) Các dạng dữ liệu của 8088:
BVXL 8088 có thể làm việc với các dạng dữ liệu số cơ bản đều được tạo
ra từ hai đơn vị cơ sở là Byte 8-bit và Word 16-bit phù hợp với khả năng xử lý
16-bit và bus dữ liệu 8-bit của 8088. Dữ liệu ký tự được 8088 lưu trữ theo dạng
ASCII chuẩn, mỗi ký tự được chiếm 1 byte và tập lệnh của 8088 có thể thực
hiện phép cộng trừ thập phân trên các ký tự ASCII này (kết hợp với cờ AF).

II. Cấu trúc bên trong và nguyên lý hoạt động của bộ vi xử lý 8088
Bên trong CPU 8088 có hai khối chính là khối BIU (Bus Interface Unit)
và khối EU (Execution Unit):

5


1) Bus Interface (BIU):

Sơ đồ khối của bộ vi xử lý
8088

Trong khối giao tiếp BIU có các thanh ghi đoạn và thanh ghi con trỏ
lệnh IP, khối logic điều khiển bus, bộ cộng, bus dữ liệu 8-bit và bus địa chỉ 20bit. Đặc biệt bên trong BIU cịn có bộ nhớ đệm lệnh (hàng đợi lệnh) với dung
lượng 4-byte dùng để chứa các lệnh đã đọc được nằm chờ EU xử lý, đây là cấu
trúc mới được cấy vào BVXL 8088 để thực hiện cơ chế liên tục dòng mã lệnh
(Instruction Pipelining). Pipeline là một cơ chế đã được áp ứng dụng từ những
năm 60 trong các máy tính lớn.
− Các thành phần:
+ Bộ cộng tổng (∑): Tổng địa chỉ vật lý
+ 4 thanh ghi đoạn 16-bit
+ Bộ đếm chương trình (PC) - con trỏ lệnh IP
+ IQ: Hàng đợi lệnh (IR)
− Chức năng: Điều khiển bus hệ thống, đưa ra địa chỉ, đọc mã lệnh, đọc ghi
dữ liệu từ M/I/C.
2) Executinon Unit (EU):
Trong khối thực hiện lệnh EU có các thanh ghi đa năng, các thanh ghi
con trỏ và chỉ số, khối tính tốn số học và logic ALU, khối điều khiển CU, bus
dữ liệu 16-bit của ALU, bus tín hiệu điều khiển.

6


− Các thành phần:
+ ALU thực hiện các thao tác khác với các toán hạng của lệnh
+ CU giải mã lệnh
+ 8 thanh ghi 16-bit gồm: 4 thanh ghi chung là AX, BX, CX, DX và 4
thanh ghi con trỏ chỉ số là SP, BP, SI, DI
+ Thanh ghi cờ: Chứa trạng thái mà ALU thực hiện
− Chức năng: Nhận lệnh và dữ liệu từ BIU để xử lý.
Các bus trong (Internal bus):
Có chức năng ghép nối các bộ phận trong CPU. Có 3 loại bus trong

8088 là bus dữ liệu, bus địa chỉ và bus địa chỉ:
− Bus dữ liệu 8-bit gồm các đường dữ liệu được ký hiệu từ D D7 7 đến D
D0 0.
− Bus địa chỉ 20-bit gồm các đường dữ liệu được ký hiệu từ A A19 19 đến
A A0 0.
− Bus điều khiển có từ 4 đến 10 đường tín hiệu được sinh ra từ CPU gồm:
MEMR (Memory Read), MEMW (Memory Write), IOR (I/O Read),
IOW (I/O Write).
Việc chia CPU thành hai phần làm việc đồng thời có liên hệ với nhau
qua hàng chờ đợi lệnh làm tăng tốc độ đáng kể của CPU.
III.

Sơ đồ khối, các chân chức năng và các chế độ hoạt động

Bộ vi xử lý 8088 có hai chế độ hoạt động là MIN và MAX nên một số
chân sẽ có các chức năng khác nhau đối với từng chế độ hoạt động khác nhau
của bộ vi xử lý.
1) Các chân chức năng:
− AD0 - AD7: Các chân địa chỉ dữ liệu phân đường chứa 8-bit dữ liệu hoặc
8-bit thấp của địa chỉ bộ nhớ hoặc I/O (Input/Output).
− A8 - A15: Các chân địa chỉ xác định 8-bit cao của địa chỉ bộ nhớ, I/O,
trong suốt quá trình HLDA hoạt động của các chân này ở trạng thái trở
kháng cao.
− A16/S3, A17/S4, A18/S5, A19/S6: Các chân địa chỉ/trạng thái ba trạng
thái, các chân này ở trạng thái trở kháng cao trong suốt quá trình HLDA.

7


Bít trạng thái S6 ln = 0, S5 chỉ trạng thái cờ IF, S3 và S4 xác định đoạn

nhớ đang được thâm nhập theo bảng sau:

S3

S4

Đoạn nhớ thâm nhập

0

0

Đoạn dữ liệu

1

0

Đoạn ngăn xếp

0

1

Đoạn lệnh hoặc khơng có đoạn

1

1


Đoạn dữ liệu

Sơ đồ khối và các chân chức năng

của 8088
2) Các chân ở chế độ MIN:
− IO/ M : Chỉ ra rằng CPU đang thâm nhập bộ nhớ hay cổng I/O.

8


− WR : Tín hiệu ra ba trạng thái báo ghi dữ liệu bộ nhớ, I/O.
− INTA (Interupt Acknowledge): Tín hiệu ra chấp nhận ngắt.
− ALE (Address Latch Enable): Tín hiệu thơng báo rằng bus địa chỉ dữ liệu
có chưa địa chỉ.
− DT/ R (Data Trasmit/Receiver): Tín hiệu ra ba trạng thái chỉ chiều
chuyển động của dữ liệu, DT/ R = 0 dữ liệu ra từ CPU, DT/ R = 1 dữ liệu
đi vào CPU.
− DEN (Data Enable): Tín hiệu ra ba trạng thái để mở các bộ đệm dữ liệu,
khi DEN = 0 tức là có dữ liệu.
− HOLD: Tín hiệu vào yêu cầu treo (thả nổi) CPU.
− HLDA (Hold Acknowledge): Báo ra BVXL chấp nhận thả nổi.
− SS 0 : Tín hiệu trạng thái, hoạt động theo bảng sau:

IO/ M

DT/ R

SS 0


Chu kỳ bus

0

0

0

Báo nhận lệnh ngắt

0

0

1

Đọc bộ nhớ

0

1

0

Ghi bộ nhớ

0

1


1

Dừng

1

0

0

Nhận lệnh

1

0

1

Đọc cổng I/O

1

1

0

Ghi cổng I/O

1


1

1

Dừng

9


3) Các chân ở chế độ MAX
− S 2 , S1 , S 0 : Cho biết trạng thái chu kỳ bus:

S2

S1

S0

Chu kỳ bus

Tín hiệu

0

0

0

Trả lời ngắt


INTA

0

0

1

Đọc cổng I/O

IORC

0

1

0

Ghi cổng I/O

IOWC, AIOWC

0

1

1

Dừng


Không

1

0

0

Nhận lệnh

MRDC

1

0

1

Đọc bộ nhớ

MRDC

1

1

0

Ghi bộ nhớ


MWTC, AMWC

1

1

1

Thụ động

Không

− RQ / GT 0 , RQ / GT 1 (Request/Grant) : Tín hiệu hai chiều RQ-yêu cầu
treo bus, GT-tín hiệu báo rằng CPU chấp nhân treo.
− LOCK : Tín hiệu ra cấm các mạch điều khiển khác sử dụng bus.
− QS1, QS0 (Queue Status): Cho biết trạng thái của hàng đợi lệnh, bảng
trạng thái:

QS1

QS0

Trạng thái

0

0

Không hoạt động


0

1

Byte thứ nhất của mã lệnh

1

0

Hàng đợi lệnh rỗng

1

1

Các byte tiếp theo

4) Các chế độ hoạt động MIN/MAX
c) Chế độ tối thiểu Min :

10


Chế độ hoạt động khi chân MN/ MX nối với nguồn +5V. Trong chế độ này bộ
vi xử lý 8088 trực tiếp gửi tín hiệu điều khiển cho hệ thống, đây là chế độ hoạt
động đơn giản nhất của 8088. Tín hiệu điều khiển được thực hiện ngay trong
BVXL, cấu hình này cho phép các thiết bị ngoại vi của 8085A hoạt động một
cách tương thích với 8088 mà khơng cần các mạch phụ bên ngoài.
d) Chế độ tối đa MAX


Chế độ hoạt động khi chân MN/ MX nối với đất. Trong chế độ này cần
có các mạch phụ bên ngồi để chuyển đổi tín hiệu điều khiển. Các mạch phụ
này chuyển đổi tín hiệu các bit trạng thái S 0 , S1 , S 2 thành tín hiệu trao đổi

11


I/O và bộ nhớ điều khiển sự truyền dữ liệu. Trong chế độ này 8088 cần có thêm
bộ điều khiển bus 8288 bởi vì khơng có đủ chân tín hiệu đầu ra do các chức
năng mới đã thay thé các chức năng của một số chân. Chế độ MAX được sử
dụng khi trong hệ thống có chứa một bộ đồng xử lý như bộ đồng xử lý toán học
8087.
IV.

Các thanh ghi và các chế độ địa chỉ

1) Các thanh ghi:
e) Thanh ghi đoạn:
− Bộ vi xử lý 8086/88 làm việc ở chế độ thực, với 20-bit địa chỉ BVXL này
có khả năng đánh địa chỉ cho 2 20 = 1M ô nhớ = 1MB. Trong 1MB bộ nhớ
ngoài người ta chia thành các đoạn 64KB khác nhau để:
+ Chứa mã chương trình
+ Chứa dữ liệu và kết quả trung gian của chương trình
+ Tạo ra một đoạn nhớ đặc biệt gọi là ngăn xếp (STACK) dùng và việc
quản lý các thơng số của VXL khi gọi chương trình con hoặc trở về
chương trình chính
− Vì vậy để quản lý các đoạn nhớ trên, BVXL 8088 có 4 thanh ghi đoạn
xác định địa chỉ bắt đầu của 4 đoạn nhớ 64KB:
+ CS (Code Segment): Thanh ghi đoạn mã, xác định địa chỉ bắt đầu của

đoạn nhớ chứa mã chương trình
+ DS (Data Segment): Thanh ghi đoạn dữ liệu, xác định địa chỉ bắt đầu
của đoạn nhớ chứa hầu hết dữ liệu chương trình
+ ES (Extra Segment): Thanh ghi đoạn dữ liệu phụ, xác định địa chỉ bắt
đầu của đoạn nhớ chứa dữ liệu phụ. Đoạn nhớ này được các lệnh về
chuỗi sử dụng để chứa dữ liệu đích
+ SS (Stack Segment): Thanh ghi đoạn ngăn xếp, xác định địa chỉ bắt
đầu của đoạn nhớ ngăn xếp
f)Các thanh ghi đa năng:
BVXL 8088 có 4 thanh ghi đa năng 16-bit: AX, BX ,CX, DX. Khi cần
chứa dữ liệu 8-bit thì mỗi thanh ghi này có thể tách ra thành 2 thanh ghi 8-bit
cao và 8-bit thấp, đó là các cặp AH-AL, BH-BL, CH-CL, DH-DL:

12


− AX (Accumulator): Thanh ghi chứa, thường dùng để chứa các kết quả
của các thao tác chăng hạn như lệnh nhân, chia và một số lệnh hiệu chỉnh
dữ liệu.
− BX (Base): Thanh ghi cơ sở, thường chứa địa chỉ lệch của ô nhớ trong
đoạn DS.
− CX (Count): Thanh ghi đếm, CX thường chứa số lần lặp trong các lệnh
lặp, CL thường chứa số lần dịch hoặc quay trong lệnh dịch và quay thanh
ghi.
− DX (Data): Thanh ghi dữ liệu, DX cùng với AX tham gia vào phép nhân
hoặc chia các số 16-bit. DX còn dùng để chứa địa chỉ của các cổng vào/ra
trong các lệnh vào ra dữ liệu trực tiếp.
g) Thanh ghi con trỏ và chỉ số:
BVXL 8088 có 3 thanh ghi con trỏ (IP, BP, SP) và 2 thanh ghi chỉ số
(Si, DI). Các thanh ghi này ngầm định được sử dụng làm các thanh thanh ghi

lệch cho các đoạn tương ứng. Cụ thể:
− IP (Isntruction Pointer): Thanh ghi con trỏ lệnh, IP luôn trỏ vào lệnh tiếp
theo sẽ được thực hiện nằm trong đoạn mã CS. Địa chỉ của lệnh này là
CS:IP.
− BP (Base Pointer): Con trỏ cơ sở, BP luôn trỏ vào dữ liệu nằm trong
đoạn ngăn xếp. Địa chỉ logic của ô nhớ nhăn xếp do BP trỏ tới là SS:BP.
− SP (Stack Pointer): Con trỏ ngăn xếp, SP luôn trỏ vào đỉnh hiện thời của
ngăn xếp. Địa chỉ logic của ngăn xếp là SS:SP.
− SI (Source Index): Chỉ số nguồn, SI trỏ vào dữ liệu trong đoạn dữ liệu
DS. Địa chỉ logic của ô nhớ do SI trỏ tới là DS :SI.
− DI (Destination Index): Chỉ số đích, DI trỏ vào dữ liệu trong đoạn dữ liệu
DS. Địa chỉ logic của ô nhớ do DI trỏ tới là DS :DI.
Riêng trong các lệnh về chuỗi thì ES:DI ln ứng với địa chỉ của một
phần tử thuộc chuỗi đích, DS:SI ln ứng với địa chỉ của một phần tử thuộc
chuỗi nguồn.
Thanh ghi đoạn
CS
DS
SS
ES

Thanh ghi lệch
IP
BX, DI, SI
SP hoặc BP
DI

13

Địa chỉ

Địa chỉ lệnh sắp thực hiện
Địa chỉ trong đoạn dữ liệu
Địa chỉ trong đoạn ngăn xếp
Địa chỉ chuỗi đích


Bảng tóm tắt kết quả ngầm định giữa thanh ghi đoạn và thanh ghi lệch
h) Thanh ghi cờ (Flag Register):
Bên trong BVXL 8088 có một thanh ghi đặc biệt gọi là thanh ghi cờ hay
thanh ghi trạng thái. Mỗi bit của thanh này được dùng để phản ánh một trạng
thái nhất định của kết quả phép toán do ALU thực hiện hoặc một trạng thái
hoạt động của CPU. Thanh ghi cờ có 16-bit nhưng chỉ dùng hết 9-bit làm bit
cờ.
15

14

13

12

11

10

9

8

7


6

O

D

I

T

S

Z

5

4
A

3

2

1

P

0
C


Các bít cờ chia thành 2 loại:
* Các cờ trạng thái, có 6 cờ trạng thái là C, P, A, Z, C và O. Các cờ này được
thiết lập bằng 1 hoặc xóa bằng 0 sau hầu hết các lệnh tốn học và logic:
− C (Carry): Cờ nhớ, C = 1 khi cờ nhớ hoặc mượn.
− P (Parity): Cờ chẵn lẻ, P = 1 khi tổng số bit trong 1 kết quả là chẵn, P = 0
khi tổng số các bit trong 1 kết quả là lẻ.
− A (Auxiliary): Cờ nhớ phụ, A = 1 khi có nhớ hoặc mượn từ một số BCD
thấp sang một số BCD cao.
− Z (Zero): Cờ rỗng, Z = 1 khi kết quả của phép tính số học bằng 0, Z = 0
khi kết quả của phép tính số học khác 0.
− S (Sign): Cờ dấu, S = 1 kết quả âm.
− O (Overflow): Cờ tràn, O = 1 khi kết quả vượt ra ngoài giới hạn biểu
diễn dành cho nó.
* Các cờ điều khiển, có 3 cờ T, I, D. Các cờ này được thiết lập bằng 1 hoặc
xóa bằng 0 thơng qua các lệnh điều khiển chế độ làm việc của BVXL:
− T (Trap): Cờ bẫy, T = 1 thì BVXL làm việc ở chế độ chạy từng lệnh.
− I (Interrupt): Cờ ngắt, I = 1 thì BVXL cho phép các yêu cầu ngắt được
tác động. Cờ này được thiết lập bằng lệnh STI và xóa bằng lệnh CLI.
− D (Direction): Cờ hướng, D = 1 thì BVXL làm việc với chuỗi ký tự theo
thứ tự từ trái qua phải.
2) Các chế độ địa chỉ:
Chế độ địa chỉ (Addressing mode) là cách để CPU tìm thấy tốn hạng cho
các lệnh của nó. Để viết được chương trình cho CPU ta phải nắm vững các chế

14


độ địa chỉ mà các lệnh của nó sử dụng. Các chế độ địa chỉ được xác định ngay
từ khi chế tạo ra BVXL và không thể thay đổi được. Bộ vi xử lý 8088 và họ

80x86 nói chung đều có 7 chế độ địa chỉ dữ liệu:
i)Chế độ địa chỉ thanh ghi:
Trong chế độ địa chỉ này các lệnh sử dụng các thanh ghi bên trong CPU
làm các toán hạng để chứa dữ liệu cần thao tác. Các thanh ghi sử dụng trong lệnh
phải cùng kích cỡ, trừ một số lệnh như lệnh SHL DX, CL.
Ví dụ:
Assembly
MOV AL, BL
MOV CH, CL
MOV AX, CX
MOV DS, AX
MOV BX,ES
MOV ES,DS
MOV BL,DX
MOV CS,AX

Kích thước
8 bit
8 bit
16 bit
16 bit
16 bit
-

Hoạt động
Sao chép BL vào AL
Sao chép CL vào CH
Sao chép CX vào AX
Sao chép AX vào DS
Sao chép ES vào BX

Không được phép dùng hai thanh ghi đoạn
Không được phép, hai thanh ghi khác kích cỡ
Khơng được phép, thanh ghi đoạn mă khơng thể là đích

j)Chế độ địa chỉ tức thì:
Trong chế độ này tốn hạng đích là một thanh ghi hay ơ nhớ, cịn tốn
hạng nguồn là một hằng số. Vì là hằng số nên tốn hạng đích được tìm thấy
ngay sau mã lệnh. Hầu hết các chương trình dịch quy định cách viết các hằng
số như sau:
− Số hex: thêm chữ H vào cuối, riêng các số bắt đầu bằng chữ thì phải
thêm cả số 0 đằng trước. Ví dụ: 1234H, 0A231H
− Số thập phân: viết bình thường. Ví dụ: 123, 22
− Số nhị phân: thêm chữ B vào cuối, ví dụ: 10011B
− Ký tự và chuỗi ký tự: phải đặt trong hai dấu phẩy trên. Ví dụ: ‘A’, ‘AB’
Ví dụ:
Assembly
MOV BL,44
MOV AX,44H
MOV SI,0
MOV AL,’A’
MOV AX,’AB’

Kích thước
8 bit
16 bit
16 bit
8 bit
16 bit

Hoạt động

Đưa số 44 thập phân vào BL
Đưa 0044H vào AX
Đưa 0000H vào SI
Đưa mã ASCII của ‘A’ vào AL
Đưa mã ASCII của ‘A’ vào AH, ‘B’ vào AL

k) Chế độ địa chỉ trực tiếp:

15


Trong chế độ địa chỉ này một toán hạng là địa chỉ lệch của ơ nhớ trong
đoạn dữ liệu, cịn tốn hạng kia chỉ có thể là thanh ghi khơng được là ơ nhớ. Địa
chỉ lệch của ơ nhớ có thể cho dưới dạng tên hoặc một số hex (số hex 16 bit đặt
trong ngoặc vng).
Ví dụ:
Assembly
MOV
AL,Number
MOV AX,Data1

Kích thước Hoạt động
Sao chép 1 byte dữ liệu từ ơ nhớ có tên là
8 bit
Number trong đoạn DS vào AL
Sao chép 1 từ dữ liệu từ ơ nhớ có tên là
16 bit
Data1 trong đoạn DS vào AX
Sao chép AL vào ô nhớ có tên là News trong
MOV News,AL

8 bit
đoạn dữ liệu DS
MOV
AL, 8 bit
Sao chép dữ liệu từ ô nhớ DS:(1234H) vào AL
[1234H]

l) Chế độ địa chỉ gián tiếp qua thanh ghi:
Trong chế độ địa chỉ này một toán hạng là một trong các thanh ghi BP,
BX, DI và SI chứa địa chỉ lệch của ơ nhớ, cịn tốn hạng kia chỉ có thể là thanh
ghi khơng được là ơ nhớ. Các thanh ghi đặt trong ngoặc vuông. BX, SI, DI
chứa địa chỉ lệch của ô nhớ trong đoạn dữ liệu DS, cịn BP chứa địa chỉ lệch của
ơ nhớ trong đoạn ngăn xếp SS.
Ví dụ:

Assembly

Kích
Hoạt động
thước
MOV CX,[BX] 16 bit
Sao chép 1 từ dữ liệu từ ô nhớ DS:BX
MOV [BP],DL 8 bit
Sao chép nội dung DL vào ô nhớ SS:BP
MOV [DI],BH 8 bit
Sao chép nội dung BH vào ô nhớ DS:DI
MOV
[DI], Không cho phép di chuyển dữ liệu giữa 2 ô nhớ
[BX]
m)

Chế độ địa chỉ tương đối cơ sở:
Trong chế độ địa chỉ này một tốn hạng là một ơ nhớ được chỉ ra bởi một
thanh ghi cơ sở (BX, BP) cộng với một giá trị dịch chuyển (giá trị hằng), cịn
tốn hạng kia chỉ có thể là thanh ghi khơng được là ơ nhớ.
Giá trị dịch chuyển có thể bằng số hoặc bằng tên. Nếu bằng số thì giá trị
dịch chuyển cộng với thanh ghi cơ sở đặt trong ngoặc vuông, ví dụ MOV AL,

16


[BX+2]. Nếu bằng tên thì tên này đặt trước ngoặc vng, ví dụ MOV
AL,DATA1[BX]. Cả hai dạng giá trị dịch chuyển có thể xuất hiện đồng thời, ví
dụ MOV AL,DATA1[BX+2].
Trong bộ vi xử lư 8088, giá trị dịch chuyển nếu là số thì là một số có dấu
16 bit nằm trong khoảng -32768 đến 32767.
BX xác định địa chỉ trong đoạn dữ liệu DS c#n BP xác định địa chỉ
trong đoạn ngăn xếp SS.
Ví dụ:
Assembly
MOV CL,[BX+2]
MOV AL,[BP+5]

Kích thước
8 bit
8 bit

Hoạt động
Sao chép 1 byte dữ liệu từ ô nhớ DS:(BX+2) vào
CL
Sao chép 1 byte dữ liệu từ ô nhớ SS:(BP+5) vào

AL

n) Chế độ địa chỉ tương đối chỉ số:
Tương tự như chế độ địa chỉ tương đối cơ sở, chỉ khác là trong chế độ địa
chỉ này sử dụng các thanh ghi chỉ số SI hoặc DI. Ô nhớ chỉ ra thanh ghi chỉ số
cộng với giá trị dịch chuyển nằm trong đoạn dữ liệu.
Ví dụ:
Assembly
MOV CL,[SI+2]
MOV AL,[DI+5]

Kích thước
8 bit
8 bit

Hoạt động
Sao chép 1 byte dữ liệu từ ô nhớ DS:(SI+2) vào CL
Sao chép 1 byte dữ liệu từ ô nhớ DS:(DI+5) vào
AL

o) Chế độ địa chỉ tương đối chỉ số cơ sở:
Kết hợp hai chế độ địa chỉ tương đối chỉ số và tương đối cơ sở ta có chế
độ địa chỉ tương đối chỉ số cơ sở. Chế độ địa chỉ này dùng cả thanh ghi chỉ số
và thanh ghi cơ sở để xác định địa chỉ.
Ví dụ:
Assembly

Kích
thước
DH, 8 bit


MOV
[BX+SI+2]
MOV
16 bit
AX,LIST[BX+DI]
MOV
8 bit
LIST[BP+SI+4],DH

Hoạt động
Sao chép 1 byte dữ liệu từ ô nhớ DS:
(BX+SI+2) vào DH
Sao chép 1 word dữ liệu từ ô nhớ DS:
(BX+DI+LIST) vào AX
Sao chép nội dung DH vào ô nhớ DS:
(BP+SI++LIST+4)

Chú ý :
Các thanh ghi đoạn và thanh ghi lệch được ngầm định đi kèm với nhau để

17


xác định địa chỉ của các toán hạng trong các đoạn nhớ khác nhau. Vì tính ngầm
định này nên trong các lệnh ta chỉ viết các thanh ghi lệch là đủ cơ sở để tính địa
chỉ của tốn hạng. Tuy nhiên, bộ vi xử lư 8088 còn cho phép ta phá vỡ sự ngầm
định này để làm việc với các cặp thanh ghi đoạn và thanh ghi lệch khác. Để
loại bỏ sự ngầm định khi viết lệnh ta phải viết tên thanh ghi đoạn muốn dùng
kèm theo dấu hai chấm trước thanh ghi lệch. Cụm ký hiệu này gọi là cụm tiếp

đầu ngữ để loại bỏ thanh ghi đoạn ngầm định.
Ví dụ: MOV AL,ES:[BX]
V. Các phương pháp vào ra dữ liệu:
1) Phương pháp thăm dò:
a) Đặc điểm:
− Các thiết bị I/O sẽ liên tục cập nhật trạng thái sẵn sàng làm việc của
mình lên byte trong byte trạng thái tương ứng. CPU qt byte trạng thái,
nếu bít vào đó =1, thiết bị tương ứng sẵn sàng làm việc, hai bên sẽ trao
đổi dữ liệu.
− Ưu điểm: Phương pháp đơn giản, dễ thực hiện, có thể thực hiện bằng
phần mềm.
− Nhược điểm: tốn thời gian CPU để quét sạch trạng thái, khơng cịn thời
gian thực hiện cơng việc khác.
b) Các phương pháp thăm dị và chức năng:
− Có hai phương pháp thăm dị:
+ Thăm dị ưu tiên: Chương trình sẽ duyệt qua một thiết bị, các thiết bị có
độ ưu tiên thấp hơn chỉ được CPU thăm dò khi các thiết bị ưu tiên cao
hơn khơng cịn nhu cầu trao đổi dữ liệu. Ba thiết bị A, B, C theo trật tự:

18


Start

A
Sẵn S àng

T

Tr ao đổi dữ liệu với A


T

Trao đổi dữ liệu với B

T

Trao đổi dữ liệu với C

F
B
Sẵn S µng

F
C
S½n S µng

F
+ Thăm dị khơng ưu tiên: Chương trình sẽ duyệt qua tất các các thiết bị.
Ba thiết bị A,B,C theo trt t:
Start

A
Sẵn S àng

Tr ao đổi dữ liệu với A

B
Sẵn S àng


Trao đổi dữ liệu với B

C
Sẵn S àng

Trao đổi dữ liệu với C

Chc nng ca phng pháp thăm dò: Được dùng khi khởi động máy,
chạy các thiết bị phần cứng (chuột, bàn phím, ổ đĩa mềm, ổ đĩa CD, máy
in . . .)
2) Ngắt và xử lý ngắt:
a) Định nghĩa:

19


Ngắt là sự kiện CPU tạm dừng thực hiện chương trình để chuyển sang
thực hiện chương trình khác theo yêu cầu bên ngoài.
b) Các loại ngắt:
− Ngắt cứng là cách ngắt khởi tạo từ thiết bị phần cứng và được gửi đến 1
trong 2 chân của CPU là: NMI, INTR
− Ngắt mềm: là các ngắt kích hoạt từ chương trình thông qua các lệnh gọi
ngắt INT (n-số hiệu ngắt)
− Ngắt ngoại lệ: là các ngắt xảy ra do các lỗi trong quá trình thực hiện
chương trình (VD: Chia cho 0, do tràn)
c) Ưu tiên xử lý ngắt:
Khi có nhiều yêu cầu ngắt gửi đến CPU nó sẽ phân cấp từ cao đến thấp:
− Ngắt nội bộ: INT N, INT 0 (phép chia cho 0).
− Ngắt không cho được NMI.
− Ngắt cho được INTR.

− Ngắt để chạy từng lệnh INT 1.
d) Chu kỳ xử lý ngắt :
− CPU đang thực hiện chương trình con thì có u cầu ngắt gửi đến, CPU
chấp nhận ngắt thì lưu các thanh ghi: F, CS, IP.
− Xóa cờ ngắt (IF=0): Xóa cờ (TF=0), sau đó lấy địa chỉ của chương trình
con phục vụ ngắt (căn cứ vào số hiệu ngắt n) nạp vào CS và IP.
− CPU thực hiện chương trình con phục vụ ngắt và kết thúc (gặp IRET)
sau đó CPU nạp lại (khơi phục các giá trị của IP, CS, F) và tiếp tục thực
hiện chương trình chính.
e) Chương trình vào ra bằng ngắt. Gồm 5 bước:
− B1: thiết bị I/O có yêu cầu ngắt. Yêu cầu ngắt được chuyển đến CPU
INTR.
− B2: CPU thực hiện các việc:
+ Hoàn tất các lệnh đang thực hiện
+ Lưu các thanh ghi IP, CS, F
+ Gửi tín hiệu chấp nhận ngắt đến thiết bị I/O thơng qua INTA
+ Xóa cờ ngắt (cấm ngắt), xóa cờ bẫy (IF = 0)

20


+ Yêu cầu thiết bị I/O cung cấp số hiệu ngắt
− B3: Thiết bị I/O nhận được tín hiệu chấp nhận ngắt, gửi số hiệu ngắt đến
CPU.
− B4: CPU nhận số hiệu ngắt n. Qua đó xác định được phục vụ ngắt (CS,
IP). Đồng thời thực hiện chương trình con phục vụ ngắt và trao đổi dữ
liệu với thiết bị I/O.
− B5: Kết thúc chương trình con phục vụ ngắt, CPU sẽ khôi phục các
thanh ghi IP, CS, F. Đặt IF = 1 và tiếp tục thực hiện chương trình con.
3) Phương pháp DMA:

− Là quá trình thiết bị I/O trao đổi trực tiếp với bộ nhớ không qua CPU.
− Chu kỳ hoạt động:
+ B1: Thiết bị I/O gửi yêu cầu DRQ tới DMAC
• DRQ_DMA Request
• HRQ_Hold Request
• Hold_ nhận tín hiệu CPU tiếp nhận u cầu DMA
• HLDA_ nhận tín hiệu trả lời u cầu DMA
• HACK_ Hold Acknow ledge
• DACK_DMA Acknow ledge
+ B2: DMAC chuyển yêu cầu đến chân tín hiệu HOLD của CPU
+ B3: CPU:
• Hồn tất lệnh đang thực hiện
• Gửi tín hiệu trả lời (đồng ý) HACK thơng qua HLDA
• CPU tự treo (tách ra khỏi hệ thống bus gồm toàn bộ bus A và D, một
phần bus C)
+ B4: DMAC nhận được HACK, cho thiết bị I/O được DACK nắm
quyền điều khiển bus cho CPU
− Các kiểu trao đổi DL bằng DMA:
+ Treo CPU để trao đổi 1 byte dữ liệu
+ Treo CPU để trao đổi mảng dữ liệu

21


+ Tận dụng thời gian bus rỗi để trao đổi dữ liệu
− Chức năng: sử dụng DMA khi các thiết bị có nhu cầu trao đổi dữ liệu
nhiều tốc độ cao.
4) So sánh 3 phương pháp: thăm dò, DMA và ngắt:
Phương pháp
Thăm dị


Ngắt

Phần chủ động

CPU

Tính đơn giản

Đơn giản

Tốc độ

Chậm

I/O
I/O
Tương đối phức
Rất phức tạp
tạp
Chậm
Nhanh

Hiệu năng

Thấp

Trung bình

Đặc điểm


VI.

DMA

Cao

Tập lệnh của bộ vi xử lý 8088

1) Nhóm lệnh chuyển dữ liệu:
− MOV Đích, Nguồn: Sao chép dữ liệu Nguồn vào đích.
− XCHG Đích, Nguồn: Hốn đổi nội dung của 2 tốn hạng đích và nguồn.
− PUSH Nguồn: Cất nội dung của một thanh ghi hoặc một ô nhớ 16 bit vào
ngăn xếp.
− POP Đích: Lấy dữ liệu 16 bit trong ngăn xếp để vào Đích.
− XLAT: Chuyển nội dung của ơ nhớ nằm trong một bảng các ô nhớ 8 bit
vào thanh ghi AL. Địa chỉ bắt đầu của bảng được xác định bởi DS:BX. Địa
chỉ lệch của ô nhớ trong bảng được xác định bới AL.
2) Nhóm lệnh chuyển địa chỉ:
− LEA Đích, Nguồn: Chuyển địa chỉ lệch của ơ nhớ Nguồn vào thanh ghi
Đích 16-bit.
− LDS Đích, Nguồn: Chuyển nội dung của ô nhớ Nguồn 32-bit vào cặp
thanh ghi 16-bit, 16-bit cao của nguồn được nạp vào DS, 16-bit thấp được
nạp vào thanh ghi đích 16 bit.
− LES Đích, Nguồn: Giống như LDS nhưng thay DS bằng ES.
3) Nhóm lệnh chuyển thanh ghi cờ:
− LAHF: Chuyển phần thấp của thanh ghi cờ vào AH.

22



− SAHF: Chuyển nội dung của AH vào 8 bit thấp của thanh ghi cờ.
− POPF: Chuyển phần tử đỉnh ngăn xếp (16 bit) vào thanh ghi cờ.
− PUSHF: Đưa nội dung thanh ghi cờ vào ngăn xếp.
4) Nhóm lệnh chuyển dữ liệu qua cổng:
− IN AL, port hoặc IN AL,DX: Đọc 8 bit từ cổng vào AL. Nếu địa chỉ cổng
có giá trị từ 0H đến FFH thì có thể viết trực tiếp, cịn nếu địa chỉ của cổng
có giá trị lớn hơn FFH thì phải đặt vào DX.
− OUT port,AL hoặc OUT DX,AL: Đưa 8 bit từ thanh ghi AL ra cổng.
5) Nhóm lệnh nhảy:
− Lệnh nhảy khơng điều kiện (JMP nhãn): Chuyển CS:IP tới vị trí được xác
định bởi nhãn.
− Lệnh nhảy có điều kiện (J <Điều kiện> nhãn_gần): Nếu điều kiện thỏa
măn thì nhảy tới nhãn_gần. Lệnh nhảy có điều kiện có độ dài 2 byte, byte
đầu là mă lệnh, byte sau là địa chỉ tương đối. Do vậy khoảng cực đại mà nó
nhảy được là -128 đến 127. Muốn nhảy xa hơn phải dùng lệnh nhảy không
điều kiện. Điều kiện được diễn tả bằng một cụm chữ cái đặt ngay sau J.
Các lệnh nhảy có điều kiện bao gồm: JA, JAE, JB, JBE, JNA, JNAE,
JNB, JNBE, JG, JGE . . .
6) Lệnh so sánh:
CMP Left, Right: Left có thể là thanh ghi hoặc ơ nhớ, Right có thể là
thanh ghi hoặc ơ nhớ hoặc hằng số. Lệnh này so sánh Left và Right, kết quả
phản ánh trong các cờ trạng thái nhưng không làm thay đổi nội dung của Left.
7) Nhóm lệnh lặp:
− LOOP Nhãn_gần: Giảm CX đi 1 đơn vị và nhảy đến Nhãn_gần nếu CX
khác 0.
− LOOPE Nhãn_gần: Giảm CX đi 1 đơn vị và nhảy đến Nhãn_gần nếu ZF =
1 và CX ≠ 0.
− LOOPZ Nhãn_gần: Tương tự LOOPE.
− LOOPNE Nhãn_gần: Giảm CX đi 1 đơn vị và nhảy đến Nhãn_gần nếu

ZF=0 và CX ≠ 0.
− LOOPNZ Nhãn_gần: Tương tự LOOPNE.
8) Lệnh gọi chương trình con:

23


− Gọi chương trình con: CALL nhãn.
− Trở về chương trình con: RET.
9) Nhóm lệnh tính tốn số học:
− Lệnh cộng khơng nhớ: ADD Đích, Nguồn (Đích ← Đích + Nguồn).
− Lệnh cộng có nhớ: ADC Đích, Nguồn (Đích ← Đích + Nguồn + CF).
− Lệnh tăng: INC Đích (Đích ← Đích +1).
− Lệnh giảm: DEC Đích (Đích ← Đích -1).
− Lệnh trừ khơng mượn: SUB Đích, Nguồn (Đích ← Đích - Nguồn).
− Lệnh trừ có mượn: SBB Đích, Nguồn (Đích ← Đích - Nguồn - CF).
− NEG Đích: Đích ← - Đích.
− Lệnh nhân khơng dấu: MUL Nguồn:
+ MUL nguồn 8 bit: AX ← AL * Nguồn 8 bit
+ MUL nguồn 16 bit: DXAX ← AX * Nguồn 16 bit
− Lệnh nhân có dấu: IMUL Nguồn (tương tự MUL).
− Lệnh chia không dấu: DIV Nguồn:
+ DIV nguồn 8 bit: Lấy AX chia cho nguồn 8 bit, thương để trong AL, số dư
để trong AH
+ DIV nguồn 16 bit: Lấy DXAX chia cho nguồn 16 bit, thương để trong
AX, số dư để trong DX
− Lệnh chia có dấu: IDIV Nguồn (tương tự DIV).
− Các lệnh hiệu chỉnh khi thực hiện phép toán với mã BCD và ASCII:DAA,
DAS, AAA, AAD, AAM, AAS.


10)

Nhóm lệnh tính tốn logic:

− AND Đích, Nguồn: Đích ← Đích AND Nguồn.
− OR Đích, Nguồn: Đích ← Đích OR Nguồn.
− XOR Đích, Nguồn: Đích ← Đích XOR Nguồn.
− NOT Đích: Đích ← NOT Đích.
− TEST Đích, Nguồn: Đích AND Nguồn.

24


11)

Nhóm lệnh dịch và quay bit:

− SHL Đích,1 hoặc SHL Đích,CL.
− SHR Đích,1 hoặc SHR Đích,CL.
− SAL Đích,1 hoặc SAL Đích,CL.
− SAR Đích,1 hoặc SAR Đích,CL.
− ROL Đích,1 hoặc ROL Đích,CL.
− ROR Đích,1 hoặc ROR Đích,CL.
− RCL Đích,1 hoặc RCL Đích,CL.
− RCR Đích,1 hoặc RCR Đích,CL.
12)

Nhóm lệnh xử lý chuỗi:

− Lệnh chuyển chuỗi: MOVS, MOVSB, MOVSW.

− Lệnh so sánh chuỗi: CMPS, CMPSB, CMPSW.
− Lệnh quét chuỗi: SCAS, SCASB, SCASW.
− Lệnh nạp chuỗi: LODS, LODSB, LODSW.
− Lệnh lưu chuỗi: STOS, STOSB, STOSW.
VII.

Phối ghép CPU 8088

1) Phối ghép CPU 8088 với bộ nhớ:
Muốn phối ghép 8088-5Hz với bộ nhớ thì mạch nhớ phải có thời gian
thâm nhập dài nhất là 420ns. Muốn ghép EPROM 2732 với tốc độ 450ns vào
bộ nhớ thì EPROM phải có thêm mạch NAND để tạo tín hiệu cho phép mạch
giả mã và tín hiệu yêu cầu đợi để đưa đến chân 8284.
a) Vấn đề kiểm tra parity để phát hiện lỗi trong bộ nhớ RAM:
− Sử dụng thêm một bit nhớ (bít thứ 9 ) để làm bit kiểm tra parity cho 8 bit
dữ liệu thực. Có thế dùng bit parity chẵn hoặc lẻ:
+ Nếu dùng parity chẵn : Tổng số bit 1 trong 8 bít là chẵn và ghi vào bít
thứ 9 số 0. Ngược lại ghi là 1
+ Nếu dùng parity lẻ : Tổng số bit 1 trong 8 bít là chẵn và ghi vào bít thứ
9 số 1. Ngược lại ghi là 0

25


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×