Trình bày cách thức tổ chức và xác định địa chỉ ô nhớ của vi xử lý 8086

Luaän vaên toát nghieäp
Phần 1

trang1

GIỚI THIỆU CHUNG
CHƢƠNG DẪN NHẬP
___ oOo ___

Ngày nay, trên thế giới khoa học kỹ thuật phát triển nhanh chĩng, đặc biệt là
ngành điện_điện tử. Những tiến bộ này ngày càng được ứng dụng rộng rãi trong cơng
nghiệp cũng như trong đời sống sinh hoạt hằng ngày của con người. Hệ thống vi xử lý
hay cịn gọi là máy tính điện tử là một trong những ứng dụng đĩ, nĩ là thiết bị xử lý
thơng tin, điều khiển các thiết bị bên ngồi hay các thiết bị cơng nghiệp một cách tự
động.
Trước nhu cầu thực tế, kit vi xử lý là một cơng cụ dạy và học khơng những giúp
cho sinh viên nghiên cứu học tập, mà cịn cĩ thể ứng dụng mơ phỏng hoạt động của một
máy tính điện tử, đưa những tiến bộ của khoa học kỹ thuật dẫn vào đời sống hiện đại.
Trong khả năng và kiến thức đã học, tơi quyết tâm thực hiện đề tài: “THIẾT KẾ –
THI CƠNG KIT VI XỬ LÝ 8086” để đáp ứng nhu cầu trên.
Vi xử lý là một hệ thống số dựa trên cơ sở linh kiện chủ yếu là bộ vi xử lý
(CPU). Tùy thuộc vào cấu trúc của bộ vi xử lý riêng biệt và phần điều khiển mà ta cĩ
thể bao gồm nhiều loại vi mạch. Dưới sự điều khiển bằng chương trình một bộ vi xử lý
thực hiện các phép tính số học và logic, đồng thời tạo ra những tín hiệu điều khiển cho
bộ nhớ và thiết bị vào ra. Những mệnh lệnh này gọi là chương trình nguồn và được
chứa trong bộ nhớ chỉ đọc (ROM), khi mất điện dữ liệu trong bộ nhớ này khơng bị
mất, khi Reset máy chương trình này sẽ thi hành trước tiên khởi tạo cho máy làm việc.
Khi làm việc CPU đọc những lệnh đĩ ra rồi thực hiện chúng. Do đĩ ta cĩ thể nĩi bộ vi
xử lý là cấu trúc phần cứng được xử lý bằng phần mềm.
Đề tài này khơng chỉ giúp cho sinh viên hịan thành luận văn tốt nghiệp mà cịn
hình thành trong mỗi sinh viên những kinh nghiệm, sáng tạo và năng động. Sau này đề
tài sẽ kết hợp với các ngành chuyên mơn khác để phát triển mơ hình này được hồn
thiện hơn.

Page 1 of 108

Luaän vaên toát nghieäp

trang2

CHƢƠNG CƠ SỞ LÝ LUẬN
___ oOo ___
I.
XÂY DỰNG ĐỀ CƢƠNG LUẬN VĂN:
1). Xác định nhiệm vụ nghiên cứu:
Việc chọn đề tài xuất phát từ hai lý do:
- Khách quan: hiện nay các nền cơng nghiệp cĩ nhu cầu hiện đại hĩa các thiết bị
theo xu hướng cải tiến hĩa các thiết bị bằng cơ khí sang thiết bị điều khiển tự
động ứng dụng kỹ thuật điện tử.
- Chủ quan: do nhu cầu học tập, nghiên cứu, rèn luyện kỹ năng thực hành, ứng
dụng vốn kiến thức khoa học kỹ thuật tiên tiến trực tiếp vào lĩnh vực sản xuất.
Nhiệm vụ nghiên cứu nhằm đạt được các mục đích chủ yếu:
+
Mục đích trước mắt: thỏa mãn về cơ bản các yêu cầu đề ra theo phương
châm “Học đi đơi với hành”.
+
Mục đích sau cùng: Tích lũy kinh nghiệm, rèn luyện và nâng cao năng lực,
tạo bản lĩnh để sẵn sàng tham gia lao động sản xuất, hịa nhập vào bước tiến của thế hệ.
2). Phân tích tài liệu liên hệ:
Trong thời gian nghiên cứu đề tài, người nghiên cứu đã thống nhất tham khảo
một số tài liệu cĩ liên quan trong khoảng thời gian cho phép.
- Phương pháp luận nghiên cứu khoa học: tìm hiểu về cấu trúc hình thức của
một đề tài nghiên cứu khoa học và phương pháp tư duy để giải quyết vấn đề.
- Kỹ thuật vi xử lý Trần Văn Trọng: Tài liệu cung cấp về cấu trúc của vi xử lý
8086.
- Sơ đồ chân linh kiện bán dẫn Dương Minh Trí: cung cấp sơ đồ chân và bảng
trạng thái họat động của các IC và các linh kiện bán dẫn.
- Cấu trúc máy tính: Lê Anh Việt: Tài liệu cung cấp kiến thức cơ bản về cấu
trúc máy tính, tổ chức CPU, hợp ngữ và cách lập trình.
- The 8086/8088 Family Design Programing and Interfacing – John uffnbeck:
tài liệu cung cấp những kỹ thuật kết nối vi xử lý và những phần mềm ứng
dụng.
- Kỹ thuật vi xử lý – Văn Thế Minh: tài liệu cung cấp kỹ thuật giao tiếp với các
thiết bị ngoại vi.

Page 2 of 108

Luaän vaên toát nghieäp

trang3

KẾ HOẠCH NGHIÊN CỨU:
1). Dàn ý nghiên cứu:
Phần I: Giới thiệu chung.
Phần II: Thiết kế phần cứng Kit 8086.
Phần III: Xây dựng phần mềm hệ thống.
Phần IV: Thi cơng Kit 8086.
2). Đối tƣợng nghiên cứu:
Vi xử lý là trung tâm điều khiển các đối tượng, điều khiển hệ thống như máy tự
động, dây chuyền sản xuất… Để hệ thống xử lý thi hành các chức năng điều khiển như
mong muốn, chúng ta phải lập trình bằng ngơn ngữ tương ứng với hệ vi xử lý. Vì thế
đối tượng nghiên cứu chính là thiết kế khối điều khiển tương quan giữa phần cứng và
phần mềm để vận hành đúng chức năng họat động thực sự của máy.
II.

Page 3 of 108

Luaän vaên toát nghieäp

trang4

