Nguyễn Đức Thành – CNTT3 MSV: 104.106.0308 Bộ vi xử lý Intel 8086 Cấu trúc bên 8086 Intel 8086 vi xử lý 16 bít Intel vi xử lý hỗ trợ tập lệnh x86 Vi xừ lý sử dụng nhiều lĩnh vực khác nhau, máy IBM PC/XT Các vi xừ lý thuộc họ sử dụng rộng rãi thòi gian tới tính kế thừa sản phẩm họ x86 Các chương trình viết cho 8086 chạy trôn hệ thống tiên tiến sau 1.1 Sơ đồ chân 8086 chức chân Chế độ Min chế độ Max: MN/MX = chế độ Min = chế độ Max với bus controller 8288 Hình Sơ đồ chân 8086 Các chân mang thông tin địa chỉ: Vi xử lí 8086 có 20 đường địa bao gồm thừ Ao đến A19 có 16 đường dây thấp từ Ao đến A15 ghép kênh với đường dây liệu từ Do đến D15 chân từ ADo đến AD15;còn đường dây địa cao từ A16 đến A19 ghép kênh với tín hiệu trạng thái từ S3 đến S6 chân từ A16/S3 đến A19/S6.Do • Nguyễn Đức Thành – CNTT3 MSV: 104.106.0308 chu kì bus địa đường dây sử dụng để mang thông tin địa đưa đến nhớ cổng Các chân mang thông tin liệu: • Vi xử lí 8086 có 16 đường dây liệu từ Do đến D15 ghép kênh với 16 đường địa thấp từ Ao đến A15.khi hoạt động chu kì bus liệu đường dây mang thông tin liệulà liệu đọc hay viết vào nhớ hay thiết bị vào ra,hay mã loại ngắt từ điều khiển ngắt 8259 Các chân mang thông tin trạng thái: • đường dây địa cao từ A16 đến A 19 8086 ghép kênh, ghép kênh từ S3 đến S6 Các bít trạng thái đưa liệu thời điểm truyền tới chân AFDo-AD15 • Bít S3 bít S4 tạo bít mã nhị phân để xaxc định ghi dụng để tạo địa vật lý để đưa lên bus địa chu kì bus • Đường dây trạng thái S5 phản ánh mức logics bit cờ cho phén ngắt bên trong(IEF) • Tín hiệu READY : cung cấp thiết bị phát xung bên cung cấp nhớ or hệ thống vào để báo cho CPU ki sẵn sàng cho phép liệu hoàn thành.có tác dụng kéo dài chu kì đồng hồ Các chân mang tín hiệu điều khiển: • Tín hiệu ALE(cho phép chốt địa chỉ) xung nâng lên muawcs1 để báo cho mạch bít có địa hợp lệ địa chỉ.Tín hiệu nàyđược đưa vào điều khiển vi mạch chốt bên để tách bít từ A0 đén A15 khỏi địa liệu từ A0-A15 • Tín hiệu DEN(cho phép liệu) để báo xem có liệu hợp lệ bus ko bới mức logic 0.điều khiển vi mạch đệm bus liệu • Tín hiệu M/IO báo cho mạch điện bên bít nhớ thiết bị nối với bus Mức báo thiết bị sử dụng bus.mức báo cho nhớ sử dụng bus • Tín hiệu DT/R dung để báo hướng truyền liệu bus.Khi DT/R=1 suốt phần liệu phần liệu bus liệu bus liệu chế dộ truyền Do liệu Nguyễn Đức Thành – CNTT3 MSV: 104.106.0308 ghi vào nhớ đưa thiết bị vao/ra.Ngược lại mức chân DT/R báo hiệu bus chế độ nhận.Hay bus liệu đọc từ nhớ cổng vào • Tín hiệu BHE(cho phép băng cao) dung để báo truy cập băng cao hay băng thấp nhớ.BHE=0 dang truy cập băng cao nhớ mức ngược lại • Tín hiệu RD(cho biết chu kỳ đọc ghi tiến hành.CPU chuyển Ử xuống mức để báo cho thiết bị bên ghi hợp lệ liệu đưa bus.CPU chuyển RD xuống mức để báo hiệu CPU đọc dừ liệu từ nhớ nhận liệu từ cổng vào Các chân phục vụ DMA: • Giao diện truy cập nhớ trực tiếp 8086 chế độ MIN bao gồm hai tín hiệu HOLD HLAD.Khi thiết bị muốn giành quyền điều khiển bus hệ thống để thực truy cập trực tiếp,nó báo yêu cầu cho CPU cách chuyển HOLD lên mức logic Các chân tín hiệu ngắt: • Tín hiệu INTR đầu vào vi xử lí 8086 sử dụng thiết bị để báo cần phục vụ Tín hiệu TEST có quan hệ với giao diện ngắt bên ngoài.nếu TEST có mức logic CPU treo hoạt động chuyển đến trạng thái nghỉ Đầu vào ngắt không che NMI (Non Maskable Interrupt) mức logic NMI chuyển từ lên 1,điều khiển chuyển đến chương trình phục vụ ngắt không che thời điểm hoàn thành thực lệnh chạy Đầu vào RESET sử dụng để thiết lập lại phần cứng cho CPU.chuyển RESET xuống mức logic dùng để khởi tạo ghi nội vi xử lí khởi tạo chương trình phục vụ thiết lập hệ thống Nguyễn Đức Thành – CNTT3 MSV: 104.106.0308 1.2 Sơ đồ khối Hình l Sơ đồ khối 8086 Trong sơ đồ khối, vi xử lý 8086 có hai khối BIU EU Về chi tiết, vi xử lý bao gồm đơn vị điều khiển, số học lô-gíc, hàng đợi lệnh tập ghi Chi tiết khối đơn vị chức trình bày phần sau 1.3 Các đơn yị chức năng: BIU, EU, ghi bus 1.3.1 Đơn vị giao tiếp bus thực thi EU Theo sơ đồ khối Hình II-1 CPU 8086 có khối chính: khối phổi ghép bus BIU (Bus Interface Unit) khối thực lệnh EU (Execution Unit) Việc chia CPU thành phần làm việc đồng thời có liên hệ với qua đệm lệnh làm tăng đáng kể tốc độ xử lý CPU Các buýt bên CPU có nhiệm vụ chuyển tải tín hiệu khối Trong số buýt có buýt liệu 16 bít ALU, buýt tín hiệu điều khiển EU buýt hệ thống BIU Trước buýt vào buýt vi xử lý, tín hiệu truyền buýt thường cho qua đệm để nâng cao tính tương thích cho nối ghép nâng cao phối ghép BIU đưa địa chỉ, đọc mã lệnh từ nhớ, đọc/ghi liệu từ vào cổng nhớ Nói cách khác BIU chịu trách nhiệm đưa địa buýt trao đổi liệu với buýt EU bao gồm đơn vị điều khiển, khối có mạch giải mã lệnh Mã lệnh đọc vào từ nhớ đưa đến đầu vào giải mã, thông tin thu từ đầu đưa đến mạch tạo xung điều khiển, kết ta thu dãy xung khác kênh điều khiển (tuỳ theo mã lệnh) để điều khiển hoạt động phận bên bên CPU Ngoài ra, EU có khối sổ học logic (Arithmetic and Logic Unit ALU) dùng để thực thao tác khác với toán hạng lệnh Tóm lại, CPU hoạt động EU cung cấp thông tin địa cho BIU để khối đọc lệnh liệu, thân đọc lệnh giải mã lệnh Trong BIU có nhớ đệm lệnh với dung lượng byte dùng để chứa mã lệnh để chờ EU xử lý (bộ đệm lệnh gọi hàng đợi lệnh) 1.3.2 Các ghi Nguyễn Đức Thành – CNTT3 MSV: 104.106.0308 1.3.2.a Các ghi đoạn Thông thường nhớ chương trình máy tính chia làm đoạn phục vụ chức khác đoạn chứa câu lệnh, chứa liệu Trong thực tế vi xử lý 8086 cung cấp các ghi 16 bít liên quan đến địa đầu đoạn kể chúng gọi ghi đoạn (Segment Registers) cụ thể: - Thanh ghi đoạn mã CS (Code-Segment), - Thanh ghi đoạn liệu DS (Data sement) - Thanh ghi đoạn ngăn xếp SS (Stack segment) - Thanh ghi đoạn liệu phụ ES (Extra segment) Các ghi đoạn 16 bít địa đầu bốn đoạn nhớ, dung lượng lớn đoạn nhớ 64 Kbyte thời điểm định vi xử lý làm việc với bốn đoạn nhớ 64 Kbyte Đe xác định xác vị trí ô nhớ chương trình ghi đoạn phải phối họp với ghi đặc biệt khác gọi ghi lệch hay phân đoạn (offset register) 1.3.2 b Các ghi đa Trong khối EU có bốn ghi đa 16 bít AX, BX, cx, DX Điều đặc biệt cần chứa liệu bít ghi tách thành hai ghi bít cao thấp để làm việc độc lập, tập ghi AH AL, BH BL, CH CL, DH DL (trong H phần cao, L phần thấp) Mỗi ghi dùng cách vạn để chứa tập liệu khác có công việc đặc biệt định thao tác với vài ghi Chính ghi thường gán cho tên có ý nghĩa Cụ thể: - AX (accumulator): chứa Các kết qủa thao tác thường chứa (kết phép nhân, chia) Neu kết bít ghi AL coi ghi tích luỹ - BX (base): ghi sở thường chứa địa sở bảng dùng lệnh XLAT - cx (count): đểm cx thường dùng để chứa số lần lặp trường hợp lệnh LOOP (lặp), CL thường cho ta số lần dịch quay lệnh dịch quay ghi - DX (data): ghi liệu DX BX tham gia thao tác phép nhân chia số 16 bít DX thường dùng để chứa địa cổng lệnh vào/ liệu trực tiếp 1.3.2.c Các ghi trỏ số Trong 8088 có ba ghi trỏ hai ghi số 16 bít Các Nguyễn Đức Thành – CNTT3 MSV: 104.106.0308 ghi (trừ IP) dùng ghi đa năng, ứng dụng ghi chúng ngầm định ghi lệch cho đoạn tương ứng Cụ thể: - IP: trỏ lệnh (Instruction Pointer) IP trỏ vào lệnh thực nằm đoạn mã CS Địa đầy đủ lệnh ứng với CS:IP xác định theo cách nói - BP: trỏ sở (Base Pointer) BP trỏ vào liệu nằm đoạn ngăn xếp SS Địa đầy đủ phần tử đoạn ngăn xếp ứng với SS:BP xác định theo cách nói - SP: trỏ ngăn xếp (Stack Pointer) SP trỏ vào đỉnh thời ngăn xếp nằm đoạn ngăn xếp SS Địa đỉnh ngăn xếp ứng với SS:SP xác định theo cách nói - SI: số gốc hay nguồn (Source Index) SI vào liệu đoạn liệu DS mà địa cụ thể đầy đủ ứng với DS:SI xác định theo cách nói - DI: số đích (Destination Index) DI vào liệu đoạn liệu DS mà địa cụ thể đầy đủ ứng với DS:DI xác định theo cách nói Riêng lệnh thao tác với liệu kiểu chuỗi cặp ES:DI ứng với địa phần tử thuộc chuỗi đích cặp DS:SI ứng với địa phần tử thuộc chuỗi gốc 1.3.2.d Thanh ghi cờ FR (Flag Register) Đây ghi đặc biệt CPU, bít dùng để phản ánh trạng thái định kết phép toán ALU thực trạng thái hoạt động EU Dựa vào cờ người lập trình có lệnh thích hợp cho vi xử lý (các lệnh nhảy có điều kiện) Thanh ghi cờ gồm 16 bít người ta dùng hết bít để làm bít cờ hình vẽ Nguyễn Đức Thành – CNTT3 MSV: 104.106.0308 1 U U U 1 U D I T S Z U A U P U C 0 F F F F F F F F F Hình Thanh ghi cờ - U không sử dụng - C CF (Carry Flag): cờ nhớ CF = có nhớ mượn từ bít có nghĩa lớn MSB (Most Significant Bit) - P PF (Parity Flag): cờ parity PF phản ánh tính chẵn lẻ tổng số bít có kểt Cờ PF =1 tổng số bít kểt chẵn (even parity) - A AF (Auxiliary Carry Flag): cờ nhớ phụ rat có ý nghĩa ta làm việc với số BCD (Binary Coded Decimal) AF = có nhớ mượn từ số BCD thấp (4 bít thấp) sang số BCD cao (4 bít cao) - Z ZF (Zero Flag): cờ rỗng ZF =1 kểt = - S SF (sign flag): cờ dấu SF = kết âm - O OF (Overflow Flag): cò tràn OF = kểt số bù vượt qua giới hạn biểu diễn dành cho Trên bít cờ trạng thái phản ánh trạng thái khác kết sau thao tác đó, bít cờ đầu thuộc byte thấp cờ cờ giống vi xử lý bít 8085 Intel Chúng lặp xoá tuỳ theo điều kiện cụ thể sau thao tác ALU Ngoài ra, vi xử lý 8086/8088 có cờ điều khiển sau (các cờ lập xoá lệnh riêng): 1.4 - T TF (Trap Flag): cờ bẫy TF = CPU làm việc chể độ chạy lệnh (chế độ dùng cần tìm lỗi chuông trĩnh) - I IF (Interrupt Enable Flag): cờ cho phép ngắt IF = CPU cho phép yêu cầu ngắt (che được) tác động - D DF (Direction Flag): cờ hướng DF = CPU làm việc với chuỗi ký tự theo thứ tự từ phải sang trái (vì D cờ lùi) Phân đoạn nhớ 8086 Nguyễn Đức Thành – CNTT3 MSV: 104.106.0308 Khối BIU đưa buýt địa 20 bít địa chỉ, 8086/8088 có khả phân biệt 220 = 1.048.576 = 1M ô nhớ hay 1Mbyte, nhớ thường tổ chức theo byte Nói cách khác: không gian địa 8086 1Mbyte Trong không gian 1Mbyte nhớ cần chia thành vùng khác (điều có lợi làm việc chế độ nhiều người sử dụng đa nhiệm) dành riêng để: - Chứa mã chương trĩnh - Chứa liệu kết không gian chương trĩnh - Tạo vùng nhớ đặc biệt gọi ngăn xếp (stack) dùng vào việc quản lý thông số vi xử lý gọi chương trình trở từ chương trình Trong thực tế vi xử lý 8086có ghi 16 bít liên quan đến địa đầu vùng (các đoạn) kể chúng gọi ghi đoạn (Segment Registers) Đó ghi đoạn mã CS (Code-Segment), ghi đoạn liệu DS (Data Sement), ghi đoạn ngăn xếp SS (Stack Segment) ghi đoạn liệu phụ ES (Extra Segment) Các ghi đoạn 16 bít địa đầu bốn đoạn nhớ, dung lượng lớn đoạn nhớ 64 Kbyte thời điểm định vi xử lý làm việc với bốn đoạn nhớ 64 Kbyte Việc thay đổi giá trị ghi đoạn làm cho đoạn dịch chuyển linh hoạt phạm vi không gian Mbyte Vì đoạn nằm cách thông tin cần lưu đòi hỏi dung lượng đủ 64 Kbyte nằm trùm có đoạn không cần dùng hết đoạn dài 64 Kbyte đoạn khác bắt đầu nối tiếp sau Điều cho phép ta truy nhập vào đoạn nhớ (64 Kbyte) nằm toàn không gian MByte Nội dung ghi đoạn xác định địa ô nhớ nằm đầu đoạn Địa gọi địa sở Địa ô nhớ khác nằm đoạn tính cách cộng thêm vào địa sở giá trị gọi địa lệch hay độ lệch (Offset), ứng với khoảng lệch địa ô nhớ cụ thể so với ô đầu đoạn Độ lệch xác định ghi 16 bít khác đóng vai trò ghi lệch (offset register) mà ta trình bày sau Cụ thể, để xác định địa vật lý 20 bít ô nhớ đoạn CPU 8086 phải dùng đển ghi 16 bít: ghi để chứa địa sở, chứa độ lệch Từ nội dung cặp ghi tạo địa vật lý theo công thức sau: Điachỉvâtlý=Thanh_ghi_đoanxl6+Thanh_ghi_lêch Việc dùng ghi để ghi nhớ thông tín địa thực chất để tạo loại địa gọi địa logic ký hiệu sau: Thanh_ghi_đoạn: Thanh_ghi_lệch hay segment: offset Địa kiểu segment: offset logic tồn dạng giá trị Nguyễn Đức Thành – CNTT3 MSV: 104.106.0308 ghi cụ thể bên trông CPU ghi cần thiết truy cập ô nhớ phải đổi địa vật lý để đưa lên buýt địa Việc chuyển đổi tạo địa thực Ví dụ: cặp CS:ỈP địa lệnh thực đoạn mã Tại thời điềm ta có CS = F00H EP = FFF0H CS:IP~F000Hxl6 + FFF0H = F000H + FFF0H = FFFF0H Do tổ chức nên dẫn đến tính đa trị ghi đoạn ghi lệch địa logic ứng với địa vật lý Từ địa vật lý ta tạo giá trị khác ghi đoạn ghi lệch Ví dụ: Địa vật lý 12345H tạo từ giá trị: Thanh Ghi Đoạn Thanh ghi lệch 1000H 2345H 1200H 0345H 1004H 2305H Nguyễn Đức Thành – CNTT3 MSV: 104.106.0308