Luận văn tốt nghiệp trang1
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
Phần 1
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 ngoà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 hoàn thiện hơn.
Luận văn tốt nghiệp trang2
- 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.
Luận văn tốt nghiệp trang3
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
II. 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.
Luận văn tốt nghiệp trang4
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
Bộ vi xử lý thực hiện các lệnh theo các bước sau:
Hàng
đợi
lệnh
Các cờ
AH AL
BH BL
CH CL
DH DL
BP
DI
SI
SP
Luận văn tốt nghiệp trang5
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
- Lấy lệnh từ bộ nhớ.
- Đọc toá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): ¨ Các thanh ghi chỉ số và con trỏ (Index & Pointer Register): ¨ Các thanh ghi đoạn (Segment Register):
Con trỏ Stack (Stack Pointer)
Con trỏ nền (Base Pointer)
Chỉ số nguồn (Source Index)
Chỉ số đích (Destnation Index)
CS
DS
SS
ES
Đoạn mã (Code Segment)
Đoạn dữ liệu (Data Segment)
Đoạn Stack (Stack Segment)
Đoạn thêm (Extra Segment)
IP
Flag
Con trỏ lệnh (Intruction Pointer)
Cờ
Luận văn tốt nghiệp trang6
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
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ó 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 toán đòa chỉ trong phương pháp đònh đòa chỉ
· Thanh ghi con trỏ lệnh IP (Intruction Pointer):
Luận văn tốt nghiệp trang7
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
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.
· 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ờ 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 ngoà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ớ.
Luận văn tốt nghiệp trang9
(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:
Luận văn tốt nghiệp trang10
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌ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ớ
1
2
3
4
5
6
7
8
9
40
39
38
37
36
35
34
33
32
GND
AD
14
AD
13
AD
12
AD
11
5
A
17
/S
6
BHE/S
7
MN/MX
RD
8086
Luận văn tốt nghiệp trang11
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH 2). Chức năng của các chân của 8086
- Address/Data bus (input/output):
Luận văn tốt nghiệp trang12
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
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ỳ T
1
và là dữ liệu trong chu kỳ T
2
, T
3
, T
w
,
T
4
, 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’
· A
16
/S
3
…… A
19
/S
6
– Addres/Status (output):
Trong chu kỳ T
1
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
Thanh ghi đoạn lệnh.
Thanh ghi đoạn dữ liệu .
Hai bit S
3
& S
4
để chọn các thanh ghi đoạn.
· BHE/S
7
– Bus high enable / status (output):
Kết hợp với bit đòa chỉ A
0
để xác đònh chế độ truyền dữ liệu, BHE ở mức thấp
trong chu kỳT
1
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. S
7
có hiệu lực trong các chu kỳ T
2
, T
3
& T
4
,
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
1
Luận văn tốt nghiệp trang13
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
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 S
0
ở 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 ở T
2
, T
3
và T
w
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 T
2
, T
3
và T
w
dùng để đưa đòa
chỉ của ngắt lên bus dữ liệu.
(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ỳ T
4
, T
1
& T
2
và trở về trạng thái thụ động ở T
3
hoặc T
w
khi Ready ở
mức cao. Một sự thay đổi bất kỳ của tín hiệu này trong chu kỳ T
4
được dùng để
đánh dấu thời điểm bắt đầu của chu kỳ bus và trở về thụ động ở trong T
3
hoặc T
w
xác đònh điểm kết thúc của chu kỳ bus.
S
2
S
1
S
0
Dừng.
Nhập mã lệnh.
Đọc từ bộ nhớ.
Viết ra bộ nhớ.
Thụ động.
· RQ/GT
0
, RQ/GT
1
– 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ồ T
4
hoặc T
1
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
0
1
Không hoạt động .
Xóa nội dung hàng đợi kệnh.
Luận văn tốt nghiệp trang15
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
1
1
0
1
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
BHE
Vcc
GND
ADDR/DATA
AD0¸AD15
A16¸A19
8086 CPU
STB
OE
T
OE
73LS373
OCTAL
LATCH
8286
Transceiver
ĐỊA CHỈ
DỮ LIỆU
BHE
H
CSO
L
CSO
WE
OD
CE OE
RAM
Một chu kỳ bus
T1 T2 T3 T4
A16 ¸ A19 BHE
A0 ¸ A15 D0 ¸D15
Dữ liệu vào
+ Ở chu kỳ T
2
:
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 D
0
¸ D
15
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ỳ T
3
:
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 T
3
CPU sẽ lấy mẫu tín hiệu của bus
dữ liệu. Nếu tại cuối chu kỳ T
2
mà CPU phát hiện ra tín hiệu Ready = 0 thì CPU tự
xen vào T
3
một chu kỳ T để tạo chu kỳ đợi T
w
= 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
SS
ES
0 1 0 6
IP
BB 00 02 6B 07 43
BB
00
02
8B
07
43
03
07
28A00
1
2
3
4
5
28A06
7
Bus Interface unit Bộ nhớ
+
Hình 1.5:
Quá trình nạp hàng đợi lệnh của BIU
Luận văn tốt nghiệp trang18
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
c). Truy xuất bộ nhớ và sự sắp xếp các đoạn
:
0 0
1 2
0 0
0 0
0 0
8 0
0 0
0 0
AX
BX
CX
DX
0 0 0 0
3 4 0 0
0 0 0 0
0 0 0 0
CS
DS
Hình 1.7:
Sắp xếp các thanh ghi đoạn
Luận văn tốt nghiệp trang19
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
Chương II
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 toá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
- 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.
Đòa chỉ trực tiếp phần
thấp
Đòa chỉ trực tiếp
phần cao
hoặc
Luận văn tốt nghiệp trang20
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
- Đò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 toán hạng (operand) các thiết bò
vào – ra 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 toán hạng nguồn chính là dữ liệu cần xử lý của chỉ thò.
Thí dụ: Mov ax, 1200
BP
SI
DI
0100
PC O D I T S Z A P C
FI
B8
00
12
CS
DS
SS
ES
2300
B8
00
12 O D I T S Z A P C
FI
AX
BX
CX
DX
SP
AX
BX
CX
DX
SP
BP
SI
DI
0100
PC
2300
1003
PC
Sau
Trước
CPU Bộ nhớ
1200
2300
2300
010
010
Hình 2.2:
Phương pháp đònh đòa chỉ trực tiếp
2780
2780
00
12
00
12
2080
208
Mov ax, [0230]
Luận văn tốt nghiệp trang22
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
1.3). Đònh đòa chỉ gián tiếp:
Trong phương pháp truy xuất gián tiếp các cổng luôn luôn tác động đến thanh
ghi DX, nội dung của DX là đòa chỉ 16 bit của cổng. Số lượng cổng là 64B.
Thí dụ: IN AL, DX
CPU Bộ nhớ
Hình 2.3:
Phương pháp đònh đòa chỉ gián tiếp
Hình 2.4:
Phương pháp đònh đòa chỉ tương đối
AX
BX
CX
DX
SP
BP
SI
DI
0100
PC O D I T S Z A P C
FI
CPU Bộ nhớ
1200
2300
2300
010
010
2780
2780
00
12
00
12
2080
208
0280
0280
AX
BX
CX
DX
SP
BP
SI
DI
0100
PC O D I T S Z A P C
FI
2300
0100
0101
0260
1C
260
I/O
1C
260
I/O
Luận văn tốt nghiệp trang23
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
2).
Khảo sát tổng quát tập lệnh 8086:
Tập lệnh của 8086 gồm 9 nhóm lệnh:
- Nhóm lệnh truyền số liệu.
- Nhóm lệnh số học.
- Nhóm lệnh thao tác chuổi.
- Nhóm lệnh logic.
- Nhóm lệnh xử lý bit.
- Nhóm lệnh điều khiển chương trình.
- Nhóm lệnh ngôn ngữ bậc cao.
- Nhóm lệnh ở chế độ bảo vệ.
- Nhóm lệnh điều khiển các bộ vi xử lý.
Qua những nhóm lệnh giới thiệu trên nhóm thực hiện đề tài chỉ khảo sát những
nhóm lệnh thông dụng nhằm phục vụ cho việc lập trình bằng ngôn ngữ máy.
2.1).
1500 vào BL và ô 1501 vào BH)
Luận văn tốt nghiệp trang24
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
Chú ý:
nếu sử dụng AL hoặc AX trong các lệnh truyền từ thanh ghi vào ô nhớ
và ngược lại sẽ nhận được mã công tác ngắn hơn khi sử dụng các thanh ghi khác.
¨ Truyền tức thời vào thanh ghi:
Mov (Reg), (Data)
Trong lệnh này, dữ liệu được truyền tức thời vào thanh ghi.
Thí dụ:
Mov BL, 20
Giá trò 20 được đưa vào thanh ghi BL.
¨ Truyền tức thời vào bộ nhớ:
Mov (Mem), (Data)
Trong lệnh byte dữ liệu được truyền tức thời vào ô nhớ có đòa chỉ (Mem).
Trong lệnh word dữ liệu được truyền tức thời vào 2 ô nhớ có đòa chỉ (Mem) và
(Mem + 1).
Thí dụ:
Mov [1200], 50
Giá trò 50 được đưa vào ô nhớ có đòa chỉ 1200.
Mov Word PTR [1200], 50
Giá trò Word 0050 được đưa vào 2 ô nhớ bắt đầu tại đòa chỉ 1200, 50 (LSB) vào
đòa chỉ 1200, 00 (MSB) vào đòa chỉ 1201.
- Truy xuất trực tiếp cổng:
IN (Reg), (Port)
Đọc nội dung của cổng vào thanh ghi. thanh ghi sử dụng là AL (dạng byte) và
AX (dạng Word), đòa chỉ cổng là một số 8 bit.
OUT (Reg), (Port)
Xuất nội dung của thanh ghi ra cổng.
- Truy xuất gián tiếp cổng:
ADD (mem), (reg)
ADC (accu), (data)
ADC (mem), (data)
ADC (reg), (data)
ADC (reg1), (reg2)
ADC (reg), (mem)
ADC (mem), (reg)
ADD AX, 1250
ADD Byte PTR [0900],50
ADD BL, 50
ADC AL, AH
ADD CX, [0800]
ADC [0600], DL
·
Phép trừ:
8086 có thể thực hiện phép trừ với 8 bit hoặc 16 bit, lệnh SBB có lưu ý số thiếu
và lệnh SUB không lưu ý số thiếu. Sau đây là bảng liệt kê lệnh trừ dưới dạng gợi
nhớ:
Trừ có số thiếu Trừ không có số thiếu Thí dụ
SUB (accu), (data)
SUB (mem), (data)
SUB (reg), (data)
SUB (reg1), (reg2)
SUB (reg), (mem)
SUB (mem), (reg)
SBB (accu), (data)
SBB (mem), (data)
SBB (reg), (data)
SBB (reg1), (reg2)
SBB (reg), (mem)
Hình 2.5:
Phương pháp đònh đòa chỉ tương đối
AX
BX
CX
DX
SP
BP
SI
DI
0100
PC O D I T S Z A P C
FI
39
08
CS
DS
SS
ES
39
08 O D I T S Z A P C
FI
0246