Bài giảng Kỹ thuật Vi xử lý: Chương 3 Họ vi xử lý 8088 và 80x86, cung cấp cho người học những kiến thức như: Nguyên lý hoạt động của một bộ vi xử lý; Cấu trúc của bộ vi xử lý; Kiến trúc và hoạt động của 8088;... Mời các bạn cùng tham khảo!
Trang 1quynhhoa4484@gmail.com
Trang 2Chương 3 :
Trang 41.1.Nguyên lý hoạt động của một bộ
VXL
Trang 5Cấu trúc của bộ VXL
Trang 6Bộ nhớ
• Gồm : Bộ nhớ trong và bộ nhớ ngoài
• Nhiệm vụ:
– Lưu trữ lệnh
– Lưu trữ dữ liệu
Trang 7Bộ nhớ trong
• Gồm : ROM và RAM
mạch điện để thể hiện các trạng thái "1" hay "0" Ðặc điểm của ROM là thông tin vẫn tồn tại thường xuyên ngay cả khi
mất điện hoặc tắt máy
liệu để CPU có thể truy cập nhanh chóng
Trang 8Hệ thống BUS
• Bus địa chỉ
• Bus dữ liệu
• Bus điều khiển
Trang 9Bus địa chỉ
• Là công cụ để CPU có thể xác định và nhận ra vị trí của các thiết bị trong hệ thống
• Có 20 đường dây từ A0 đế n A19
Trang 10Bus dữ liệu
• Dùng để chuyển thông tin giữa bộ VXL với các thiết bị khác trong hệ thống
• 8088 có 8 bit.8086 có 16 bit
• Sử dụng kỹ thuật Multiplex các đường dây của Bus dữ liệu và Bus địa chỉ
Trang 11Bus điều khiển
• Là tập hợp các đường dây điều khiển dù ng để điều khiển các tác vụ của hệ thống
• Các tín hiệu điều khiển điển hình :
MEMR,MEMW,IOR,IOW
• Ví dụ về quá trình đọc 1 byte từ bộ nhớ
Trang 12Xử lý lệnh của các VXL trước 8086/8088
• Lấy lệnh từ bộ nhớ
• Giả i mã lệnh
• Thực hiện lệnh
– Lấy các toán hạng từ bộ nhớ (nếu có)– Lưu trữ kết quả
Trang 131.2.Kiến trúc và hoạt động của 8088
• CPU 8088 có 2 khối chính:
– Khối phối gh é p bus (Bus interface unit, BIU): BIU chịu tr á ch nhiệm đưa địa chỉ ra bus v à trao đổi dữ liệu với bus.
– Khối thực hiện lệnh (Execution unit, EU): EU
cung cấp thông tin về địa chỉ cho BIU để khối
n à y đọc lệnh v à dữ liệu, còn EU sẽ giải mã lệnh v à
thực hiện lệnh.
• Hai thành phần BIU và EU làm việc đồng
thời và liên hệ với nhau qua đệm lệnh
Trang 14Cơ chế Pipelining
Trang 16BIU (Bus Interface Unit)
• Phá t ra các tín hiệu địa chỉ đến bộ nhớ và các cổng I/O thông qua A-Bus
• Đọc mã lệnh từ bộ nhớ qua D-Bus
• Đọc dữ liệu từ bộ nhớ qua D-Bus
• Ghi dữ liệu vào bộ nhớ qua D-Bus
• Đọc dữ liệu từ các cổng I qua D-Bus
• Ghi dữ liệu ra các cổng O qua D-Bus
Trang 17EU (Execution unit)
• Bao gồm 2 khối :
• CU (Control Unit) : Giải mã lệnh để tạo ra các tín hiệu điều khiển nhằm thực hiện lệnh đã được giải mã
• ALU (Arithmetical Logical Unit ) : Thực hiện các thao tá c khác nhau đối với các
toá n hạng của lệnh
Trang 18Đơn vị số học và logic (ALU)
• Mô hình kết nối của ALU
Trang 19Đơn vị điều khiển CU
• Mô hình kết nối CU
Trang 20Cá c thông tin kết nối đến CU
• Clock
• Mã lệnh
• Cá c trạng thái cờ
• Cá c tín hiệu đk từ BUS đk
• Cá c tín hiệu bên trong CPU
• Cá c tín hiệu bên ngoài CPU
Trang 21Qua ́ trình nhận và thực thi lệnh
1 BIU xuất nội dung của thanh ghi con trỏ
lệnh IP (Intruction Pointer) ra bus địa chỉđể chọn byte/word đọc vào BIU
2 IP tăng lên 1
3 Lấy lệnh từ BIU đưa vào hàng đợi lệnh (là
thanh ghi lưu trữ theo FIFO)
4 Thực hiện lệnh lấy ra từ hàng đợi
5 Quay trở lại quá trình BIU nhận 1 lệnh mới
Trang 232.Thanh ghi
• Thanh ghi đa năng
• Thanh ghi con trỏ và chỉ số
• Thanh ghi quản lý đoạn
• Thanh ghi cờ trạng thái
Trang 24Cấu trúc thanh ghi của họ 8088
Trang 25Cấu trúc thanh ghi của họ x86
Trang 26Các thanh ghi đa năng
Trang 27• Các thanh ghi đa năng:
– AX, BX, CX, DX: 16 bít
– Các thanh ghi có thể tách ra thành 2 thanhghi ghi 8 bít cao và 8 bít thấp để làm việc độclập
Trang 28– Thanh ghi dữ liệu
– Dùng để chứa toán hạng, kết quả phép toán * /
– Chứa địa chỉ để in/out
Các thanh ghi đa năng
Trang 29Các thanh ghi đoạn
Trang 30• Dài 16 bit và không chia làm 2 phần như thanh ghi
đa năng
• Được sử dụng là địa chỉ cơ sở của các lệnh trong
chương trình, stack và dữ liệu
– CS : chứa địa chỉ bắt đầu của chương trình
– DS : chứa địa chỉ của các biến khai báo trong
chương trình– SS : chứa địa chỉ của bộ nhớ Stack dùng trong
chương trình– ES : chứa địa chỉ cơ sở bổ sung cho các biếnbộ nhớ
Trang 31Các thanh ghi đoạn
• Bộ nhớ 8086/88 đánh địa chỉ theo byte ,có 20 đường địa chỉ ?quản lý bn địa chỉ khác nhau -> chia thành các đoạn để quản lý
• Tại 1 thời điểm 8086/88 quản lý được 4 đoạn:
– Đoạn mã: Thanh ghi đoạn CS (Code Segment)– Đoạn dữ liệu: Thanh ghi đoạn DS (Data
Trang 32• Các thanh ghi đoạn chỉ ra địa chỉ đầu của mỗi
đoạn trong bộ nhớ Dung lượng của mỗi đoạn là64KB
• Việc thay đổi giá trị các thanh ghi đoạn làm cho
các đoạn có thể dịch chuyển một cách linh hoạttrong không gian 1MB bộ nhớ
• Các đoạn có thể tách rời nhau hoặc nằm trùm
lên nhau
Các thanh ghi đoạn
Trang 33Các thanh ghi đoạn
• Nội dung của thanh ghi đoạn sẽ xác định ô nhớđầu tiên trong đoạn, địa chỉ này gọi là địa chỉ cơ
sở (địa chỉ đoạn Segment) Các ô nhớ tiếp theođược xác định bằng cách lấy địa chỉ cơ sở cộngthêm 1 giá trị gọi là địa chỉ lệch ( Offset) Địachỉ lệch cũng được xác định bởi một thanh ghi
khác gọi là thanh ghi offset
Trang 34Các thanh ghi đoạn
• CS : xác định đoạn lệnh-nơi chứa chương trình
được thi hành
• DS : xác định đoạn dữ liệu-nơi chứa chương trìnhđược thi hành
• SS : xác định đoạn Stack-vùng làm việc tạm thời
dùng để theo dõi các tham số và các địa chỉ đang
được chương trình hiện hành và sử dụng
• ES : trỏ đến đoạn thêm thường được sử dụng để bổ xung cho đoạn dữ liệu
Trang 35Các thanh ghi đoạn
1MB
Segment Register Offset Register
Trang 36C á c thanh ghi con trỏ và chỉ số
Trang 37• Hai thanh ghi chỉ số:
– Chỉ số nguồn SI: Trỏ vào 1 phần tử đoạn
C á c thanh ghi con trỏ và chỉ số
Trang 38Các thanh ghi con trỏ và chỉ số
• C ó 3 thanh ghi con trỏ v à 2 thanh ghi chỉ số 16
b í t Trừ thanh ghi IP, c á c thanh ghi n à y đều c ó
thể d ù ng như thanh ghi đa năng.
• Ứng dụng ch í nh của mỗi thanh ghi l à được ngầm định như thanh ghi lệch cho c á c đoạn tương ứng.
• Ba thanh ghi con trỏ:
– Con trỏ lệnh IP(Instruction Pointer): Trỏ v à o lệnh tiếp theo sẽ được thực hiện nằm trong
đoạn mã CS Địa chỉ đầy đủ của lệnh tiếp theo CS:IP.
– Con trỏ cơ sở BP: Trỏ v à o một phần tử của
ngăn xếp (SS: BP)
– Con trỏ ngăn xếp SP: Trỏ v à o đỉnh ngăn xếp (SS: SP)
Trang 4016 bít
8 bít Bus D
8086 8088
Trang 42Thanh ghi cờ
• Cờ C (Carry Flag): C = 1 khi c ó nhớ
hoặc mượn bit
• Cờ P (Parrity ): kiểm tra t í nh chẵn lẻ trong kết quả thực hiện ph é p to á n P
=1 nếu kết quả c ó số bit 1 l à chẵn
• Cờ A(auxiliary carry flag) cờ nhớ phụ
Để l à m việc với số dạng mã BCD
Trang 44Thanh ghi cờ
• Cờ điều khiển
• Cờ T (Trap Flag):T=1 th ì CPU l à m việc ở chế độ từng lệnh
• Cờ I (Interrupt Flag): I = 1 th ì CPU cho
ph é p c á c yêu cầu ngắt (che được) được
t á c động
• Cờ D(Dirrection Flag): D=1 th ì CPU l à m việc với xâu k í tự theo chiều từ phải sang
tr á i
Trang 45Thanh ghi cờ
Trang 46• Dạng của lệnh
• Mã máy
• Mã gợi nhớ
Trang 47*.asm *.obj
100010 … MOV đích, gốc
Trang 48Các chế độ địa chỉ
• Bộ VXL 8088 v à họ 80x86 c ó 7 chế độ địa chỉ:
– Chế độ địa chỉ thanh ghi (register addressing mode)
– Chế độ địa chỉ tức th ì (immediate addressing mode)
– Chế độ địa chỉ trực tiếp (direct addressing mode)
– Chế độ địa chỉ gi á n tiếp qua thanh ghi (register indirect
Trang 49Hằng số
Trang 502.Mod thanh ghi
• MOV AX, BX
• ADD AL, CL
Trang 513.Mod trực tiếp
• MOV Al, [1053]
• ADD [5307h], AL
Trang 524.Mod gián tiếp thanh ghi
• MOV AL, [BX]
• MOV [SI], CL
Trang 535.Mod tương đối cơ sở
• MOV CX, [BX]+10
• MOV CL, [BP]+5
Trang 546.Mod tương đối chỉ số
• MOV AX,[SI]+10
• MOV AL, [DI+5]
Trang 557.Mod tương đối chỉ số cơ sở
• MOV AX, [BX]+[SI]+8
Trang 56DS DS SS SS
[BX] + [DI] + Disp [BX] + [SI] + Disp [BP] + [DI] + Disp [BP] + [SI] + Disp Tương đối chỉ số cơ sở
7
DS SS
[DI] + Disp [SI] + Disp Tương đối chỉ số
6
DS SS
[BX] + Disp [BP] + Disp Tương đối cơ sở
5
DS DS DS
Trực tiếp
3
Data Tức thi
2
Reg Thanh ghi
1
Đoạn ngầm định Toán hạng
Chế độ địa chỉ STT
Trang 57Đoạn ngầm định
SP, BP DI
SI, DI, BX IP
Thanh ghi lÖch
SS ES
DS CS
Thanh ghi ®o¹n
Trang 58Thay đổi đoạn mặc định
• MOV AH,[BP]; SS:BP->AH
• MOV AH,CS:[BP]; CS:BP->AH
Trang 59Ma ̃ lệnh, mã máy
• Một lệnh của VXL có tối đa 6 byte
– Opcode
– Direction
Trang 60Ma ̃ lệnh, mã máy
• Một lệnh của VXL có tối đa 6 byte
– Word
– REG : sử dụng 2 hoặc 3 bit
Trang 61Ma ̃ lệnh, mã máy
• Mode
• R/M
Trang 62Ma ̃ lệnh, mã máy
• Viết dưới dạng mã lệnh cho dòng lệnh sau :
– MOV CL,[BX]
– MOV AH,2Ah
– MOV CX,[BX]+[SI]+DATA
Trang 63Tập lệnh của VXL
8088/80x86
• Nhóm lệnh dịch chuyển
• Nhóm lệnh xử lý dữ liệu
• Nhóm lệnh điều khiển
Trang 64Nho ́m lệnh dịch chuyển
• Nhóm lệnh chuyển dữ liệu
• Nhóm lệnh chuyển địa chỉ
• Nhóm lệnh chuyển dữ liệu qua cổng
Trang 65A.Nhóm lệnh chuyển dữ liệu
Trang 66– Ko thay đổi cờ
– Ko chuyển trực tiếp dữ liệu giữa 2 ô nhớ
– Ko chuyển trực tiếp một hằng số vào 1 thanh ghi đoạn
– Ko dùng CS làm toán hạng đích
– Ko chuyển trực tiếp giữa 2 thanh ghi đoạn
Trang 67– Toán hạng là mem hoặc reg
– Không ảnh hưởng đến các cờ– Không phải là thanh ghi đoạn
Trang 69– Nội dung reg không thay đổi
– Các cờ không bị thay đổi
Trang 71B.Nhóm lệnh chuyển địa chỉ
• LEA
• LDS
• LES
Trang 72• Load Effective Address
• LEA reg16,mem16
• Chú ý :
– Dst có thể là : BX,CX,DX,BP,DI,SI
– Src có thể là : tên biến trong DS hoặc một ô nhớ cụ thể
– Các cờ không bị thay đổi
• LEA BX,[1000h]
• BX<-[1001h,1000h]
Trang 75C.Nhóm lệnh chuyển dữ liệu
qua cổng
• IN
• OUT
Trang 76• Input a byte or a word from a port
• IN Acc,port
• Trong đó :
– Acc : thanh chứa
– Port : dữ liệu của cổng có địa chỉ port, nó là địa chỉ 8 bit của cổng
– Các cờ không bị thay đổi
Trang 77– Acc là thanh chứa
– Port là địa chỉ cổng
– Các cờ không bị thay đổi
Trang 78Nho ́m lệnh tính toán số học
• Lệnh cộng
• Lệnh trừ
• Lệnh nhân
• Lệnh chia
Trang 88• Chia cho 0
• Thương > 256 (src8)
• Thương > 65536 (src16)
Trang 89• Chia cho 0
• Thương > 256 (src8)
• Thương > 65536 (src16)
Trang 90Nho ́m lệnh logic
• AND
• OR
• XOR
• NOT
Trang 91– Dst,Src phải có cùng độ dài và ko đồng thời là 2
ô nhớ,2 thanh ghi đoạn
– Các cờ bị thay đổi : CF,OF,SF,ZF,PF
– Thường dùng để che đi/giữ lại những vị trí cần
che đi/giữ lại tương ứng.
Trang 92– Dst,Src phải có cùng độ dài và ko đồng thời là 2
ô nhớ,2 thanh ghi đoạn
– Các cờ bị thay đổi : CF,OF,SF,ZF,PF
– Thường dùng để một vài bit nào đó của toán
hạ ng lên 1
Trang 93– Dst,Src phải có cùng độ dài và ko đồng thời là 2
ô nhớ,2 thanh ghi đoạn
– Các cờ bị thay đổi : OF,SF,ZF,PF
– Thường dùng để trả về 0 một thanh ghi nào đó.
Trang 94– Dst,Src phải có cùng độ dài và ko đồng thời là 2
ô nhớ,2 thanh ghi đoạn
– Các cờ không bị thay đổi
– Thường dùng đảo bit (lấy bù 1) một thanh ghi
nà o đó.
Trang 95Nho ́m lệnh dịch và quay
Trang 96• Shift Arithimetically/Logic left
• SAL/SHL Dst,CL
• Với SAL, thì msb ko đổi sau khi thực hiện lệnh
• Có ảnh hưởng tới các cờ : ZF,OF,CF,PF và SF(đối với SHL)
0
CF
LÖnh SHL
Trang 98• Giống với SAL/SHL nhưng là dịch phải
Trang 101• Quay trái, quay phải qua cờ nhớ
• Thực hiện giống ROL/ROH nhưng CF có tham gia vào vòng quay
Trang 102Nho ́m lệnh so sánh
• CMP
Trang 103– Sau lệnh, toán hạng không thay đổi
– Chỉ thay đổi các cờ : AF,CF,OF,PF,ZF,SF
Trang 104Nho ́m lệnh xử lý với chuỗi
• MOVS :MOVSB, MOVSW
• CMPS :CMPSB, CMPSW
• SCAS :SCASB, SCASW
• LODS :LODSB, LODSW
• STOS :STOSB, STOSW
• REP
Trang 110• REP lệnh xử lý chuỗi
• REP MOVSB/MOVSW
STOSB/STOSW lặp lại cho đến khi CX=0
Trang 111Vi ́ dụ
• Chép 80h byte từ địa chỉ
3000h:1000h đế n địa chỉ 4800h:C200h
Trang 112Ca ́c lệnh điều khiển chương trình
• Nhóm lệnh dịch chuyển thanh ghi cờ
• Lệnh nhảy
• Lệnh vòng lặp
• Lệnh cho chương trình con
Trang 113Nho ́m lệnh chuyển cờ hiệu
• LAHF
• SAHF
• PUSHF
• POPF
Trang 115• Store AH to Flag
• Chuyển các bit 7,6,4,2 và 0 của thanh ghi AH vào các cờ SF,ZF,AF,PF và CF
Trang 116PUSHF và POPF
• PUSHF : chuyển thanh ghi cờ vào Stack.
• POPF : lấy dữ liệu từ Stack chuyển và o thanh ghi cờ.
Trang 117Lệnh lặp
Trang 119– Dừng LOOP khi CX=0 hoặc ZF=0
– Các cờ không bị thay đổi
Trang 120– Dừng LOOP khi CX=0 hoặc ZF=1
– Các cờ không bị thay đổi
Trang 121Ca ́c lệnh nhảy
• Nhảy không điều kiện
• Nhảy có điều kiện
Trang 122Nha ̉y không điều kiện
• JMP Label
– JMP short Label (-128đến 127)
– JMP near Label (-32768đến 37767)– JmP reg16
– JMP mem16
– JMP mem32
– JMP far Label
Trang 123Nha ̉y không điều kiện
• short Label :IP <- IP+offset
• near Label :IP <- địa chỉ
• Reg16 :IP <- reg16
• Mem16 :IP <- [mem+1,mem]
• Mem32 :CS <- [mem+3,mem+2]
IP <- [mem +1,mem]
• far Label :CS <- PTR segment
IP <- PTR offset
Trang 124Nha ̉y có điều kiện
• Jxxx Label
• Nếu thỏa đk thì nhảy tương đối
ngược lại sẽ không làm gì cả (qua lệnh kế)
Trang 125Nha ̉y có điều kiện
• Khi thực hiện so sánh không dấu
Trang 126Nha ̉y có điều kiện
• Khi thực hiện so sánh các số có dấu
Trang 127Ca ́c lệnh cho chương trình con
• CALL
• RET
Trang 128• CALL thủ tục
• Mô tả : Chuyển hoạt động của CTC sang ctc
– Gọi gần : ctc nằm trong cùng một đoạn mã với CTC (CALL near)
– Gọi xa : ctc không nằm trong cùng mộtđoạn mã với CTC (CALL far)
– Các cờ bị thay đổi : AF,CF,OF,PF,ZF,SF
Trang 129– Địa chỉ lệch của ctc -> IP
– Khi gặp RET thì VXL lấy lại địa chỉ trở về
IP từ Stack
– SP+2->SP
Trang 130– Địa chỉ lệch của ctc -> IP
– Khi gặp RET thì VXL lấy lại địa chỉ trở về IP từ Stack
– SP+2->SP,lấy lại địa chỉ IP
– SP+2->SP,lấy lại địa chỉ CS
Trang 131Một số lệnh điều khiển khác
• CLC :Clear the Carry flag
• CLD :Clear the Direction flag
• CLI :Clear the Interrupt flag
• CMC :Complement the Carry flag
• HLT :Halt processing
• INT :Interrupt