BÁO CÁO THỰC TẬP-GIỚI THIỆU CHUNG VỀ THIẾT KẾ THI CÔNG - Pdf 27

Luận văn tốt nghiệp trang1
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.
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
Luận văn tốt nghiệp trang2
CHƯƠNG CƠ SỞ LÝ LUẬ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.
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
Luận văn tốt nghiệp trang3
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.
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
Luận văn tốt nghiệp trang4
Chương I CẤU TRÚC BỘ VI XỬ LÝ 8086
___ 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)
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
Hàng đợi
lệnh
Các 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):
♦ Các thanh ghi trạng thái và điều khiển (Status & Control Register):
♦ 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.
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
AHALBHBLCHCLDHDL
AX (Accumulator)
BX (Base)
CX (Count)
DX (Data)
SPBPSIDI Con trỏ Stack (Stack Pointer)
Con trỏ nền (Base Pointer)
Chỉ số nguồn (Source Index)
Chỉ số đích (Destnation Index)
CSDSSSESĐoạn mã (Code Segment)
Đoạn dữ liệu (Data Segment)
Đoạn Stack (Stack Segment)
Đoạn thêm (Extra Segment)
IPFlagCon trỏ lệnh (Intruction 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):
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
Luận văn tốt nghiệp trang7
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.
• 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 808` 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:
1` 8 7 0

+ 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 ngoà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
ngoà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).
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 6``3` cho một word và từ 0 đến 2`` 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

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).
Một đoạn bộ nhớ là một khối gồm 2
16
(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:
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
Luận văn tốt nghiệp trang10
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

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.
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
Luận văn tốt nghiệp trang11
Sau đây là sơ đồ chân của 8086 ở cả hai chế độ minimum và maximum:
2). Chức năng của các chân của 8086:
• Vcc = `V
Điện áp nuôi là `V 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 (thøng được gởi
tới từ vi mạch xử lý ngắt 82`9), tín hiệu ngắt tại chân này có thể bò che bằng phần
mềm. 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ư
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
1
2
3
4

26
2`
24
23
22
21
GND
AD
14
AD
13
AD
12
AD
11
AD
10
AD
9
AD
8
AD
7
AD
6
AD
`
AD
4
AD

BHE/S
7
MN/MX
RD
HOLD (RQ/GT
0
)
HLDA (RQ/GT
1
)
WR (LOCK)
M/IO (S
2
)
DT/R (S
1
)
DEN (S
0
)
ALE (QS
0
)
INTA (QS
1
)
TEST
READY
RESET
8086

/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
các bit này là trạng thái trong các chu kỳ T
2
, T
3
, T
w
, T
4
. Trạng thái bit cao cho phép
ngắt, S
`
được cập nhật tại mỗi thời điễm bắt đầu của mỗi chu kỳ đồng hồ. S
3
& S
4
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 toá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

, 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
1
0
1
0
1
Truy xuất 16 bit
Truy xuất byte cao từ đòa chỉ lẻ
Truy xuất byte thấp đòa chỉ chẵn.
Không sử dụng .
Các kiểu truy xuất dữ liệu.
• RD – Read (output):
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 S
2
, mức thấp tại T
2
, T
3
và T
w

, T
3
và T
w
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 T
1
của mỗi chu kỳ bus :
+ Khi ALE = 1 các bit AD
0
… AD
1`
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’.

S
2
S
1
S
0
Thông tin điều khiển
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0

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 T
2
.
- 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 ngoà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’
• QS
1
, QS
0
– Queue status (output):
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
Luận văn tốt nghiệp trang1`
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.
QS
0
QS

8086 CPU
STB
OE
T
OE
73LS373
OCTAL
LATCH
8286
Transceiver
ĐỊA CHỈ
DỮ LIỆU
BHE
OD

RAM
ROM
PERIPHERAL
Wait
State
Genarator
RDY
CLK
READY
RESET
Hình 1.3: Mô phỏng kết nối hệ thống vi xử lý 8086
Luận văn tốt nghiệp trang16
3). Giản đồ thời gian của chu kỳ bus:
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
Một chu kỳ bus

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 hoàn tất việc giữ thông tin đòa chỉ này.
+ Ở 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
1`
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

