1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu vi xử lý - Chương 2

22 7 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 759,59 KB

Nội dung

TỔ CHỨC HỆ THỐNG VI XỬ LÝ 1. Giới thiệu Tất cả các máy vi tính IBM họ PC hoặc các máy vi tính tương thích IBM đều sử dụng µP Intel họ iAPX. Bảng 2.1 liệt kê các đặc tính cơ bản của một số µP của Intel trong đó 80486 chứa một bộ điều khiển cache tích hợp và 8 KB RAM tĩnh, Pentium chứa cache 16 KB RAM tĩnh. B

Tài liệu vi xử lý Tổ chức hệ thống vi xử lý CHƯƠNG 2: TỔ CHỨC HỆ THỐNG VI XỬ LÝ Giới thiệu Tất máy vi tính IBM họ PC máy vi tính tương thích IBM sử dụng µP Intel họ iAPX Bảng 2.1 liệt kê đặc tính số µP Intel 80486 chứa điều khiển cache tích hợp KB RAM tĩnh, Pentium chứa cache 16 KB RAM tĩnh Bảng 2.1: Kiến trúc µP Intel bit, 16 bit 32 bit ĐẶC TÍNH Bus địa (số bit) Đường liệu nội (số bit) Tốc độ (MHz) Thanh ghi đến ghi (µs/word) Đáp ứng interrupt (µs) Địa nhớ Cách định địa Coprocessor Số ghi đa dụng Số ghi đoạn Điều khiển interrupt Timer – counter 8080 8086 16 8088 80186 16 80188 80286 16 16 16 16 16 16 2,2.6, 6.3 1.3 5,8,10 5,8 0.3 0.38 8,10, 12.5 0.2 8,10, 12.5 0.3 7.3 6.1 8.6 3.36 6.2 2.52 64K 1M 24 1M 24 1M 24 1M 24 8087 8087 8087 8 8259A 8253 8259 -A 8253 /54 80386 32 386SX 16 486/Pentium 32 32 32/64 16 25-66 0.125 0.04 3.5 2.52 3.5 16M 24 4G 28 4G 28 4G 28 8087 80287 8 80287/ 80387 On chip 80287/ 80387 4 4 6 8259A 8253/ 54 On chip On chip On chip On chip 8259A 8253/ 54 8259-A 82335 µPLD 8253/5 8253/5 On chip 32 6,8,10, 16,20,25, 12.5,20 33 0.125 0.125 µP 8086/8088 2.1 Mơ tả 2.1.1 Định chu kỳ bus Mỗi chu kỳ bus bắt đầu việc xuất địa nhớ I/O port (chu kỳ xung nhịp T1) Với 8086 địa địa nhớ 20 bit, địa I/O gián tiếp 16 bit (thanh ghi DX) hay địa I/O trực tiếp bit Bus điều khiển có tín hiệu tác động mức thấp MEMR , MEMW , IOR IOW Phạm Hùng Kim Khánh Trang 22 Tài liệu vi xử lý Tổ chức hệ thống vi xử lý Các chuỗi kiện xảy chu kỳ bus đọc nhớ: T1: µP xuất địa nhớ 20 bit Các đường liệu không hoạt động đường điều khiển bị cấm T2: Đường điều khiển MEMR xuống mức thấp Đơn vị nhớ ghi nhận chu kỳ bus trình đọc nhớ đặt byte hay word có địa lên data bus T3: µP đặt cấu hình để đường data bus nhập Trạng thái chủ yếu để nhớ có thời gian tìm kiếm byte hay word liệu T4: µP đợi liệu data bus Do đó, thực chốt data bus giải phóng đường điều khiển đọc nhớ Quá trình kết thúc chu kỳ bus T1 T2 T3 T4 Clk Address bus Địa Đọc nhớ hay I/O IOR hay MEMR Data bus Address bus Dữ liệu Địa vào Ghi nhớ hay I/O IOW hay MEMW Data bus Dữ liệu vào Hình 2.1 – Định chu kỳ bus Trong chu kỳ bus, µP thực đọc I/O, ghi I/O, đọc nhớ hay ghi nhớ Các đường address bus control bus dùng để xác định địa nhớ hay I/O hướng truyền liệu data bus Chú ý µP điều khiển tất trình nên nhớ bắt buộc phải cung cấp liệu vào lúc MEMR lên mức cao trạng thái T4 Nếu khơng, µP đọc liệu ngẫu nhiên không mong muốn data bus Để giải vấn đề này, ta dùng thêm trạng thái chờ (wait state) Phạm Hùng Kim Khánh Trang 23 Tài liệu vi xử lý Tổ chức hệ thống vi xử lý 2.1.2 Mô tả chân 10 11 12 13 14 15 16 17 18 19 20 GND VCC AD14 AD15 AD13 A16/S3 AD12 A17/S4 AD11 A18/S5 A19/S6 AD10 BHE/S7 AD9 MN/MX AD8 RD AD7 AD6 HOLD (RQ/GT0) AD5 HLDA (RQ/GT1) WR (LOCK) AD4 IO/M (S2) AD3 DT/R (S1) AD2 DEN (S0) AD1 ALE (QS0) AD0 INTA (QS1) NMI INTR TEST CLK READY GND RESET 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 8086 Hình 2.2 – Sơ đồ chân 8086 8086 có bus địa 20 bit, bus liệu 16 bit, chân nguồn 17 chân dùng cho chức điều khiển Tuy nhiên, ta dùng kỹ thuật ghép kênh thời gian (time multiplexing) phép chân có nhiều chức nên chân phân ra: - 16 chân liệu địa (AD0 ÷ AD15): chân đường địa trạng thái T1 liệu trạng thái T2 – T4 chân địa trạng thái chân nguồn 17 chân định điều khiển 8086 hoạt động chế độ tối thiểu (minimum mode) hay chế độ tối đa (maximum mode) Chế độ tối thiểu dùng cho hệ thống µP đơn giản cịn chế độ tối đa dùng cho hệ thống phúc tạp giao tiếp với nhớ I/O riêng Phạm Hùng Kim Khánh Trang 24 Tài liệu vi xử lý Tổ chức hệ thống vi xử lý ™ Các tín hiệu chung cho hai chế độ tối đa tối thiểu: Bảng 2.2: Chân Chức Bus liệu / địa AD15 ÷ AD0 A19/S6 ÷ A16/S3 Địa / trạng thái Điều khiển chế độ MX Điều khiển đọc RD Chờ kiểm tra điều khiển TEST READY Chờ trạng thái điều khiển RESET Reset hệ thống NMI Yêu cầu ngắt che INTR Yêu cầu ngắt CLK Xung nhịp hệ thống VCC +5V GND GND Loại chiều, trạng thái Ngõ trạng thái Ngõ vào Ngõ trạng thái Ngõ vào Ngõ vào Ngõ vào Ngõ vào Ngõ vào Ngõ vào Ngõ vào Ngõ vào ™ Các tín hiệu dùng chế độ tối thiểu: Bảng 2.3: Chân HOLD HLDA WR IO/ M DT/ R DEN BHE /S7 ALE INTA Chức Yêu cầu giữ Ghi nhận giữ Điều khiển ghi Điều khiển I/O nhớ Truyền / nhận liệu Cho phép liệu Đường trạng thái Cho phép chốt địa Ghi nhận ngắt Loại Ngõ vào Ngõ vào Ngõ trạng thái Ngõ trạng thái Ngõ trạng thái Ngõ trạng thái Ngõ trạng thái Ngõ Ngõ ™ Các tín hiệu dùng chế độ tối đa: Bảng 2.4: Chân RQ / GT1,0 LOCK S2 ÷ S0 QS1, QS2 Phạm Hùng Kim Khánh Chức Yêu cầu / cấp bus Điều khiển khóa ưu tiên bus Trạng thái chu kỳ bus Trạng thái hàng lệnh Loại chiều Ngõ trạng thái Ngõ trạng thái Ngõ Trang 25 Tài liệu vi xử lý Tổ chức hệ thống vi xử lý ™ Trạng thái bus: Bảng 2.5: Ngõ vào trạng thái S2 S1 S0 0 0 1 0 1 0 1 1 1 Chu kỳ CPU Ghi nhận ngắt Đọc I/O port Ghi I/O port Ngừng Nhận lệnh Đọc nhớ Ghi nhớ Thụ động ™ Trạng thái hàng lệnh: Bảng 2.6: QS1 0 1 QS0 1 Trạng thái hàng lệnh Không hoạt động Lấy byte lệnh Hàng rỗng Lấy byte ™ Nguồn cung cấp xung nhịp (VCC, GND CLK): - 8086 sử dụng nguồn cấp điện +5V có chân đất Dịng điện cực đại 340 mA (10 mA cho loại CMOS) Xung nhịp dùng dạng xung chữ nhật có chu kỳ với thời gian cạnh lên xuống nhỏ 10 ns Tiêu hao công suất tần số xung nhịp cực đại: ™ Các chân trạng thái chế độ tối đa (S0, S1 S2 - status): Các chân sử dụng điều khiển bus 8288 để tạo tín hiệu điều khiển bảng 2.5 ™ Các chân điều khiển bus (HOLD, HLDA, RQ / GT0 , RQ / GT1 , LOCK ): Chế độ tối thiểu: - HOLD (giữ): ngõ vào tác động mức cao làm cho µP hở mạch tất bus nó, tách µP khỏi nhớ I/O phép thiết bị khác xử lý Phạm Hùng Kim Khánh Trang 26 Tài liệu vi xử lý - Tổ chức hệ thống vi xử lý bus hệ thống Quá trình gọi truy xuất nhớ trực tiếp (DMA – Direct Memory Access) HLDA (Hold acknowledge): ghi nhận yêu cầu DMA điều khiển DMA Chế độ tối đa: - RQ / GT0 , RQ / GT1 (Request / Grant): chân dùng hai chức vào (nhận yêu cầu) (chấp nhận yêu cầu) Khi thiết bị muốn lấy điều khiển bus cục bộ, phát yêu cầu cách đưa tín hiệu mức thấp vào chân yêu cầu Sau nhận yêu cầu, 8086 trạng thái HOLD gởi tín hiệu chấp nhận chân Ở đây, chân RQ / GT0 có độ ưu tiên cao chân RQ / GT1 - LOCK : báo cho thiết bị khác biết lấy điều khiển bus cục ™ Các chân ngắt (NMI, INTR INTA ): INTR NMI yêu cầu ngắt khởi động phần cứng, làm việc xác ngắt mềm NMI (Non-Maskable Interrupt) ngõ vào tác động cạnh lên NMI ngắt che phục vụ, thường dùng cho kiện hư nguồn hay lỗi nhớ INTR tác động mức cao bị che cách xoá cờ IF ghi cờ (xem 2.3.4) lệnh CLI Khi NMI tích cực, điều khiển chuyển đến địa chứa vị trí 00008h ÷ 0000Bh Khi INTR tích cực, chu kỳ ghi nhận ngắt (interrupt acknowledge cycle) thực Quá trình giống chu kỳ đọc nhớ ngoại trừ INTA tích cực thay RD Thiết bị tạo ngắt đặt giá trị bit vào data bus chuyển điều khiển đến vị trí giá trị × đến giá trị × + ™ Chân RESET: hoạt động có xung tác động mức cao, dùng để khởi động lại (P Sau khởi động, (P đọc lệnh địa FFFF0h RESET sử dụng hệ thống có cố ™ Các chân điều khiển bus (READY, RD , ALE, DEN , DT/ R , WR IO/ M ): Trong chân điều khiển này, có hai chân READY RD làm việc chế độ tối đa - Chân READY: ngõ vào READY lấy mẫu cạnh lên xung nhịp T2 Nếu chân mức thấp (khơng sẵn sàng) thêm vào chu kỳ T3 Chu trình tiếp tục chân READY lên mức cao Ngõ vào thường điều khiển thiết bị nhớ chậm, cung cấp liệu kịp thời cho µP - Chân IO/ M (IO/Memory – Xuất nhập /Bộ nhớ): xác định chu kỳ bus hành làm việc với nhớ (mức thấp) hay I/O (mức cao) Phạm Hùng Kim Khánh Trang 27 Tài liệu vi xử lý - - Tổ chức hệ thống vi xử lý Chân RD (Read): tín hiệu tác động mức thấp chiều truyền liệu từ nhớ hay I/O đến µP Ta kết hợp với tín hiệu với IO/ M để tạo tín hiệu MEMR IOR Nó xuất trạng thái T2 lấy trạng thái T4 Thiết bị nhớ hay I/O giả sử đặt byte hay word vào đường liệu RD trở mức cao Chân WR (Write): tín hiệu ngược với RD , xác định chiều truyền liệu từ µP đến I/O hay nhớ RD 2 IO/ M 2 WR 2 3 3 MEMR IOR IOW MEMW Hình 2.3 – Tạo tín hiệu điều khiển nhớ I/O - Chân ALE (Address Latch Enable - cho phép chốt địa chỉ): tín hiệu chân dùng để phân kênh đường địa chỉ, liệu trạng thái AD0 ÷ AD15, A16/S3 ÷ A19/S6 BHE /S7 Mọi chu kỳ bắt đầu với xung ALE trạng thái T1 Địa 20 bit bảo đảm hợp lệ ALE chuyển từ mức cao xuống mức thấp - Chân DEN (Data Enable – cho phép liệu): tín hiệu dùng với DT/ R phép nối đệm hai chiều vào data bus Nó ngăn ngừa tranh chấp bus cách cấm đệm liệu trạng thái T2 đường liệu / địa khơng cịn lưu trữ địa nhớ hay I/O - Chân DT/ R (Data transmit/receive – truyền/nhận liệu): dùng để điều khiển chiều luồng liệu qua đệm (nếu có) vào bus liệu hệ thống Khi mức thấp, thực tác vụ đọc mức cao thực tác vụ ghi Phạm Hùng Kim Khánh Trang 28 Tài liệu vi xử lý Tổ chức hệ thống vi xử lý T1 T2 T3 T4 Clk ALE IO/ M Địa / trạng thái AD0 ÷ AD15 S3 ÷ S7 A16 ÷ A19, BHE Dữ liệu vào D0 ÷ D15 A0 ÷ A15 Chu kỳ đọc RD DT/ R DEN AD0 ÷ AD15 Dữ liệu D0 ÷ D15 A0 ÷ A15 Chu kỳ ghi RD DT/ R DEN Hình 2.4 – Các chu kỳ đọc ghi 8086 ™ Các chân trạng thái (AD16/S3 ÷ AD19/S6 BHE /S7): tín hiệu trạng thái xuất trạng thái T2 ÷ T4, dùng cho mục đích kiểm tra Bit S7 bit trạng thái dư (không dùng), bit S6 0, S5 mơ tả trạng thái cờ ngắt IF cịn S3, S4 dùng để xác định đoạn sử dụng: Bảng 2.7: S4 0 1 Phạm Hùng Kim Khánh S3 1 Đoạn Thêm Stack Mã (hay không) Dữ liệu Trang 29 Tài liệu vi xử lý Tổ chức hệ thống vi xử lý Tín hiệu BHE /S7 (Bus High Enable) xuất trạng thái T1 Khi chân mức thấp, AD8 ÷ AD15 liên quan đến việc truyền liệu Q trình xảy truy xuất nhớ, I/O hay truy xuất byte liệu từ địa lẻ ™ Bus liệu (AD0 ÷ AD15): 16 chân tạo thành bus liệu hai chiều Các đường hợp lệ trạng thái T2 ÷ T4 Trong trạng thái T1, chúng giữ 16 bit thấp địa nhớ I/O ™ Bus địa (AD0 ÷ AD15 AD16/S3 ÷ AD19/S6): 20 chân tương ứng với bus địa 20 bit cho phép µP truy xuất MB vị trí nhớ Các đường hợp lệ trạng thái T1, chuyển thành đường liệu trạng thái trạng thái T2 ÷ T4 ™ Chọn chế độ MX : Chân dùng để chọn chế độ hoạt động cho 8086, mức cao hoạt động chế độ tối thiểu cịn mức thấp hoạt động chế độ tối đa 2.2 Kiến trúc nội µP có khả thực tác vụ liệu theo tập lệnh bên Một lệnh ghi nhận mã định nghĩa trước, gọi mã lệnh (opcode) Trước thực thi lệnh, µP phải nhận mã lệnh từ nhớ chương trình Q trình xử lý gọi chu kỳ nhận lệnh (fetch cycle) Một mã nhận giải mã mạch bên µP tiến hành thực thi (execute) mã lệnh EU ← Hàng lệnh ← BIU Bus hệ thống Hình 2.5 – Kiến trúc nội µP 8086 BIU (Bus Interface Unit – đơn vị giao tiếp bus) nhận mã lệnh từ nhớ đặt chúng vào hàng chờ lệnh EU (Execute Unit – đơn vị thực thi) giải mã thực lệnh hàng Chú ý đơn vị EU BIU làm việc độc lập với nên BIU có khả nhận lệnh EU dang thực thi lệnh trước Khi EU thực xong lệnh, lấy mã lệnh hàng đợi lệnh (instruction queue) Phạm Hùng Kim Khánh Trang 30 Tài liệu vi xử lý Tổ chức hệ thống vi xử lý Kiến trúc nội µP 8086 hình 2.2 Nó có xử lý riêng: BIU EU BIU cung cấp chức phần cứng, bao gồm tạo địa nhớ I/O để chuyển liệu EU bên ngồi µP BIU EU Điều khiển bus sinh địa Σ AH AL BH BL CH CL DH DL CS BP ES DI SS SI DS SP IP Internal bus Thanh ghi cờ ALU Hình 2.6 – Kiến trúc nội 8086 EU nhận mã lệnh chương trình liệu từ BIU, thực thi lệnh chứa kết ghi Ngoài ra, liệu chứa vị trí nhớ hay ghi vào thiết bị xuất Chú ý EU khơng có bus hệ thống nên phải thực nhận xuất tất liệu thơng qua BIU Sự khác biệt µP 8086 8088 BIU Trong 8088, đường bus liệu bit 8086 16 bit Ngoài hàng lệnh 8088 dài byte 8086 byte Phạm Hùng Kim Khánh Trang 31 Tài liệu vi xử lý Tổ chức hệ thống vi xử lý Tuy nhiên EU hai loại µP giống nên chương trình viết cho 8086 chạy 8088 mà khơng cần thay đổi Q trình nhận lệnh thực thi lệnh: 1/ BIU xuất nội dung ghi trỏ lệnh IP (Instruction Pointer) bus địa để chọn byte hay word đọc vào BIU 2/ Thanh ghi IP tăng thêm để chuẩn bị nhận lệnh kế 3/ Khi lệnh BIU, đưa sang hàng lệnh (queue) Đây ghi lưu trữ dạng FIFO (First In First Out – Vào trước trước), dùng chế xử lý xen kẽ liên tục dòng mã lệnh (kỹ thuật đường ống – pipelining) 4/ Giả sử ban đầu hàng lệnh trống, EU khơng làm bắt đầu xuất lệnh hàng, EU lấy lệnh khỏi hàng bắt đầu thực thi lệnh 5/ Trong EU thực thi lệnh, BIU tiến hành nhận lệnh Tuỳ theo thời gian thực thi lệnh mà BIU đưa vào hàng lệnh nhiều lệnh trước EU thực lệnh xong tiếp tục lấy lệnh BIU lập trình để nhận lệnh lúc hàng lệnh có chỗ cho byte (8088) hay byte (8086) Lợi ích phương pháp xử lý theo chế pipeline EU thực thi lệnh gần liên tục thay phải đợi BIU nhận thêm lệnh Nhận Thực thi Nhận Thực thi Nhận Thực thi (a) Nhận (1) Chờ Nhận (2) Thực thi Nhận (3) Đọc Chờ Thực thi Nhận (4) Thực thi Nhận (4) Thực thi Nhận Chờ Nhận (b) (1): lệnh thực thi không cần liệu hàng (2): lệnh thực thi cần liệu hàng (3): lệnh nhảy (4): lệnh bị bỏ qua lệnh nhảy Hình 2.7 (a) µP thơng thường dùng chu kỳ nhận thực thi lệnh (b) kiến trúc dạng pipeline 8086/8088 cho phép thực thi lệnh mà khơng bị trễ q trình nhận lệnh Có điều kiện làm cho EU chế độ chờ: - Điều kiện thứ xảy lệnh cần truy xuất đến vị trí nhớ khơng hàng BIU phải treo q trình nhận lệnh xuất địa ô nhớ Sau truy xuất nhớ, EU tiếp tục trình thực thi lệnh từ hàng lệnh BIU tiếp tục đưa lệnh vào hàng Phạm Hùng Kim Khánh Trang 32 Tài liệu vi xử lý Tổ chức hệ thống vi xử lý - Điều kiện thứ hai xảy lệnh thực thi lệnh nhảy (jump) Trong trường hợp này, thay dùng địa lệnh kế tiếp, ta phải chuyển đến địa (không tuần tự) Tuy nhiên, BIU đặt lệnh theo lưu lệnh khơng sử dụng Trong nhận lệnh địa lệnh jump đến, EU phải đợi tất byte hàng phải bỏ - Điều kiện thứ ba làm BIU treo q trình nhận lệnh thực thi lệnh có thời gian thực thi lớn Giả sử lệnh AAM (ASCII Adjust for Multiplication) cần 83 chu kỳ xung nhịp để hoàn tất với chu kỳ xung nhịp cho trình nhận lệnh hàng bị đầy Như BIU phải đợi lệnh thực xong EU nhận mã lệnh từ hàng tiếp tục q trình nhận lệnh 2.3 Các ghi µP 8086/8088 có tất 14 ghi nội Các ghi phân loại sau: - Thanh ghi liệu (data register) - Thanh ghi số trỏ (index & pointer register) - Thanh ghi đoạn (segment register) - Thanh ghi trạng thái điều khiển (status & control register) 2.3.1 Các ghi liệu Các ghi liệu gồm có ghi 16 bit AX, BX, CX DX nửa cao nửa thấp ghi định địa cách độc lập Các nửa ghi (8 bit) có tên AH AL, BH BL, CH CL, DH DL Các ghi sử dụng phép toán số học logic hay trình chuyển liệu Bảng 2.8: Thanh ghi Sử dụng AX MUL, IMUL (tốn hạng nguồn kích thước word) DIV, IDIV (tốn hạng nguồn kích thước word) IN (nhập word) OUT (xuất word) CWD Các phép toán xử lý chuỗi (string) AL MUL, IMUL (tốn hạng nguồn kích thước byte) DIV, IDIV (tốn hạng nguồn kích thước byte) IN (nhập byte) OUT (xuất byte) XLAT AAA, AAD, AAM, AAS (các phép toán ASCII) CBW (đổi sang word) DAA, DAS (số thập phân) Các phép toán xử lý chuỗi (string) Phạm Hùng Kim Khánh Trang 33 Tài liệu vi xử lý AH BX CX CL DX Tổ chức hệ thống vi xử lý MUL, IMUL (tốn hạng nguồn kích thước byte) DIV, IDIV (tốn hạng nguồn kích thước byte) CBW (đổi sang word) XLAT LOOP, LOOPE, LOOPNE Các phép toán string với tiếp dầu ngữ REP RCR, RCL, ROR, ROL (quay với số đếm byte) SHR, SAR, SAL (dịch với số đếm byte) MUL, IMUL (tốn hạng nguồn kích thước word) DIV, IDIV (tốn hạng nguồn kích thước word) AX (ACC – Accumulator): ghi tích luỹ BX (Base): ghi sở CX (Count): đếm DX (Data): ghi liệu 2.3.2 Các ghi số trỏ Bao gồm ghi 16 bit SP, BP, SI DI, thường chứa giá trị offset (độ lệch) cho phần tử định địa phân đoạn (segment) Chúng sử dụng phép toán số học logic Hai ghi trỏ (SP – Stack Pointer BP – Base Pointer) cho phép truy xuất dễ dàng đến phần tử ngăn xếp (stack) hành Các ghi số (SI – Source Index DI – Destination Index) dùng để truy xuất phần tử đoạn liệu doạn thêm (extra segment) Thông thường, ghi trỏ liên hệ đến đoạn stack hành ghi số liên hệ đến doạn liệu hành SI DI dùng phép toán chuỗi 2.3.3 Các ghi đoạn Bao gồm ghi 16 bit CS (Code segment), DS (Data segment), SS (stack segment) ES (extra segment), dùng để định địa vùng nhớ MB cách chia thành 16 đoạn 64 KB Tất lệnh phải đoạn mã hành, định địa thông qua ghi CS Offset (độ lệch) mã xác định ghi IP Dữ liệu chương trình thường đặt đoạn liệu, định vị thông qua ghi DS Stack định vị thông qua ghi SS Thanh ghi đoạn thêm sử dụng để định địa toán hạng, liệu, nhớ phần tử khác đoạn liệu stack hành 2.3.4 Các ghi điều khiển trạng thái Thanh ghi trỏ lệnh IP (Instruction Pointer) giống đếm chương trình (Program Counter) Thanh ghi điều khiển BIU quản lý nhằm lưu trữ offset từ bắt đầu đoạn mã đến lệnh thực thi Ta xử lý trực tiếp ghi IP Thanh ghi cờ (Flag register) hay từ trạng thái 16 bit chứa bit điều khiển (TF, IF DF) bit trạng thái (OF, SF, ZF, AF, PF CF) bit lại mà 8086/8088 khơng sử dụng khơng thể truy xuất Phạm Hùng Kim Khánh Trang 34 Tài liệu vi xử lý 15 X 14 X 2.4 13 X Tổ chức hệ thống vi xử lý 12 X 11 10 OF DF IF TF SF ZF X AF X PF X CF OF (Overflow - tràn): OF = xác định tràn số học, xảy kết vượt phạm vi biểu diễn DF (Direction- hướng): xác định hướng chuyển string, DF = µP làm việc với string theo thứ tự từ phải sang trái IF (Interrupt - ngắt): cho phép hay cấm interrupt có mặt nạ TF (Trap - bẫy): đặt µP vào chế độ bước, dùng cho chương trình gỡ rối (debugger) SF (Sign - dấu): dùng để kết số học số dương (SF = 0) hay âm (SF = 1) ZF (Zero): = kết phép toán trước AF (Auxiliary – nhớ phụ): dùng số thập phân để nhớ từ nửa byte thấp hay mượn từ nửa byte cao PF (Parity): PF = kết phép tốn có tổng số bit chẵn (dùng để kiểm tra lỗi truyền liệu) CF (Carry): CF = có nhớ hay mượn từ bit cao kết Cờ dùng cho lệnh quay Phân đoạn nhớ Ta biết dù 8086 µP 16 bit (có bus liệu 16 bit) dùng nhớ theo byte Điều cho phép µP làm việc với byte word, quan trọng giao tiếp với thiết bị I/O máy in, thiết bị đầu cuối modem (chúng thiết kế để chuyển liệu mã hố ASCII hay bit) Ngồi ra, nhiều mã lệnh 8086/8088 có chiều dài byte nên cần phải truy xuất byte riêng biệt để xử lý lệnh 8086/8088 có bus địa 20 bit nên cho phép truy xuất 220 = 1048576 địa nhớ khác Byte 1048575 Word 524287 Byte 1048574 Byte Word Byte Hình 2.8 – Vùng nhớ 8086/8088 có 1048576 byte hay 524288 word Để thực đọc 16 bit từ nhớ, 8086 thực đọc đồng thời byte có địa lẻ byte có địa chẵn Do đó, 8086 tổ chức nhớ thành bank chẵn lẻ Theo hình 2.8, ta thấy word bắt đầu địa chẵn ta Phạm Hùng Kim Khánh Trang 35 Tài liệu vi xử lý Tổ chức hệ thống vi xử lý đọc word có địa lẻ cách thực chu kỳ đọc nhớ: chu kỳ đọc byte thấp chu kỳ đọc byte cao Điều làm chậm tốc độ xử lý Đối với 8088 bus liệu bit nên dù word có địa chẵn hay lẻ, cần phải thực chu kỳ đọc hay ghi nhớ giao tiếp với nhớ bank Byte 1048574 Byte 1048575 Byte 1048575 Byte 1048572 Byte 1048573 Byte 1048574 Byte Byte Byte Byte Byte Đọc lần Đọc lần Byte Byte Byte Word liệu 16 bit Hình 2.9 – Đọc word địa chẵn địa lẻ Ngoài nhớ chia thành 16 khối, khối có kích thước 64 KB, bắt đầu địa 00000h kết thúc FFFFFh Địa bắt đầu khối tăng lên số hex có ý nghĩa nhiều thay đổi từ khối sang khối Ví dụ khối 00000h → 10000h → 20000h … FFFFFh F0000h FFFFFh Dự trữ FFFFBh Dành riêng FFFF0h 20000h 10000h 0007Fh Dự trữ 00013h Dành riêng 00000h 00000h Hình 2.10 – Bảng nhớ cho 8086/8088 Phạm Hùng Kim Khánh Trang 36 Tài liệu vi xử lý Tổ chức hệ thống vi xử lý ™ Các ghi phân đoạn: 8086/8088 định nghĩa khối nhớ 64KB: đoạn mã (code segment) giữ mã lệnh chương trình, đoạn ngăn xếp (stack segment) lưu địa trả từ chương trình (subroutine) hay trình phục vụ ngắt (interrupt subroutine), đoạn liệu (data segment) lưu trữ liệu cho chương trình đoạn thêm (extra segment) thường dùng cho liệu dùng chung Các ghi đoạn (CS, DS, SS ES) dùng để vị trí đoạn Các ghi có 16 bit địa nhớ 20 bit nên để xác dịnh vị trí nhớ, ta thêm bit vào bit thấp ghi đoạn Giả sử ghi CS chứa giá trị 1111h tới địa 11110h Chú ý địa bắt đầu đoạn tuỳ ý mà phải bắt đầu địa chia hết cho 16 Nghĩa bit thấp phải Ta ý đoạn khơng tách rời mà chồng lấp lên ta cho giá trị ghi đoạn nghĩa đoạn trùng VD: Thanh ghi DS có giá trị 1000h địa 10000h Địa kết thúc tìm cách cộng địa với giá trị FFFFh (64K) → địa kết thúc 10000h + FFFFh = 1FFFFh Như đoạn liệu có địa từ 10000h = 1FFFFh Các vị trí nhớ khơng định nghĩa đoạn hành truy xuất Muốn truy xuất đến vị trí đó, ta phải định nghĩa lại ghi đoạn sau cho đoạn phải chứa vị trí Như vậy, thời điểm ta truy xuất tối đa × 64 KB = 256 KB nhớ Nội dung ghi đoạn xác định thơng qua phần mềm VD: Giả sử ghi đoạn có giá trị CS = 2800h, DS = E000h, SS = 2900h ES = 1000h Ta có vị trí đoạn bảng nhớ sau: EFFFFh Đoạn liệu E0000h 38FFFh 37FFFh 29000h 28000h Đoạn stack 29000h ÷ 38FFFh Đoạn mã 28000h ÷ 37FFFh 1FFFFh Đoạn thêm 10000h Hình 2.11 – Vị trí phân đoạn theo giá trị ghi đoạn Phạm Hùng Kim Khánh Trang 37 Tài liệu vi xử lý Tổ chức hệ thống vi xử lý ™ Địa logic địa vật lý: Các địa đoạn thay đổi từ 0000h ÷ FFFFh, tương ứng với chiều dài đoạn 64 KB Một địa đoạn gọi địa logic hay offset Ví dụ địa logic 0010h đoạn mã hình 2.11 có địa thật 28000h + 0010h = 28010h Địa gọi địa vật lý Như vậy, địa vật lý địa thật xuất bus địa chỉ, có chiều dài 20 bit cịn địa logic độ lệch (offset) từ vị trí đoạn cho trước VD: Giả sử xét đoạn hình 2.11 Địa vật lý tương ứng với địa logic 1000h đoạn stack là: 29000h + 1000h = 2A000h Địa vật lý tương ứng với địa logic 2000h đoạn mã là: 28000h + 2000h = 2A000h Ta thấy địa vật lý trùng địa logic khác nghĩa địa vật lý có nhiều địa logic khác Để địa logic 1000h đoạn mã, ta dùng ký hiệu CS:1000h Tương tự cho đoạn khác, nghĩa địa logic 1111h đoạn liệu DS:1111h Mọi lệnh tham chiếu nhớ có ghi đoạn Thanh ghi IP cung cấp địa offset truy xuất đến đoạn mã BP cho đoạn stack Ví dụ IP = 1000h CS = 2000h BIU truy xuất đến địa 20000h + 1000h = 21000h nhận byte vị trí Bảng 2.9: Tham chiếu nhớ Nhận lệnh Tác vụ stack Dữ liệu tổng quát Nguồn string Đích string BX dùng làm trỏ BP dùng làm trỏ Đoạn CS SS DS DS ES DS SS Đoạn khác Không Không CS,ES,SS CS,ES,SS Không CS,ES,SS CS,ES,SS Offset IP SP Địa hiệu dụng SI DI Địa hiệu dụng Địa hiệu dụng VD: Ta sử dụng lệnh MOV [BP],AL với BP = 2C00h Ở BP dùng làm trỏ nên dùng đoạn stack Giả sử phân đoạn hình 2.11 địa vật lý 29000h + 2C00h = 2BC00h ™ Định nghĩa vị trí nhớ: Thơng thường ta cần biết đến địa vật lý vị trí nhớ mà ta quan tâm đến địa logic mà thơi Lý địa vật lý cịn phải phụ thuộc vào nội dung ghi đoạn địa logic giữ không đổi xét Phạm Hùng Kim Khánh Trang 38 Tài liệu vi xử lý Tổ chức hệ thống vi xử lý Khi viết chương trình hợp ngữ, thường gán cho địa logic nhãn (label) hay tên (name) Ví dụ: DATA SEGMENT SAMPLEB DB ? DATA ENDS gán nhãn SAMPLE cho byte địa logic đoạn liệu Các phát biểu khơng phải lệnh µP mà lệnh giả (pseudo instruction) dùng cho chương trình dịch Tốn tử DATA SEGMENT báo cho chương trình dịch biết lệnh theo sau nằm đoạn liệu Toán tử DB (Define Byte) gán cho nhãn SAMPLEB byte đoạn liệu Ký hiệu ? xác định không cần định nghĩa nội dung byte Do SAMPLEB dịng nên có địa logic Phát biểu DATA ENDS kết thúc đoạn liệu (ở dịnh nghĩa byte) Trong trường hợp muốn định nghĩa word, ta dùng toán tử DW (Define Word) VD: SAMPLEW DW 1000h Phát biểu định nghĩa nhãn SAMPLEW ứng với vị trí word nội dung vị trí 1000h Ngồi ra, ta dùng toán tử DD định nghĩa từ kép (double word), DQ định nghĩa từ bốn (8 byte) DT định nghĩa 10 byte Cách mã hoá lệnh Lệnh vi xử lý biểu diễn ký tự dạng gợi nhớ (mnemonic) để dễ dàng sử dụng Đối với vi xử lý lệnh biểu diễn mã lệnh (opcode) nên sau nhận lệnh vi xử lý phải thực giải mã lệnh thực thi Một lệnh vi xử lý dài byte hay nhiều byte Nếu ta dùng byte để mã hoá mã hố 256 lệnh khác Tuy nhiên lệnh khơng phải có cách thực nên ta thực đơn giản Để tìm hiểu cách mã hố lệnh, ta xét lệnh MOV des,src dùng để chuyển liệu hai ghi hay ô nhớ ghi Lệnh MOV mã hoá sau: Byte 1 0 Byte Byte Byte Opcode D W Mod reg M/R Để mã hóa lệnh MOV, ta cần dùng byte bit dùng cho mã lệnh Bit D xác định hướng truyền liệu, D = xác định liệu từ ghi cho bit Reg, D = xác định liệu đến ghi cho bit Reg Bit W xác định truyền byte (W = 0) hay word (W = 1) bit Reg dùng để chọn ghi sử dụng: Phạm Hùng Kim Khánh Trang 39 Tài liệu vi xử lý Tổ chức hệ thống vi xử lý Bảng 2.10: Thanh ghi W=1 W=0 AX AL CX CL DX DL BX BL SP AH DI CH BP DH SI BH Mã 000 001 010 011 100 101 110 111 bit mod bit R/M (Register / Memory) dùng để xác định chế độ địa cho toán hạng lệnh Bảng 2.11: MOD R/M 000 001 010 011 100 101 110 111 00 01 10 [BX]+[SI] [BX]+[DI] [BP]+[SI] [BP]+[DI] [SI] [DI] addr16 [BX] [BX]+[SI]+addr8 [BX]+[DI]+addr8 [BP]+[SI] +addr8 [BP]+[DI] +addr8 [SI] +addr8 [DI] +addr8 [BP] +addr8 [BX] +addr8 [BX]+[SI]+addr16 [BX]+[DI]+addr16 [BP]+[SI] +addr16 [BP]+[DI] +addr16 [SI] +addr16 [DI] +addr16 [BP] +addr16 [BX] +addr16 W=1 AX CX DX BX SP BP SI DI 11 W=0 AL CL DL BL AH CH DH BH Tổng quát, 8086/8088 có khoảng 300 tác vụ có tập lệnh Mỗi lệnh kéo dài từ đến byte Từ ví dụ trên, ta thấy mã lệnh có vùng: - Vùng mã lệnh (opcode): chứa mã lệnh lệnh thực thi Vùng ghi (reg): chứa ghi thực (bảng 2.10) Vùng chế độ (mod): (bảng 2.11) 00: toán hạng nhớ trực tiếp R/M = 110, ngược lại toán hạng gián tiếp 01: toán hạng gián tiếp, độ dời bit 10: toán hạng gián tiếp, độ dời 16 bit 11: sử dụng ghi, vùng R/M vùng Reg - Vùng ghi / nhớ R/M (Reg/Mem): (bảng 2.11) Phạm Hùng Kim Khánh Trang 40 Tài liệu vi xử lý Tổ chức hệ thống vi xử lý Các cách định địa Bảng 2.12: Cách định địa Mã đối tượng Ví dụ Đoạn Hoạt động truy xuất Tức thời B80010 MOV AX,1000h Mã AH ← 10h AL ← 00h Thanh ghi 8BD1 MOV DX,CX Trong µP DX ← CX Trực tiếp 8A260010 MOV AH,[1000h] Dữ AH ← [1000h] liệu Dữ liệu Gián tiếp 8B04 MOV AX,[SI] AL ← [SI]; AH ←[SI+1] Dữ liệu ghi FF25 JMP [DI] IP←[DI+1:DI] Stack FE4600 INC BYTE PTR [BP] [BP]←[BP]+1 Dữ liệu FF0F DEC WORD PTR [BX] [BX+1:BX]← [BX+1:BX]-1 Có số 8B4406 MOV AX,[SI+6] Dữ liệu AL ← [SI+6]; AH ←[SI+7] FF6506 JMP [DI+6] Dữ liệu IP←[DI+7:DI+6] Có 8B4602 MOV AX,[BP+2] Stack AL←[BP+2]; AH ←[BP+3] FF6702 JMP [BP+2] Dữ liệu IP←[BX+3:BX+6] AL←[BX+SI];AH←[BX+SI+1] Có 8B00 MOV AX,[BX+SI] Dữ liệu IP←[BX+DI+1:BX+DI] có số FF21 JMP [BX+DI] Dữ liệu FE02 INC BYTE PTR [BP+SI] Stack [BP+SI]←[BP+SI]+1 DEC WORD PTR [BP+DI] Stack FF0B [BP+DI+1:BP+DI]← [BP+DI+1:BP+DI]-1 MOV AX,[BX+SI+5] Có 8B4005 Dữ liệu AL←[BX+SI+5] có số FF6105 AH←[BX+SI+1] JMP [BX+DI+5] với độ dời FE4205 Dữ liệu IP←[BX+DI+6:BX+DI+5] INC BYTE PTR [BP+SI+5] Stack FF4B05 [BP+SI+5]←[BP+SI+5]+1 DEC WORD PTR [BP+DI+5] Stack [BP+DI+6:BP+DI+5]← [BP+DI+6:BP+DI+5]-1 String A4 MOVSB Thêm, [ES:DI] ← [DS:DI] liệu Nếu DF = SI ← SI + 1; DI ← DI + Nếu DF = SI ← SI - 1; DI ← DI - - Từ gợi nhớ Mô tả (1) (2) (3) (4) (5) (6) (7) (8) (9) BYTE PTR WORD PTR tránh lầm truy xuất byte word Độ dời cộng vào ghi trỏ hay số nhị phân dạng bù (1): nguồn liệu lệnh (2): đích nguồn ghi µP (3): địa nhớ cung cấp lệnh (4): địa nhớ cung cấp ghi trỏ hay số (5): địa nhớ tổng ghi số cộng với độ dời lệnh (6): địa nhớ tổng ghi BX hay BP cộng với độ dời lệnh (7): địa nhớ tổng ghi số ghi Phạm Hùng Kim Khánh Trang 41 Tài liệu vi xử lý - Tổ chức hệ thống vi xử lý (8): địa nhớ tổng ghi số, ghi độ dời lệnh (9): địa nguồn nhớ ghi SI đoạn liệu địa đích nhớ ghi DI đoạn thêm 4.1 Định địa tức thời Các lệnh dùng cách định địa tức thời lấy liệu lệnh làm phần lệnh Trong cách này, liệu chứa đoạn mã thay đoạn liệu Dữ liệu cho lệnh MOV AX,1000h cung cấp tức thời sau mã lệnh B8 Chú ý mã đối tượng byte liệu cao sau byte liệu thấp Cách định địa tức thời thường dùng để nạp ghi hay vị trí nhớ với liệu ban đầu Sau đó, lệnh làm việc với liệu Tuy nhiên, cách định địa không sử dụng cho ghi đoạn 4.2 Định địa ghi Một số lệnh làm công việc chuyển liệu ghi µP Ví dụ MOV DX,CX chuyển liệu từ ghi CX vào ghi DX Ở ta không cần thực tham chiếu nhớ Ta kết hợp cách định địa tức thời định địa ghi để nạp liệu cho ghi đoạn VD: MOV AX, 1000h MOV CS,AX Sau thực lệnh này, giá trị ghi CS 1000h 4.3 Định địa trực tiếp Ngoài cách định địa trên, tất cách định địa lại cho bảng 2.6 cần phải truy xuất đến nhớ với tốn hạng Trong cách định địa trực tiếp, địa nhớ cung cấp trực tiếp phần lệnh Ví dụ lệnh MOV AH,[1000h] đưa nội dung chứa ô nhớ DS:1000h vào ghi AH hay lệnh MOV [2000h],AX đưa nội dung chứa AX vào ô nhớ liên tiếp DS:2000h DS:2001h 4.4 Định địa truy xuất nhớ gián tiếp Các cách định địa trực tiếp thuận lợi cho truy xuất nhớ không thường xuyên Tuy nhiên, ô nhớ cần phải truy xuất nhiều lần chương trình trình nhận địa (2 byte) phải thực nhiều lần Điều không hiệu Để giải vấn đề này, ta thực lưu trữ địa ô nhớ cần truy xuất ghi trỏ, số hay ghi sở (BX, BP, SI hay DI) Ngồi ra, ta sử dụng độ dời bù cách cộng vào ghi để dời so với vị trí ghi đến Phạm Hùng Kim Khánh Trang 42 Tài liệu vi xử lý Tổ chức hệ thống vi xử lý Bảng 2.13: Cách định địa Gián tiếp ghi Có số Có Có số Có số với độ dời Địa hiệu dụng (EA – Effective Address) Độ dời Thanh ghi Thanh ghi số Không BX hay BP Không Không Không SI hay DI Không SI hay DI -128 ÷ 127 BX hay BP Khơng -128 ÷ 127 BX hay BP SI hay DI Không BX hay BP SI hay DI -128 ÷ 127 Như vậy, độ dời cộng vào ghi kết cộng tiếp vào ghi số Địa thu gọi địa hiệu dụng EA Ngồi ta viết cách định địa gián tiếp sau: MOV AX,table[SI] Trong table nhãn gán cho vị trí ô nhớ Lệnh truy xuất phần tử thứ SI dãy table (giả sử SI = truy xuất phần tử thứ 2) Ta viết lệnh sau: MOV AX,[table + SI] Chú ý đoạn mặc định cho cách định địa gián tiếp đoạn stack dùng BP, đoạn liệu dùng BX, SI hay DI VD: Lệnh: MOV AH,10h MOV AX,[BP + 10] MOV AH,[BP + SI] 4.5 thực định địa tức thời thực định địa có thực định địa có có số Định địa chuỗi Chuỗi dãy liên tục byte hay word lưu trữ nhớ dạng ký tự ASCII 8086/8088 có lệnh dùng để xử lý chuỗi, lệnh sử dụng cặp ghi DS:SI để nguồn chuỗi ký tự ES:DI để đích chuỗi Lệnh MOVSB chuyển byte liệu nguồn đến vị trí đích SI DI tăng hay giảm tuỳ theo giá trị DF (xem 2.3.4 bảng 2.13) 4.6 Thay đổi ghi đoạn mặc định Như nói phần trên, sử dụng lệnh định địa ghi, ta cần dùng ghi để xác định độ lệch cịn ghi đoạn hiểu mặc định Ví dụ ta dùng lệnh MOV AH,[BP] đưa liệu nhớ SS:BP vào ghi AH Trong trường hợp không muốn dùng ghi đoạn mặc định, ta thay đổi cách thêm tên ghi đoạn vào để loại bỏ ghi đoạn mặc định Ví dụ lệnh MOV AH,CS:[BP] đưa liệu CS:[BP] vào AH Phạm Hùng Kim Khánh Trang 43 ... (LOCK) AD4 IO/M (S2) AD3 DT/R (S1) AD2 DEN (S0) AD1 ALE (QS0) AD0 INTA (QS1) NMI INTR TEST CLK READY GND RESET 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 8086 Hình 2. 2 – Sơ đồ chân... state) Phạm Hùng Kim Khánh Trang 23 Tài liệu vi xử lý Tổ chức hệ thống vi xử lý 2. 1 .2 Mô tả chân 10 11 12 13 14 15 16 17 18 19 20 GND VCC AD14 AD15 AD13 A16/S3 AD 12 A17/S4 AD11 A18/S5 A19/S6 AD10... I/O riêng Phạm Hùng Kim Khánh Trang 24 Tài liệu vi xử lý Tổ chức hệ thống vi xử lý ™ Các tín hiệu chung cho hai chế độ tối đa tối thiểu: Bảng 2. 2: Chân Chức Bus liệu / địa AD15 ÷ AD0 A19/S6 ÷ A16/S3

Ngày đăng: 11/05/2021, 02:14