Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 24 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
24
Dung lượng
537,02 KB
Nội dung
Tổ chức hệ thống vi xử lý Tổ chức hệ thống vi xử lý Bởi: Phạm Hùng Kim Khánh 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 1: Kiến trúc µP Intel bit, 16 bit 32 bit 1/24 Tổ chức hệ thống vi xử lý µP 8086/8088 Mô tả Đị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 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 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 2/24 Tổ chức hệ thống vi xử lý Đị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 µ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) Mô tả chân 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 3/24 Tổ chức hệ thống vi xử lý 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 chế độ tối đa dùng cho hệ thống phúc tạp giao tiếp với nhớ I/O riêng • Các tín hiệu chung cho hai chế độ tối đa tối thiểu: • Các tín hiệu dùng chế độ tối thiểu: • Các tín hiệu dùng chế độ tối đa: • Trạng thái bus: 4/24 Tổ chức hệ thống vi xử lý Bảng 4:Trạng thái bus • Trạng thái hàng lệnh: • 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, ): 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ý 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 5/24 Tổ chức hệ thống vi xử lý 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 và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) - 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 6/24 Tổ chức hệ thống vi xử lý - 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ớ 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 /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 (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 lưu trữ địa nhớ hay I/O - Chân DT/ (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 7/24 Tổ chức hệ thống vi xử lý 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 S3, S4 dùng để xác định đoạn sử dụng: Tín hiệu /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 Quá trình xảy truy xuất nhớ, I/O hay truy xuất byte liệu từ địa lẻ 8/24 Tổ chức hệ thống vi xử 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 mức thấp hoạt động chế độ tối đa 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 Quá 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 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) Kiến trúc nội µP 8086 hình 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 µP 9/24 Tổ chức hệ thống vi xử lý 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 EU 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 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 10/24 Tổ chức hệ thống vi xử lý Quá 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 (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ễ trình nhận lệnh (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 Có điều kiện làm cho EU chế độ chờ: 11/24 Tổ chức hệ thống vi xử lý - Đ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 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 - Đ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 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 trình nhận lệnh 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) 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 12/24 Tổ chức hệ thống vi xử lý AX (ACC - Accumulator): ghi tích luỹ BX (Base): ghi sở CX (Count): đếm DX (Data): ghi liệu 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 13/24 Tổ chức hệ thống vi xử lý 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 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 truy xuất - 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 14/24 Tổ chức hệ thống vi xử lý - PF (Parity): PF = kết phép toá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ã hoá ASCII hay bit) Ngoà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 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 8, ta thấy word bắt đầu địa chẵn ta đọ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 15/24 Tổ chức hệ thống vi xử lý Đọ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 … Bảng nhớ cho 8086/8088 • 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 16/24 Tổ chức hệ thống vi xử lý 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 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 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: Vị trí phân đoạn theo giá trị ghi đoạn • Đị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ý 17/24 Tổ chức hệ thống vi xử lý Như vậy, địa vật lý địa thật xuất bus địa chỉ, có chiều dài 20 bit địa logic độ lệch (offset) từ vị trí đoạn cho trước Giả sử xét đoạn hình Đị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 IP = 1000h CS = 2000h BIU truy xuất đến địa 20000h + 1000h = 21000h nhận byte vị trí 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à Lý địa vật lý phải phụ thuộc vào nội dung ghi đoạn địa logic giữ không đổi xét Khi viết chương trình hợp ngữ, thường gán cho địa logic nhãn (label) hay tên (name) 18/24 Tổ chức hệ thống vi xử lý 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 lệnh µP mà lệnh giả (pseudo instruction) dùng cho chương trình dịch Toá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) 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 Ngoà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ã hoá 256 lệnh khác Tuy nhiên lệnh có cách thực nên ta thực đơn giản Để tìm hiểu cách mã hoá 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: Để mã hóa lệnh MOV, ta cần dùng byte bit dùng cho mã lệnh 19/24 Tổ chức hệ thống vi xử lý 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: bit mod bit R/M (Register / Memory) dùng để xác định chế độ địa cho toán hạng lệnh 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 20/24 Tổ chức hệ thống vi xử lý - Vùng ghi / nhớ R/M (Reg/Mem) Các cách định địa - 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 21/24 Tổ chức hệ thống vi xử lý - (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 - (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 Đị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 Đị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 MOV AX, 1000h MOV CS,AX Sau thực lệnh này, giá trị ghi CS 1000h Đị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 toá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 22/24 Tổ chức hệ thống vi xử lý Đị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) Ngoà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 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 Ngoà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 Lệnh: MOV AH,10h thực định địa tức thời MOV AX,[BP + 10] thực định địa có MOV AH,[BP + SI] thực định địa có có số 23/24 Tổ chức hệ thống vi xử lý Đị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 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 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 24/24 [...]... từ bộ bốn (8 byte) và DT định nghĩa 10 byte Cách mã hoá lệnh Lệnh của bộ vi xử lý sẽ biểu diễn bằng các ký tự dưới dạng gợi nhớ (mnemonic) để có thể dễ dàng sử dụng Đối với vi xử lý thì các lệnh được biểu diễn bằng các mã lệnh (opcode) nên sau khi nhận lệnh vi xử lý phải thực hiện giải mã lệnh rồi mới thực thi nó Một lệnh vi xử lý có thể dài 1 byte hay nhiều byte Nếu ta dùng 1 byte để mã hoá thì sẽ... nhớ cung cấp trong thanh ghi con trỏ hay chỉ số - (5): địa chỉ bộ nhớ là tổng của thanh ghi chỉ số cộng với độ dời trong lệnh 21/24 Tổ chức hệ thống vi xử lý - (6): địa chỉ bộ nhớ là tổng của thanh ghi BX hay BP cộng với độ dời trong lệnh - (7): địa chỉ bộ nhớ là tổng của thanh ghi chỉ số và thanh ghi nền - (8): địa chỉ bộ nhớ là tổng của thanh ghi chỉ số, thanh ghi nền và độ dời trong lệnh - (9): địa... chỉ logic và địa chỉ vật lý: Các địa chỉ trong một đoạn thay đổi từ 0000h ÷ FFFFh, tương ứng với chiều dài đoạn là 64 KB Một địa chỉ trong một đoạn được gọi là địa chỉ logic hay offset Ví dụ như địa chỉ logic 0010h của đoạn mã trong hình 2.11 sẽ có địa chỉ thật sự là 28000h + 0010h = 28010h Địa chỉ này gọi là địa chỉ vật lý 17/24 Tổ chức hệ thống vi xử lý Như vậy, địa chỉ vật lý chính là địa chỉ thật... dùng để truy xuất các phần tử trong các đoạn dữ liệu và doạn thêm (extra segment) Thông thường, các thanh ghi con trỏ liên hệ đến đoạn stack hiện hành và các thanh ghi chỉ số liên hệ đến doạn dữ liệu hiện hành SI và DI dùng trong các phép toán chuỗi 13/24 Tổ chức hệ thống vi xử lý Các thanh ghi đoạn Bao gồm các thanh ghi 16 bit CS (Code segment), DS (Data segment), SS (stack segment) và ES (extra segment),... cao 14/24 Tổ chức hệ thống vi xử lý - PF (Parity): PF = 1 nếu kết quả của phép toán là có tổng số bit 1 là chẵn (dùng để kiểm tra lỗi truyền dữ liệu) - CF (Carry): CF = 1 nếu có nhớ hay mượn từ bit cao nhất của kết quả Cờ này cũng dùng cho các lệnh quay Phân đoạn bộ nhớ Ta biết rằng dù 8086 là µP 16 bit (có bus dữ liệu 16 bit) nhưng vẫn dùng bộ nhớ theo các byte Điều này cho phép µP làm vi c với byte... 2 chu kỳ đọc bộ nhớ: một chu kỳ đọc byte thấp và một chu kỳ đọc byte cao Điều này sẽ làm chậm tốc độ xử lý Đối với 8088 thì do bus dữ liệu 8 bit nên dù word có địa chỉ chẵn hay lẻ, nó cũng cần phải thực hiện 2 chu kỳ đọc hay ghi bộ nhớ và giao tiếp với bộ nhớ như một bank 15/24 Tổ chức hệ thống vi xử lý Đọc word địa chỉ chẵn và địa chỉ lẻ Ngoài ra bộ nhớ cũng chia thành 16 khối, mỗi khối có kích thước... thời MOV AX,[BP + 10] thực hiện định địa chỉ có nền MOV AH,[BP + SI] thực hiện định địa chỉ có nền và có chỉ số 23/24 Tổ chức hệ thống vi xử lý Định địa chỉ chuỗi Chuỗi là một dãy liên tục các byte hay word lưu trữ trong bộ nhớ dưới dạng các ký tự ASCII 8086/8088 có các lệnh dùng để xử lý chuỗi, các lệnh này sử dụng cặp thanh ghi DS:SI để chỉ nguồn chuỗi ký tự và ES:DI để chỉ đích chuỗi Lệnh MOVSB sẽ.. .Tổ chức hệ thống vi xử lý Quá trình nhận lệnh và thực thi lệnh: 1/ BIU xuất nội dung của thanh ghi con trỏ lệnh IP (Instruction Pointer) ra bus địa chỉ để chọn byte hay word đọc vào BIU 2/ Thanh ghi IP được tăng thêm 1 để chuẩn bị nhận lệnh kế 3/ Khi lệnh ở trong BIU, nó được đưa sang hàng lệnh (queue) Đây là một thanh ghi lưu trữ dạng FIFO (First In First Out - Vào trước ra trước), dùng cơ chế xử. .. 19/24 Tổ chức hệ thống vi xử lý Bit D xác định hướng truyền của dữ liệu, D = 0 xác định dữ liệu sẽ đi từ thanh ghi cho bởi 3 bit Reg, D = 1 xác định dữ liệu sẽ đi đến thanh ghi cho bởi 3 bit Reg Bit W xác định sẽ truyền 1 byte (W = 0) hay 1 word (W = 1) 3 bit Reg dùng để chọn thanh ghi sử dụng: 2 bit mod và 3 bit R/M (Register / Memory) dùng để xác định chế độ địa chỉ cho các toán hạng của lệnh Tổng... lệnh (1): lệnh thực thi không cần dữ liệu trong hàng (2): lệnh thực thi cần dữ liệu trong hàng (3): lệnh nhảy (4): các lệnh bị bỏ qua do lệnh nhảy Có 3 điều kiện làm cho EU ở chế độ chờ: 11/24 Tổ chức hệ thống vi xử lý - Điều kiện thứ nhất xảy ra khi lệnh cần truy xuất đến một vị trí bộ nhớ không ở trong hàng BIU phải treo quá trình nhận lệnh và xuất ra địa chỉ của ô nhớ này Sau khi truy xuất bộ nhớ, EU ... khiển 3/24 Tổ chức hệ thống vi xử lý 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 chế độ tối đa dùng cho hệ thống phúc... bị khác 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 5/24 Tổ chức hệ thống vi xử lý Chế... 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ử