CẤU TRÚC BỘ VI XỬ LÝ 8086

Chƣơng I

___ oOo ___
I.
CẤU TẠO:
Bên trong gồm hai khối chính:
Khối thực hiện EU (Execution Unit)
Khối giap tiếp bus (Bus Interface Unit)
Bus ñòa chæ

Bus döõ lieäu

Ñieàu khieån bus vaø
taïo ñòa chæ

Caùc bus heä
thoáng


AH
BH
CH
DH

AL
BL
CL
DL
BP
DI
SI
SP

CS
ES
SS
DS
IP
Bus döõ lieäu noäi

Arithmetic logic
unit (ALU)

Caùc côø

Excution Unit
(EU)

Bus Interface Unit
(BIU)
Hình 1.1: Sô ñoà khoái 8086

Bộ vi xử lý thực hiện các lệnh theo các bước sau:
Page 4 of 108

Caùc thanh
ghi ñoaïn

6
5
4
3
2
1

Haøng
ñôïi
leänh

Luaän vaên toát nghieäp

trang5

Lấy lệnh từ bộ nhớ.
Đọc tốn hạng (nếu lệnh yêu cầu).
Thực hiện lệnh.
Ghi kết quả.
1). Khối thực hiện:
Nhiệm vụ của khối thực hiện lệnh là thực hiện các lệnh của chương trình. Nĩ gồm
cĩ khối số học – logic (ALU) cho phép thực hiện các phép tính số học (+ , - , * , /) và
các phép logic (AND, OR, NOT…). Trong khối thực hiện cịn cĩ một số ơ nhớ gọi là
thanh ghi dùng để chứa dữ liệu cho các phép tính. Mỗi thanh ghi giống như một ơ nhớ
ngoại trừ chúng được đặt tên thay vì dùng số để chỉ địa chỉ. EU (Execution Unit) cĩ
các thanh ghi cơng dụng chung chia thành hai nhĩm: nhĩm thanh ghi dữ liệu và nhĩm
thanh ghi chỉ số.
 Các thanh ghi dữ liệu (Data Register):
AH
BH
CH
DH

AL
BL
CL
DL

Các thanh ghi chỉ số và con trỏ (Index & Pointer Register):
SP
BP
SI
DI

Ñoaïn maõ (Code Segment)
Ñoaïn döõ lieäu (Data Segment)
Ñoaïn Stack (Stack Segment)
Ñoaïn theâm (Extra Segment)

Các thanh ghi trạng thái và điều khiển (Status & Control Register):
IP
Flag

Con troû Stack (Stack Pointer)
Con troû neàn (Base Pointer)
Chæ soá nguoàn (Source Index)
Chæ soá ñích (Destnation Index)

Các thanh ghi đoạn (Segment Register):
CS
DS
SS
ES

AX (Accumulator)
BX (Base)
CX (Count)
DX (Data)

Con troû leänh (Intruction Pointer)
Côø

Các thanh ghi dữ liệu:

Cĩ bốn thanh ghi dữ liệu ký hiệu lần lượt là: AX, BX, CX, DX, được người lập
trình sử dụng cho các thao tác với dữ liệu. Mặc dù vi xử lý cĩ thể thao tác với dữ liệu
trong bộ nhớ, nhưng một lệnh như vậy sẽ được thực hiện nhanh hơn trong thanh ghi
(cần ít chu kỳ đồng hồ hơn). Đĩ cũng là nguyên nhân tại sao các bộ vi xử lý hiện đại cĩ
xu hướng nhiều thanh ghi.
Các byte cao và byte thấp trong thanh ghi được truy cập độc lập: Byte cao của
thanh ghi AX được gọi là AH và byte thấp được gọi là AL. Tương tự như vậy cho các
byte cao và byte thấp của các thanh ghi BX CX DX lần lượt là BH & BL CH & CL,
DH & DL. Nhờ điều này mà ta cĩ nhiều thanh ghi hơn khi làm việc với các số liệu cĩ

Page 5 of 108

Luaän vaên toát nghieäp

trang6

kích thước byte dài. Trong đa số lệnh các thanh ghi dữ liệu được chọn tùy ý nhưng các
thanh ghi này lại cĩ chức năng riêng cố định trong một số ít lệnh.

Thanh ghi tích lũy AX (Accumulator):
Là thanh ghi được sử dụng nhiều nhất trong các lệnh số học – logic và truyền dữ
liệu bởi vì việc sử dụng thanh ghi này tạo ra mã máy ngắn nhất.
Trong các thao tác nhân hoặc chia một trong các số hạn tham gia phải chứa trong
AH hoặc AL, các thao tác vào/ra cũng sử dụng thanh ghi AH hoặc AL.

Thanh ghi cơ sở BX (Base):
Thanh ghi BX được dùng cho tính tốn địa chỉ trong phương pháp định địa chỉ
gián tiếp.

Thanh ghi đếm CX (Count):
Việc thực hiện các chương trình lập được thực hiện dễ dàng nhờ thanh ghi CX,
trong đĩ CX đĩng vai trị là bộ đếm vịng lập. Một thí dụ khác của việc sử dụng thanh
ghi CX đĩ là lệnh REP (Repeat) lệnh này điều khiển một lớp các lệnh chuyên về các
thao tác chuỗi. CL cũng được sử dụng là một biến đếm trong các lệnh dịch hay quay
các bit.

Thanh ghi dữ liệu DX (Data):
DX dùng để định địa chỉ gián tiếp trong các thao tác vào ra, nĩ cũng cịn được sử
dụng chứa tốn hạn, kết quả trong phép nhân và chia.

Thanh ghi con trỏ và chỉ số:
Các thanh ghi SP, BP, SI, DI thường trỏ tới các ơ nhớ (tức là chức các địa chỉ
offset của các ơ nhớ đĩ). Khác với thanh ghi đoạn, các thanh ghi con trỏ và ngăn xếp
được sử dụng trong các thao tác số học và một số thao tác khác nhau.

Thanh ghi con trỏ – ngăn xếp SP (Stack Pointer):
Di chuyển từ địa chỉ cao đến địa chỉ thấp, dùng để kết hợp với thanh ghi đoạn
Stack SS (Stack Segment) để lưu trữ địa chỉ trở về hoặc dữ liệu vào trong ngăn xếp.

Thanh ghi con trỏ cơ sở BP (Base Pointer):
Thanh ghi này được dùng để truy cập dữ liệu trong ngăn xếp mà khơng làm thay
đổi SP. Tuy nhiên, khác với SP thanh ghi BP cũng cịn được sử dụng đễ truy cập dữ
liệu ở các đoạn khác.

