Nguyên tắc làm việc của Intel 80x86 - Pdf 69

Nguyên tă c la m viêc cuá ̀ ̣ ̉
Intel 80x86
Phạm Thế Duy
([email protected])
Sơ đồ khối

EXECUTION UNIT (EU)
ADDRESS UNIT (AU)
INSTRUCTION UNIT (IU)
INSTRUCTION
DECODER
3 DECODER
INSTRUCTION
QUEUE
ADDRESS
LATCH AND DRIVER
PREFETCH
PROCESSOR
EXTENTION
INTERFACE
BUS CONTROL
DATA
TRANSCEIVERS
6 BYTE
PREFETCH
QUEUE
BUS
UNIT (BU)

ra địa chỉ vật lý, đó chính là các địa chỉ đoạn
(segment) và địa chỉ độ dời (offset).
Khối giao tiếp BUS (BU)

BU cung cấp các tín hiệu địa chỉ, dữ liệu và điều khiển
để truy cập các bộ nhớ và vào ra. Khối này cũng cho
phép giao tiếp với bộ đồng xử lý hoặc các bộ vi xử lý
khác.

Chức năng quan trọng nhất của BU là tự động kích
hoạt quá trình lấy lệnh từ bộ nhớ bằng bộ tiền truy cập
lệnh (Prefetch). BU còn có chức năng cho phép quá
trình lấy lệnh từ bộ nhớ thực hiện song song với các
quá trình khác nhớ hàng đợi lệnh 6 byte (Prefetch
queue).

Các địa chỉ mà AU tạo ra cung cấp tới các bộ cài
(Address Latch) và sẽ được định thời cung cấp ra bên
ngoài tại các thời điểm thích hợp. Dữ liệu truyền với
CPU sẽ được chuyển qua các cổng đệm hai chiều
(Data Transceivers).
Khối giải mã lệnh (IU)

Lệnh được BU lấy vào hàng đợi, trong khi IU
lấy lệnh đã lấy trước đó giải mã và chuyển tới
hàng đợi lệnh đã giải mã (Decoded
Instruction queue) để EU thực hiện.

Với chức năng giải mã lệnh, các lệnh ngoài bộ
nhớ có thể mã hoá ngắn nhất có thể, IU sẽ tạo


Các thanh ghi đặc biệt: IP, MSW.
Các thanh ghi đa năng (16bit)

Có thể sử dụng chứa dữ liệu 16 bit.

Có thể chia thanh hai phần 8 bit truy cập riêng
rẽ.
Ca c thanh ghi đa nănǵ

AX (Accumulator) thanh chứa cho lệnh nhân và chia.
MUL BL ; AX = AL * BL

BX (Base): Sử dụng làm thanh ghi địa chỉ cơ sở.
MOV AL,[BX] ;chép nội dung ô nhớ BX giữ địa chỉ.
MOV AH,[BX+03] ;chép nội dung ô nhớ có địa chỉ [BX+3] vào AH.
MOV CH,[BX+DI+9]

CX (Counter): Sử dụng làm bộ đếm số vòng lặp.
LOOP N ;trừ CX đi 1, chuyển tới nhãn N khi CX ≠0.

DX (Data): Làm thanh ghi chứa dữ liệu trong các lệnh nhân chia 16
bit. Làm thanh ghi giữ địa chỉ cổng vào ra.
MUL BX ; DX AX = AX*BX
OUT DX,BL ; chuyển BL ra cổng có địa chỉ DX
Ca c thanh ghi đa năng (tiê p)́ ́

DI (Destination Index): thanh ghi chỉ số đích – giữ địa chỉ đích dữ liệu
trong các lệnh về chuỗi. Làm thanh ghi địa chỉ.
MOV AH,[DI] ;chuyển nội dung ô nhớ có địa chỉ chứa trong DI vào AH.

một ngăn xếp trong thực tế.
Có thể thực hiện ngăn xếp bằng các hộp. Để tạo thành ngăn xếp
trước hết đặt hộp A, sau đó tới B và cuối cùng là C.
A A
B
A
B
C
Chú ý rằng chúng ta chỉ có thể lấy được hộp xếp vào ngăn xếp
cuối cùng (Đỉnh ngăn xếp - Top of Stack – TOS). Như vậy trình
tự phục hồi lại dữ liệu theo trình tự ngược lại khi xếp vào ngăn
xếp (C tới B và cuối cùng là A).
Ch a d liêu va o ngăn xê p bă ng ́ ̃ ̀ ́ ̀ư ư ̣
lênh PUSḤ