8B
07
43
03
07
28A00
1
2
3
4
`
28A06
7
Bus Interface unit
Bộ
nh

+
Hình 1.`: Quá trình nạp hàng đợi lệnh của BIU
Luận văn tốt nghiệp trang18
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.`76
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ỉ.
Đò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ý.
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH

Hình 1.6: Truy xuất dữ liệu trong bộ nhớ
Đoạn lệnh (CS)
Đoạn ngăn xếp (SS)
Đoạn dữ liệu (DS)
Đoạn thêm (ES)
Thanh ghi đoạn
Thanh ghi
offset
IP
SP, BP
BX, SI, DI hoặc hằng số
DI (trong các lệnh chuổi)
Hình 1.7: Sắp xếp các thanh ghi đoạn
Luận văn tốt nghiệp trang19
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.

Đòa chỉ trực tiếp phần cao
hoặc
Luận văn tốt nghiệp trang20
- Đò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 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 808`, 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
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
CPU Bộ nhớ
AX
BX
CX
DX
SP

DS
SS
ES
2300
0103
PC
Sau
Trước
1200
2300
2300
0100
0103
Hình 2.1 :Phương pháp đònh đòa chỉ tức thời
Mov Ax, 1200
Luận văn tốt nghiệp trang21
1.2). Phương pháp đònh đòa chỉ trực tiếp:
Trong chỉ thò bao gồm đòa chỉ offset của toán hạng, đòa chỉ đoạn được quy đònh
là nội dung của thanh ghi DS.
Thí dụ: Mov ax, [0230]
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
AX
BX
CX
DX
SP
BP
SI
DI
0100

1003
PC
Sau
Trước
CPU Bộ nhớ
1200
2300
2300
010
0
010
3
Hình 2.2: Phương pháp đònh đòa chỉ trực tiếp
2780
2780
00
12
00
12
2080
208
0
Mov ax, [0230]
Luận văn tốt nghiệp trang22
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
1.4). Đònh đòa chỉ tương đối:
Trong phương pháp đònh đòa chỉ tương đối, thanh ghi BX hoặc BP chứa đòa chỉ

AX
BX
CX
DX
SP
BP
SI
DI
CS
DS
SS
ES
2300
1002
PC
Sau
Trước
CPU Bộ nhớ
1200
2300
2300
010
0
010
3
2780
2780
00
12
00

DX
SP
BP
SI
DI
CS
DS
SS
ES
2300
0101
PC
Sau
Trước
1200
2300
2300
0100
0101
0260
1C
260
I/O
1C
260
I/O
Luận văn tốt nghiệp trang23
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.

Đối với lệnh byte, nội dung ô nhớ được chép vào thanh ghi. Đối với lệnh
word, nội dung của 2 ô nhớ (Mem) và (Mem + 1) được chép vào thanh ghi.
Thí dụ: Mov BL, [1`00]
Sao chép nội dung ô nhớ tại đòa chỉ 1`00 vào thanh ghi BL.
Mov BX, [1`00]
Sao chép nội dung hai ô nhớ tại đòa chỉ 1`00 và 1`01 vào thanh ghi BX (ô
1`00 vào BL và ô 1`01 vào BH)
GVHD: NGUYỄN ĐÌNH PHÚ SVTH: NGÔ VĂN BÌNH
Luận văn tốt nghiệp trang24
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], `0
Giá trò `0 được đưa vào ô nhớ có đòa chỉ 1200.
Mov Word PTR [1200], `0
Giá trò Word 00`0 được đưa vào 2 ô nhớ bắt đầu tại đòa chỉ 1200, `0 (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.

ADD (mem), (reg)
ADC (accu), (data)
ADC (mem), (data)
ADC (reg), (data)
ADC (reg1), (reg2)
ADC (reg), (mem)
ADC (mem), (reg)
ADD AX, 12`0
ADD Byte PTR [0900],`0
ADD BL, `0
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)
SBB (mem), (reg)

39
08
O D I T S Z A P C
FI
AX
BX
CX
DX
SP
BP
SI
DI
CS
DS
SS
ES
2300
0102
PC
Sau
Trước
CPU Bộ nhớ
0123
2300
2300
010
0
010
2
0246


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status