Thanh ghi chỉ số nguồn SI (Source Index):
Thanh ghi SI được sử dụng để trỏ tới các ơ nhớ trong đoạn dữ liệu được định bởi
thanh ghi đoạn dữ liệu DS (Data Segment), cĩ thể truy cập dễ dàng các ơ nhớ liên tiếp
bằng cách tăng SI.

Thanh ghi chỉ số đích DI (Destination Index):
Thanh ghi DI cĩ chức năng tương tự như thanh ghi SI và được dùng kết hợp với
thanh ghi đoạn thêm ES (Extra Segment). Cả hai DI và SI thích hợp trong các thao tác
sao chép, di chuyển hoặc so sánh các khối dữ liệu cĩ dung lượng đến 64KB.
 Thanh ghi con trỏ lệnh IP (Intruction Pointer):
8086 khơng thực hiện lệnh trực tiếp trong bộ nhớ mà lệnh được lấy ở hàng đợi
lệnh cĩ cấu tạo giống như một thanh ghi dịch (FIFO: First In First Out: vào trước ra
trước) chứa các mã lệnh cung cấp bởi khối BIU. Thanh ghi IP chỉ đến lệnh tiếp theo
chưa được nhập vào hàng đợi lệnh và được dùng kết hợp với thanh ghi CS. Thanh ghi
IP được cập nhật mỗi khi cĩ một lệnh được thực hiện xong, khác với các thanh ghi
khác, IP khơng bị tác động trực tiếp bởi các lệnh.
Page 6 of 108

Luaän vaên toát nghieäp

trang7


Thanh ghi cờ (Flag Register):
Thanh ghi cờ của 8086 cĩ độ dài 16bit (2byte) byte thấp chứa các bit trạng thái
giống như trong 8085 phản ánh trạng thái của vi xử lý, byte cao chứa 1bit trạng thái đĩ
là bit 11 và 3 bit điều khiển dùng để điều khiển hoạt động của vi xử lý. Sau đây là cấu
tạo của thanh ghi cờ trong 8086:
15
8 7
0
O D I T S Z
A
P
C
Thanh ghi cờ của 8086:
C: carry flag.
P: parity flag.
A: auxiliary flag.
Z: zero flag.
S: sign flag.
T: trap flag.
I: interrupt enable flag.
D: direction flag.
O: overflow flag.
+ Cờ nhớ CF:
Cờ nhớ CF được thiết lập khi cĩ số nhớ từ bit MSB. Trong phép cộng hoặc số
thiếu trong phép trừ (MSB trong các lệnh byte là bit 7 và trong các lệnh word là bit 15)
cờ CF cũng bị ảnh hưởng bởi các lệnh quay và dịch.
+ Cờ chẳn lẻ PF:
Sau các lệnh số học hoặc logic đối với các lệnh byte nếu số lượng số „1‟ trong
byte kết quả là chẳn thì cờ PF được thiết lập là „1‟ ngược lại là „0‟nếu là lẻ, đối với các
lệnh word chỉ xét các byte thấp.
+ Cờ nhớ phụ AF:
Cờ nhớ phụ được thiết lập nếu cĩ nhớ (cộng) hoặc cĩ thiếu (trừ) từ phân nửa dưới
đến phân nửa trên của tốn hạn (đối với lệnh byte đĩ là bit 3 và đối với lệnh word là bit
7) cờ AF được sử dụng trong các thao tác với số BCD.
+ Cờ zero ZF:
Cờ zero được thiết lập khi kết quả bằng 0.
+ Cờ dấu SF:
Cờ dấu là „1‟ khi bit MSB của kết quả bằng „1‟ tức là số âm, đối với lệnh byte
MSB là bit 7 và trong lệnh word là bit 15.
+ Cờ bẫy TF:
Tạo khả năng thực hiện chương trình theo từng bước, khi TF bằng „1‟ 8086 phát
sinh ngắt loại 1 (ngắt cứng). Chương trình DEBUG sử dụng khi thi hành lệnh T (trace)
để chạy từng bước một lệnh. Đầu tiên DEBUG thiết lập cờ TF rồi mới chuyển điều
khiển cho lệnh đĩ. Sau khi lệnh được thi hành vi xử lý sẽ phát sinh một ngắt do TF
được lập DEBUG sử dụng chính phục vụ ngắt này để lấy quyền điều khiển từ vi xử lý.
+ Cờ ngắt IF:
Cờ ngắt được sử dụng để điều khiển các ngắt phần cứng bên ngồi, nếu cờ này
được thiết lập các ngắt phần cứng cĩ thể ngắt 8086. Khi xĩa IF, các ngắt bên ngồi
khơng cịn tác dụng nữa (bị che). Thực ra vẫn cịn một ngắt cứng khơng che được NMI
(Non Maskable Interrupt).

Page 7 of 108

Luaän vaên toát nghieäp

trang8