Thanh ghi con trỏ ngăn xếp SP (Stack Pointer) được sử
dụng để truy cập ngăn xếp. SP luôn trỏ tới giá trị cuối
cùng được cất vào ngăn xếp.

Lệnh PUSH chứa dữ liệu vào đỉnh ngăn xếp.
PUSH AX ; SP= SP-1, M[SP] ← AX

Lệnh “PUSH AX” tương ứng với:
SUB SP, 1 ; giảm SP đi 1
MOV [SP], AX ; ghi giá trị của AX vào đỉnh ngăn xếp

Các lệnh truy cập ngăn xếp có thể thực hiện với 16
hoặc 32 bit.
Quan sa t hoat đông lênh PUSH́ ̣ ̣ ̣
????

Nhiê u lênh PUSH liên tiê p̀ ̣́
????
????
????
????
????
????
????
????
Last value
Địa chỉ thấp
Địa chỉ cao
← SP
Trước lệnh PUSH
????
????
????
????
????
cx
bx
ax
Last value
Địa chỉ thấp
← SP
Sau các lệnh PUSH
PUSH AX
PUSH BX
PUSH CX
Địa chỉ cao

Địa chỉ thấp
Địa chỉ cao
← SP
AX = 23AB
Sau POP AX
Mỗi ô nhớ 16 bit,
ngăn xếp truy
cập 16 bit hoặc
32 bits.
Hoat đông nhiê u lênh POP liên tiê p̀ ̣́ ̣ ̣
FF65
23AB
357F
D21B
38AC
23F4
????
????
????
Địa chỉ thấp
Địa chỉ cao
← SP
Trước
FF65
23AB
357F
D21B
38AC
23F4
????

Để ngăn xếp được sử dụng tốt cần phải lấy dữ liệu ra khỏi
ngăn xếp bằng đúng số dữ liệu đã cất vào ngăn xếp.
Tông kê t vê ngăn xê ṕ ̀ ́̉

Là nơi chứa dữ liệu tạm thời.

Đoạn và con trỏ ngăn xếp SS:SP

Push và Pop (LIFO-Last In First Out)

SP : Giữ địa chỉ đỉnh ngăn xếp

Sau lệnh PUSH con trỏ SP sẽ giảm.
Ca c thanh ghi đoań ̣

CS: Code Segment – Đoạn mã lệnh.

DS: Data Segment – Đoạn dữ liệu.

SS: Stack Segment – Đoạn ngăn xếp.

ES:Extra Segment – Đoạn mở rộng.
Chế độ địa chỉ thực:
Physical address = Segment * 10H +offset
Phân đoan bô nh ̣́ ̣ ơ
CS
ES
SS
DS
Data

CF=1 khi cộng tràn, trừ mượn.

Cờ chẵn lẻ PF (Parity Flag).
PF = 1 khi số bit 1 là một số chẵn.

Cờ dấu SF ( Sign Flag).
SF =1 khi kết quả có bit cao nhất là 1

Cờ tràn OF (Overflow Flag) .
OF = 1 khi tràn bit 1 từ MSB-1 qua MSB.

Cờ ZERO ZF (Zero Flag).
ZF = 1 khi kết quả bằng 0.

Cờ nhớ phụ AF (Auxiliary Carry Flag ).
AF=1 khi tràn bit 1 từ D3 qua D4.
Ca c c điê u khiên trong thanh ghi ́ ̀ ̀ơ ̉
c .̀ơ

Cờ định hướng DF (Direction Flag).
Xác định hướng địa chỉ của các lệnh xử lý chuỗi.

Cờ ngắt IF : (Interrupt Flag).
IF=1 cho phép ngắt.

Cờ bẫy TF: (Trap Flag).
Sử dụng chạy từng bước để sửa sai chương trình.

Cờ nhiệm vụ lồng nhau NT (Nested Tast).
Cho phép tiến triển hoặc chuyển nhiệm vụ.

D15 D0


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