Trước khi vi xử lý trao quyền điều khiển cho một phục ngắt nĩ xĩa cả IF và TF,
như vậy phục ngắt đĩ sẽ khơng bị ngắt. Tất nhiên một phục vụ ngắt cĩ thể đổi cờ để
cho phép ngắt khi nĩ đang thi hành.
+ Cờ tràn OF:
Cờ tràn là „1‟ khi cĩ hiện tượng tràn và ngược lại nĩ bằng „0‟. Hiện tượng tràn cho
thấy một sự thật là phạm vi biểu diễn các số trong máy tính là cĩ giới hạn.
Phạm vi biểu diễn các số cĩ dấu trong một word từ –32768 đến +32767 và trong
một byte từ –126 đến +127.
Đối với các số khơng dấu từ 0 đến 65535 cho một word và từ 0 đến 255 cho một
byte. Nếu kết quả của một phép tính vượt ra ngồi phạm vi này thì hiện tượng tràn sẽ
xảy ra và kết quả nhận được bị cắt bớt sẽ khơng phải là kết quả đúng.
+ Cờ điều khiển DF:
Là một trong ba cờ điều khiển dùng điều khiển các thao tác của vi xử lý cơng
dụng của DF là dịch hướng cho các thao tác chuỗi, các thao tác này được thực hiện bởi
hai thanh ghi chỉ số SI & DI, nội dung của hai thanh ghi này sẽ tự động tăng lên khi
DF = 0 và giảm xuống khi DF =1.
2). Khối giao tiếp (BIU):
Khối giao tiếp làm đơn giản việc liên lạc giữa EU và bộ nhớ hoặc các vi mạch
vào ra. Nĩ cĩ nhiệm vụ gởi các địa chỉ, số liệu và tín hiệu điều khiển vào các bus, BIU
& EU liên hệ với nhau bằng các bus nội bộ, khi EU đang thi hành một lệnh, BIU nạp 6
byte mã lệnh tiếp theo vào và đặt chúng vào hàng đợi lệnh, mục đích của việc này là
làm tăng tốc độ của vi xử lý. Nếu EU cần liên lạc với bộ nhớ hay thiết bị ngoại vi, BIU
sẽ treo các lệnh nhận trước và thực hiện thực hiện các thao tác cần thiết. BIU cấu tạo
gồm các thanh ghi đoạn và con trỏ lệnh dùng để chứa địa chỉ các ơ nhớ.
a). Các thanh ghi đoạn:
Được dùng để lưu trữ địa chỉ của các lệnh và dữ liệu trong bộ nhớ, vi xử lý dựa
trên các giá trị này để truy cập bộ nhớ.
Bộ nhớ là tập hợp các byte ơ nhớ, mỗi byte cĩ một địa chỉ xác định bắt đầu từ 0.
8086 gán cho mỗi ơ nhớ một địa chỉ vật lý 20 bit. Như vậy, nĩ cĩ thể định địa chỉ đến
220 byte (tương đương 1MB) ơ nhớ, các byte đầu tiên của bộ nhớ cĩ địa chỉ như sau:
0000
0000 0000 0000 0000
0000
0000 0000 0000 0001
0000
0000 0000 0000 0010
0000
0000 0000 0000 0011
0000
0000 0000 0000 0100
Để đơn giản, các địa chỉ trên thường được biểu diễn bằng số thập lục phân như
sau:
00000H
00001H
00002H
………… H
và cứ tiếp tục cho đến giá trị lớn nhất là FFFFFH
Do các địa chỉ quá lớn (20 bit) khơng thể chứa trong một thanh ghi của 8086 (16
bit) nên 8086 chia bộ nhớ thành các đoạn bộ nhớ (Memory Segment).

Page 8 of 108

Luaän vaên toát nghieäp

trang9

Một đoạn bộ nhớ là một khối gồm 216 (64K) ơ nhớ liên tiếp nhau, mỗi đoạn được
xác định bằng một địa chỉ đoạn bắt đầu từ địa chỉ 0, địa chỉ đoạn là một số 16 bit nên
địa chỉ đoạn lớn nhất là FFFF. Bên trong mỗi đoạn số ơ nhớ được xác định bằng địa
chỉ tương đối (offset), đĩ là số byte tính từ đầu đoạn, với một đoạn 64K thì offset cũng
là một số 16 bit, byte đầu tiên trong đoạn cĩ offset bằng 0 và byte cuối cùng bằng
FFFF.
Một ơ nhớ cĩ thể được xác định bằng địa chỉ đoạn:địa chỉ tương đối trong đoạn
(segment:offset) và được gọi là địa chỉ logic.
Thí dụ: ơ nhớ A4FB:4872 cĩ địa chỉ đoạn là A4FB và địa chỉ offset là 4872. Để
tìm địa chỉ vật lý của ơ nhớ trước tiên ta dịch địa chỉ đoạn về bên trái 4 bit và sau đĩ
cộng với địa chỉ offset, như vậy địa chỉ vật lý của ơ nhớ A4FB:4872 được tính như
sau:
A4FB0
4872
A9822
b). Sắp xếp đoạn:
Trong bộ nhớ đoạn 0 bắt đầu từ địa chỉ 0000:0000 = 00000 và kết thúc ở
0000:FFFF = 0FFFF, đoạn 1 bắt đầu từ địa chỉ 0001:0000 = 00010 và kết thúc ở địa
chỉ 0001:FFFF = 1000F. Như vậy, cĩ rất nhiều sự chồng nhau giữa các đoạn. Các đoạn
bắt đầu từ các địa chỉ cách nhau 16byte và địa chỉ đầu của mỗi đoạn luơn kết thúc
bằng các số 0. 16byte được gọi là một khúc (Paragraph), các địa chỉ chia hết cho 16
(các địa chỉ kết thúc bằng 0) là các biên giới khúc (Paragraph Boundary)
c). Các đoạn của chƣơng trình:
Mỗi đoạn chương trình ngơn ngữ máy bao gồm các lệnh và dữ liệu, cịn một vùng
đặc biệt trong RAM gọi là ngăn xếp (stack). Mã lệnh, dữ liệu và ngăn xếp của chương
trình được nạp vào các đoạn bộ nhớ khác nhau đĩ là đoạn mã (code segment), đoạn dữ
liệu (data segment), đoạn ngăn xếp (stack segment).
Để theo dõi các đoạn khác nhau của chương trình 8086 được cung cấp 4 thanh
ghi đoạn để chứa các địa chỉ đoạn, các thanh ghi CS, DS, SS lần lược chứa các địa chỉ
đoạn mã, đoạn dữ liệu, và đoạn ngăn xếp. Nếu chương trình muốn truy cập đến một dữ
liệu thứ hai nĩ cĩ thể sử dụng thanh ghi đoạn thêm ES (extra segment).
Một chương trình khơng phải bao giờ cũng cần chiếm hết một đoạn 64KB, do
đặc điểm chồng nhau giữa các đoạn cho phép các đoạn của một chương trình nhỏ hơn
64KB cĩ thể đặt gần lại với nhau. Tại một thời điểm, chỉ cĩ các ơ nhớ được định địa chỉ
bởi 4 thanh ghi đoạn mới cĩ thể truy cập, nghĩa là chỉ cĩ 4 đoạn bộ nhớ là tác động. Tuy
nhiên nội dung của các thanh ghi đoạn cĩ thể thay đổi bởi chương trình để truy cập đến
các đoạn khác nhau.
d). Hàng đợi lệnh:
Như ta đã biết, để tăng tốc độ vi xử lý, khối BIU tiếp nhận các lệnh và đưa vào
hàng đợi lệnh (Queue) trong khi đĩ khối EU đang thi hành lệnh. Hàng đợi lệnh cĩ thể
nhận 6 byte mã lệnh, các lệnh của 8086 cĩ độ dài từ 1 đến 6 byte, nếu lệnh chưa vào
đầy đủ trong hàng đợi lệnh thì khối EU sẽ chờ cho đến khi lệnh nạp hết vào hàng đợi
lệnh.
II. CHỨC NĂNG CỦA 8086:
1). Sơ đồ chân của 8086:

Page 9 of 108

Luaän vaên toát nghieäp

trang10

8086 là vi xử lý 16 bit nĩ gồm 16 đường dữ liệu và 20 đường địa chỉ, các đường
dữ liệu từ D0 đến D15 và các đường địa chỉ từ A0 đến A15 hoạt động theo phương pháp
đa lộ thời gian.
8086 cĩ thể làm việc ở hai chế độ:
Chế dộ Minimum.
Chế độ Maximum.
Trong chế độ minimum, 8086 điều khiển các thiết bị bằng các tín hiệu điều khiển
của chính nĩ, trong chế độ này hỗ trợ bộ xử lý tốn học 8087.
Trong chế độ maximum cần thiết phải kết hợp với vi mạch điều khiển bus 8288
để tạo ra các tín hiệu đọc – ghi cho bộ nhớ và các thiết bị ngoại vi và chế độ này cho
phép làm việc với 8087.

Sau đây là sơ đồ chân của 8086 ở cả hai chế độ minimum và maximum:
GND

1

40

Vcc

AD14

2

39

AD15

AD13

3

38

A16/S3

AD12

4

37

A17/S4

AD11

5

36

A18/S5

AD10

6

35

A17/S6

AD9

7

34

BHE/S7

33

MN/MX

32

RD

31

HOLD

(RQ/GT0)

30

HLDA

(RQ/GT1)

8086
CPU

AD8

8

AD7

9

AD6

10

AD5

11

AD4

12

29

WR

(LOCK)

AD3

13

28

M/IO

(S2)

AD2

14

27

DT/R

(S1)

AD1

15

26

DEN

(S0)

AD0

16

25

ALE

(QS0)

NMI

17

24

INTA

(QS1)

INTR

18

23

TEST

CLK

19

22

READY

GND

20

21

RESET

Hình 1.2: Sô ñoà chaân 8086

2). Chức năng của các chân của 8086:
 Vcc = 5V
Điện áp nuơi là 5V DC, dung sai cho phép là 10%.
 GND = 0V
Các đường mass nên cĩ điện trở càng nhỏ càng tốt.
 CLK = clock (input)
Xung đồng hồ đưa vào chân này là khơng đối xứng và cĩ tỷ lệ là ½ (High/Low).
 INTR- Interrupt Request (input):
Mức cao ở ngõ này báo cho 8086 biết cĩ một yêu cầu ngắt (thuờng được gởi tới
từ vi mạch xử lý ngắt 8259), tín hiệu ngắt tại chân này cĩ thể bị che bằng phần mềm.
Page 10 of 108

Luaän vaên toát nghieäp

trang11

Khi vi xử lý chấp nhận yêu cầu ngắt, nĩ sẽ đưa ra một chu kỳ chấp nhận ngắt và vi
mạch xử lý ngắt phải gởi địa chỉ của ngắt lên bus dữ liệu tương ứng với chu kỳ thứ hai.
 NMI (Non Maskable Interrupt):
Đây là ngắt khơng che được, tác động ở mức cao vi xử lý nhảy đến địa chỉ ngắt
số 2 trong bảng vector ngắt và khơng tạo ra chu kỳ chấp nhận ngắt.
 Reset (input):
Ngõ vào mức cao đặt vi xử lý về trạng thái ban đầu sau ít nhất 4 chu kỳ đồng hồ.
Thanh ghi CS được đặt giá trị FFFF và thanh ghi IP được đặt giá trị 0000. Như vậy chỉ
thị được thực hiện đầu tiên chứa ở ơ nhớ FFFF0 quá trình chuyển tiếp từ mức cao
xuống mức thấp được đồng bộ bởi chu kỳ đồng bộ từ vi mạch tạo xung đồng hồ 8284.
 Ready (input):
Tín hiệu báo đã hồn tất thao tác truyền dữ liệu của bộ nhớ hoặc thiết bị vào – ra,
tác động ở mức cao, vi xử lý sẽ đợi nếu tín hiệu này ở mức thấp.
 AD0… AD15 - Address/Data bus (input/output):
Giống như trong 8085, các đường địa chỉ - dữ liệu này làm việc theo nguyên tắc
đa lộ thời gian, là địa chỉ trong chu kỳ T1 và là dữ liệu trong chu kỳ T2, T3, Tw, T4, tác
động ở mức cao, cĩ cấu tạo ba trạng thái và ở trạng thái tổng trở cao trong lúc vi xử lý
„Interrup acknowlegde‟ và „Hodl acknowleagde‟
 A16/S3 …… A19/S6 – Addres/Status (output):
Trong chu kỳ T1 là 4 bit địa chỉ cao khi thao tác với bộ nhớ, trong lúc thao tác
với thiết bị vào-ra chân này cĩ gía trị thấp. Trong cả hai thao tác cũng như vào – ra các
bit này là trạng thái trong các chu kỳ T2, T3, Tw, T4. Trạng thái bit cao cho phép ngắt,
S5 được cập nhật tại mỗi thời điễm bắt đầu của mỗi chu kỳ đồng hồ. S3 & S4 cho biết
thanh ghi đoạn đang được sử dụng, thơng tin này cần thiết cho Co-processor xác định
vị trí của tốn hạng. Cĩ cấu tạo ba trạng thái và trạng thái tổng trở cao khi vi xử lý „Hold
acknowlegde‟.
S3
S4
Thanh ghi đoạn được chọn
0
0
Thanh ghi đoạn thêm.
0
1
Thanh ghi đoạn ngăn xếp.
1
0
Thanh ghi đoạn lệnh.
1
1
Thanh ghi đoạn dữ liệu .
Hai bit S3 & S4 để chọn các thanh ghi đoạn.
 BHE/S7 – Bus high enable / status (output):
Kết hợp với bit địa chỉ A0 để xác định chế độ truyền dữ liệu, BHE ở mức thấp
trong chu kỳT1 của các thao tác đọc – ghi và chấp nhận ngắt khi một byte được truyền
trong byte cao của bus dữ liệu. S7 cĩ hiệu lực trong các chu kỳ T2, T3 & T4, cấu tạo ba
trạng thái và trạng thái tổng trở cao khi vi xử lý ở chế độ „Hold‟.
BHE A0
Kiểu truyền dữ liệu
0
0
Truy xuất 16 bit
0
1
Truy xuất byte cao từ địa chỉ lẻ
1
0
Truy xuất byte thấp địa chỉ chẵn.
1
1
Không sử dụng .
Các kiểu truy xuất dữ liệu.
 RD – Read (output):

Page 11 of 108

Luaän vaên toát nghieäp

trang12

Tín hiệu ra điều khiển việc đọc bộ nhớ hoặc khối vào ra phụ thuộc vào bit trạng
thái S2, mức thấp tại T2, T3 và Tw trong mỗi chu kỳ đọc, cấu tạo ba trạng thái và tổng
trở cao khi vi xử lý ở chế độ „Hold acknowlegde‟.

 Test (input):
Tín hiệu vào được kiễm tra bởi lệnh „WAIT‟ vi xử lý sẽ khơng làm gì cả khi điện
áp chân này cĩ giá trị thấp, đồng bộ tại cạnh lên của mỗi xung đồng hồ.
 MN-MX – Minimum-Maximum (input):
Chân chọn chế độ làm việc của 8086, chế độ làm việc là minimum tương ứng với
mức cao và chế độ làm việc là maximum ứng với mức thấp. Bus điều khiển ở hai chế
độ cĩ chức năng khác nhau.
 M/IO (output):
Ngỏ ra trạng thái giống như bit S0 ở chế độ maximum dùng để báo vị trí đang
truy xuất dữ liệu. Mức cao là bộ nhớ và mức thấp là khối vào-ra. Cấu tạo ba trạng thái,
tổng trở cao khi vi xử lý ở chế độ „Hold acknowlegde‟.
 WR – write (output):
Tín hiệu ra điều khiển thao tác ghi vào bộ nhớ hoặc khối vào-ra tùy theo giá trị
của ngõ M/IO. Tác động mức thấp ở T2, T3 và Tw của mỗi chu kỳ ghi, cấu tạo ba trạng
thái và trạng thái tổng trở cao khi vi xử lý ở chế độ „Hold acknowlegde‟.
 INTRA – Interrup Acknowlegde (output):
Tín hiệu chấp thuận ngắt, tác động mức thấp tại T2, T3 và Tw dùng để đưa địa chỉ
của ngắt lên bus dữ liệu.
 ALE – Adress Latch Enable
Tín hiệu điều khiển chốt địa chỉ 74LS373 hoặc 8282/8283 tác động mức cao
trong khoảng T1 của mỗi chu kỳ bus :
+ Khi ALE = 1 các bit AD0 … AD15 là địa chỉ.
 Hold (input):
Tín hiệu vào cho biết một linh kiện địi quyền sử dụng bus, tác động ở mức cao.
 HLDA – Hold acknowlegde (output):
Tín hiệu ra ở mức cao cho biết yêu cầu Hold được chấp thuận, vi xử lý sẽ treo
bus nội bộ và các đường điều khiển của nĩ ở trạng thái tổng trở cao.
 DT/R – Data Transmit/Receive (output):
Tín hiệu ra dùng để điều khiển hướng truyền dữ liệu của vi mạch thu - phát. Cấu
tạo ba trạng thái và trạng thái tổng trở cao khi vi xử lý ở chế độ „Hold acknowlegde‟.
 DEN – Data enable (output):
Tín hiệu ra ở mức thấp cho mỗi chu kỳ thao tác bộ nhớ và I/O và cả INTRA điều
khiển ngõ ra cho phép của 8286/8287 trong hoạt động thu – phát dữ liệu. Cấu tạo ba
trạng thái, trạng thái tổng trở cao khi vi xử lý ở chế độ „Hold acknowlegde‟.
 S0, S1, S2 (thơng tin trạng thái):
Vi mạch 8288 dựa trên các thơng tin này để thực hiện các thao tác điều khiển.
Cấu tạo ba trạng thái, trạng thái tổng trở cao khi „Hold acknowlegde‟. Tác động trong
các chu kỳ T4, T1 & T2 và trở về trạng thái thụ động ở T3 hoặc Tw khi Ready ở mức
cao. Một sự thay đổi bất kỳ của tín hiệu này trong chu kỳ T4 được dùng để đánh dấu

Page 12 of 108

Luaän vaên toát nghieäp

trang13

thời điểm bắt đầu của chu kỳ bus và trở về thụ động ở trong T3 hoặc Tw xác định điểm
kết thúc của chu kỳ bus.
S2
0
0
0
0
1
1
1
1

S1
0
0
1
1
0
0
1
1

S0
0
1
0
1
0
1
0
1

Thông tin điều khiển
Chấp nhận ngắt.
Đọc từ cổng.
Viết ra cổng
Dừng.
Nhập mã lệnh.
Đọc từ bộ nhớ.
Viết ra bộ nhớ.
Thụ động.

 RQ/GT0, RQ/GT1 – Request/Gram (input/output):
Hai tín hiệu yêu cầu vi xử lý nhường quyền sử dụng bus, tín hiệu RQ/GT 0 cĩ mức
ưu tiên cao hơn. Nguyên lý hoạt động được mơ tả như sau:
+ Một xung cĩ bề rộng một chu kỳ đồng hồ cho biết một linh kiện cần sử dụng
bus.
+ Trong chu kỳ đồng hồ T4 hoặc T1 vi xử lý gởi đến linh kiện đĩ xung cĩ bề rộng
chu kỳ đồng hồ cho biết vi xử lý chấp nhận nhường quyền sử dụng bus và nĩ sẽ tiến
vào trạng thái „Hold acknowlegde‟ sau xung đồng hồ kế tiếp để treo bus của chính nĩ.
+ Xung bề rộng chu kỳ đồng hồ được gởi đến 8086 cho biết quá trình „Hold‟ kết
thúc và vi xử lý trở lại quản lý bus xau khi chấm dứt chu kỳ đồng hồ kế tiếp. Nếu yêu
cầu này xảy ra trong khi vi xử lý đang truy xuất bộ nhớ, nĩ sẽ treo bus trong khoảngT 4
nếu thỏa những diều kiện sau đây:
- Yêu cầu xảy ra trong khi hoặc trư-ùc T2.
- Chu kỳ hiện hành khơng phải là byte thấp của word (ở địa chỉ lẻ).
- Chu kỳ hiện hành khơng ở trạng thái chấp nhận ngắt.
- Khơng cĩ chỉ thị khĩa.
Nếu bus khơng bận khi cĩ yêu cầu thì cĩ hai trường hợp sẽ xảy ra.
- Bus sẽ treo ở chu kỳ đồng hồ kế tiếp.
- Một chu bộ nhớ sẽ khởi động trong vịng 3 chu kỳ đồng hồ.
 Clock (output):
Mức cao báo cho các linh kiện ngồi biết (Co-processor) rằng chu kỳ bus tiếp theo
khơng được phép gián đoạn, điều này xảy ra khi trong chương trình cĩ chỉ thị „Clock‟.
Cấu tạo ngõ ra ba trạng thái, trạng thái tổng trở cao khi vi xử lý ở chế độ „Hold
acknowlegde‟
 QS1, QS0 – Queue status (output):
Ngõ ra cho biết trạng thái của hàng đợi lệnh, những thơng tin này cần thiết cho
Co-processor.
QS0
0
0
1
1
Page 13 of 108

QS1
0
1
0
1

Trạng thái hàng đợi lệnh
Không hoạt động .
Xóa nội dung hàng đợi kệnh.
Nạp byte mã lệnh đầu tiên vào thanh ghi lệnh.
Nạp byte mã lệnh tiếp theo của lệnh nhiều byte

Luaän vaên toát nghieäp

MN/ MX
M/ IO

+Vcc

CLK
RES

828
4RDY
Wait
State
Genarator

trang14

Vcc

INTA

RD
READY
WR
RESET
DT/ R
DEN
STB
ALE
OE
8086 CPU GND
AD0AD15
ADDR/DATA 73LS373
A16A19
OCTAL
LATCH
BHE

ÑÒA CHÆ

T
OE

DÖÕ LIEÄU

8286
Transceiver
BHE

CSO H CSO L WE OD

RAM

CE

OE

ROM

Hình 1.3: Moâ phoûng keát noái heä thoáng vi xöû lyù 8086

- Ở hai chế độ nêu trên tơi thực hiện chỉ nghiên cứu chế độ minimum.

Page 14 of 108

CS

RD WR

PERIPHERAL

Luaän vaên toát nghieäp
3).

trang15

Giản đồ thời gian của chu kỳ bus:
Moät chu kyø bus
T1

T2

T3

T4

CLK

ALE
M/IO
Ñòa chæ/traïng thaùi
AD0  AD15

A16  A19 BHE
A0  A15

“Noåi”

Döõ lieäu vaøo
D0 D15

RD

“Noåi”

Chu kyø
ñoïc

DT/R
DEN

AD0  AD15

A0 A15

D0  D15

WR
Chu kyø
ghi
DT/R
DEN

Hình 1.4: Giaûn ñoà thôøi gian ñoïc vaø ghi cuûa P8086

Page 15 of 108

Luaän vaên toát nghieäp

trang16

a). Giải thích giản đồ thời gian đọc và ghi:
+ Ở chu kỳ T1:
Trong chu kỳ này địa chỉ của bộ nhớ hay thiết bị ngoại vi đưa ra trên các đường
địa chỉ hoặc địa chỉ dữ liệu và địa chỉ trạng thái. Các tín hiệu điều khiển ALE, DT/R,
M/IO cũng được đưa ra để giúp hồn tất việc giữ thơng tin địa chỉ này.
+ Ở chu kỳ T2:
Trong chu kỳ này CPU đưa ra các tín hiệu điều khiển RD hoặc WR, DEN và tín
hiệu dữ liệu trên D0  D15 nếu là lệnh ghi. DEN thường dùng để mở các bộ đệm của
bus dữ liệu nếu chúng được dùng trong hệ thống. Tại cuối chu kỳ T 2 CPU lấy mẫu tín
hiệu Ready để xử lý trong chu kỳ tiếp theo khi nĩ phải làm việc với bộ nhớ, thiết bị
ngoại vi chậm.
+ Ở chu kỳ T3:
Trong chu kỳ này CPU dàng thời gian cho bộ nhớ hay thiết bị ngoại vi truy cập
dữ liệu. Nếu là chu kỳ đọc dữ liệu thì tại cuối T3 CPU sẽ lấy mẫu tín hiệu của bus dữ
liệu. Nếu tại cuối chu kỳ T2 mà CPU phát hiện ra tín hiệu Ready = 0 thì CPU tự xen
vào T3 một chu kỳ T để tạo chu kỳ đợi Tw = n * T nhằm kéo dài thời gian để thực hiện
lệnh, tạo điều kiện cho bộ nhớ và thiết bị ngoại vi chậm cĩ đủ thời gian hồn tất cơng
việc đọc-ghi dữ liệu.
+ Ở chu kỳ T4:
Trong chu kỳ này các tín hiệu trên bus được giải hoạt (đưa về trạng thái khơng
tích cực) để chuẩn bị cho chu kỳ bus mới. Tín hiệu WR trong khi chuyển trạng thái từ
„0‟ lên „1‟ sẽ kích họat trạng thái ghi vào bộ nhớ hay thiết bị ngoại vi.
b). Nguyên tắc thực hiện chƣơng trình của vi xử lý 8086:
Các chỉ thị của 8086 cĩ độ dài 1 byte đến 6 byte, từng chỉ thị được khối thực hiện
lấy ra từ hàng đợi lệnh sau đĩ giải mã và thực hiện. Các mã lệnh khác tiếp theo lại
được nạp vào hàng đợi lệnh bởi khối BIU:
Bus Interface unit
CS
DS
SS
ES

Boä nhôù

2890
0000
0000
0000

IP
0106

+
BB

00

02

6B

07

43

Hình 1.5: Quaù trình naïp haøng ñôïi leänh cuûa BIU

Page 16 of 108

28A00
1
2
3
4
5
28A06
7

BB
00
02
8B
07
43
03
07

Luaän vaên toát nghieäp

trang17

c). Truy xuất bộ nhớ và sự sắp xếp các đoạn:
8086 cĩ thể quản lý đến 1MB bộ nhớ, để đánh địa chỉ được 1MB (1.048.576
byte) cần phải cĩ 20 đường địa chỉ. BIU xác định địa chỉ vật lý này bằng cách cộng địa
chỉ segment với địa chỉ offset. Trước tiên nhân địa chỉ segment với 16 (vì dịch sang
trái 4bit) và sau đĩ cộng với offset, tổng số nhận được chính là địa chỉ vật lý của ơ nhớ
và sẽ được đưa vào bus địa chỉ.
EU
AX
BX
CX
DX

00
12
00
00

BIU
0000
3400
0000
0000

00
80
00
00

1280

Boä nhôù
CS
DS
SS
ES

3400

+

35280
8B 07

35280 34
1
12

Hình 1.6: Truy xuaát döõ lieäu trong boä nhôù

Địa chỉ offset được lấy ra từ một thanh ghi của khối EU (thanh ghi dữ liệu, chỉ số
hoặc bộ đếm lệnh). Thanh ghi này được BIU sắp xếp cố định thành từng cặp. Hình
trên sẽ mơ tả việc sắp xếp các thanh ghi để xác định địa chỉ vật lý.
Thanh ghi ñoaïn
Ñoaïn leänh (CS)
Ñoaïn ngaên xeáp (SS)
Ñoaïn döõ lieäu (DS)
Ñoaïn theâm (ES)

IP

Thanh ghi
offset

SP, BP
BX, SI, DI hoaëc haèng soá

Hình 1.7: Saép xeáp DI
caùc(trong
thanhcaù
ghi
ñoaï
c leä
nhnchuoåi)

Page 17 of 108

Luaän vaên toát nghieäp

Chƣơng II

trang18

KHẢO SÁT TỔNG QUÁT

TẬP LỆNH VI XỬ LÝ 8086
___ oOo ___
I.

CẤU TRÚC LỆNH:

Vi xử lý 8086 cĩ nhiều phương pháp định địa chỉ và cũng cĩ nhiều khả năng kết
hợp các phương pháp đĩ lại với nhau. Tuy nhiên, một lệnh chỉ cần 6 byte để mã hĩa, và
byte bắt đầu là mã cơng tác (Operations code), byte tiếp theo chứa kiểu địa chỉ và tiếp
theo đĩ cĩ thể là một hoặc hai byte dùng để chứa địa chỉ. Các byte cuối cùng gồm một
hoặc hai chứa tốn hạng 8 hoặc 16 bit.
Thực tế để biểu diển dạng thức các byte dùng để mã hĩa lệnh Mov. Ta thấy rằng
để mã hĩa lệnh Mov ta phải cần ít nhất là hai byte, trong đĩ 6 bit của byte đầu dùng để
chứa mã lệnh. Đối với lệnh Mov để chuyển dữ liệu kiểu:
- Thanh ghi  thanh ghi
Tröø thanh ghi ñoaïn
- Bộ nhớ  thanh ghi
Thì bit đầu (opcode) này luơn là „100010‟ (đối với thanh ghi đoạn thì khác).
Đối với bit „D‟ dùng để chỉ hướng đi của dữ liệu.
D = 0 thì dữ liệu đi từ thanh ghi cho bởi 3 bit của REG.
D = 1 dữ liệu đi đến thanh ghi cho bởi 3 bit REG.
Đối với bit W dùng để chỉ rằng một byte (W = 0) hoặc một từ (W = 1) sẽ được
chuyển.
Byte1
1 0 0 0 1 0
Opcode D W Mod

Byte 2
R
EG

Byte 3

M
/R

Byte 4

DispL

DispH
hoaëc

Ñòa chæ tröïc tieáp phaàn
thaáp

Ñòa chæ tröïc tieáp
phaàn cao

Disp: displacement (dịch chuyển)
II. CÁC PHƢƠNG PHÁP ĐỊNH ĐỊA CHỈ CỦA VI XỬ LÝ 8086:
Phương pháp định địa chỉ (Addressing Mode) là cách để CPU tìm thấy tốn hạng
cho các lệnh của nĩ khi hoạt động. Một bộ vi xử lý cĩ thể cĩ nhiều chế độ định địa chỉ.
Các chế độ định địa chỉ này được xác định ngay từ khi chế tạo ra bộ vi xử lý và
sau này người ta lấy đĩ để làm chuẩn mà khơng thay đổi.
Ngồi các phương pháp định địa chỉ: tức thời, trực tiếp, gián tiếp giống như của
8085, vi xử lý 8086 cịn cĩ thêm các cách định địa chỉ khác và được phân loại như sau:
- Định địa chỉ bằng thanh ghi.
- Định địa chỉ tức thời.
- Định địa chỉ trực tiếp.
- Định địa chỉ gián tiếp.
- Định địa chỉ tương đối.
Bằng cách kết hợp các phương pháp định địa chỉ khác nhau trong một chỉ thị, cĩ
thể tạo ra nhiều khả năng phức tạp để truy xuất tốn hạng (operand) các thiết bị vào – ra
Page 18 of 108

Luaän vaên toát nghieäp

trang19

chỉ được truy cập bằng các phương pháp trực tiếp và gián tiếp. Thứ tự mơ tả byte của
một word được lưu trong bộ nhớ giống như qui định của 8085, cĩ nghĩa là các byte
thấp (LSB) ở địa chỉ thấp và các byte cao (MSB) được đặt ở địa chỉ cao hơn kế cận.
Trong các trình bày sau đây, bộ đếm chương trình PC (Program Counter) chứa
địa chỉ offset của chỉ thị kế tiếp sẽ thực hiện, chỉ thị này đã sẵn sàng trong hàng đợi
lệnh. Con trỏ lệnh IP trỏ đến địa chỉ cao hơn, đĩ là byte tiếp theo sẽ được BIU nhập
vào hàng đợi lệnh.
1). Các phƣơng pháp định địa chỉ thơng dụng:
1.1) Định địa chỉ tức thời:
Trong phương pháp này tốn hạng nguồn chính là dữ liệu cần xử lý của chỉ thị.
Thí dụ: Mov ax, 1200
Mov Ax, 1200

CPU

Boä nhôù

Tröôùc
AX
BX
CX
DX

SP
BP
SI
DI
O D I

FI

CS
DS
SS
ES
T S

2300
0100 B8
00
12

2300

PC 0100

Z

A

P

C

Sau
AX
BX
CX
DX

SP
BP
SI
DI

1200

O

D I

CS
DS
SS
ES
T

2300

PC 0103

0103

S Z

A

P

2300
B8
00
12

C

FI

Hình 2.1 :Phöông phaùp ñònh ñòa chæ töùc thôøi

O D I

T S

Z

A

P

C

1.2). Phƣơng pháp định địa chỉ trực tiếp:
Trong chỉ thị bao gồm địa chỉ offset của tốn hạng, địa chỉ đoạn được quy định là
nội dung của thanh ghi DS.
Thí dụ: Mov ax, [0230]
Mov ax, [0230]

CPU

Boä nhôù

Tröôùc
AX
BX
CX
DX

SP
BP
SI
DI

CS
DS
SS
ES

2300
2780

PC 0100

Page 19 of 108
FI

O D I

T S

Z

A

P

C

2300
010 B8 2080 00
00
12
0
12

Luaän vaên toát nghieäp

Page 20 of 108

trang20

Chủ đề