Cấu trúc vi xử lý 16bit 8086/88

42 3.3K 14
Cấu trúc vi xử lý 16bit 8086/88

Đ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

Cấu trúc vi xử lý 16bit 8086/88

Chương III CẤU TRÚC VI XỬ LÝ 8086/88 CẤU TRÚC BÊN TRONG VI XỬ LÝ 8086/88 CÁC THANH GHI BÊN TRONG VI XỬ LÝ BỘ NHỚ PHÂN ĐOẠN CỦA VI XỬ LÝ RESET VI XỬ LÝ TÓM TẮT PHẦN CỨNG VI XỬ LÝ 8086 a Khảo sát đặc tính điện b Mô tả chân vi xử lý c Tạo xung clock mạch reset 8086/88 CÁC PHƯƠNG PHÁP ĐỊNH ĐỊA CHỈ CỦA VI XỬ LYÙ 8086 Cách định địa dùng ghi Các định địa tức thời Các định địa trực tiếp Các cách định địa gián tiếp a Định địa gián tiếp ghi b Định địa c Định địa chỉ số d Định địa số với độ dời Các định địa chuỗi Các định địa cổng Các định địa ngăn xếp Các quy tắc kết ghi đoạn ghi offset TẬP LỆNH CỦA VI XỬ LÝ 8086 Mã lệnh vi xử lý 8086/88 Tổng quan tập lệnh vi xử lý 8086 Khảo sát tập lệnh vi xử lý 8086 CÂU HỎI VÀ BÀI TẬP Chương 3: Cấu trúc vi xử lý 16 bit 8086/88 SPKT – Nguyễn Đình Phú LIỆT KÊ CÁC HÌNH Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình 3-1 Cấu trúc bên vi xử lý 8086/88 3-2 Quá trình nhận lệnh thực thi lệnh 3-3 14 ghi bên vi xử lý 3-4 Các ghi đoạn quản lý vùng nhớ 3-5 Các bit ghi cờ 3-6 Tổ chức nhớ vi xử lý 8086 3-7 Sơ đồ chân vi xử lý 8086 vi xử lý 8088 3-8 Giản đồ thời gian truy xuất nhớ vi xử lý 8086 3-9 Tạo tín hiệu ghi đọc nhớ IO 3-10 Vi xử lý hoạt động chế độ tối thiểu 3-11 Vi xử lý hoạt động chế độ tối đa 3-12 Mạch tạo tín hiệu reset 3-13a Trước thực lệnh MOV AX, BX 3-13b Sau thực lệnh MOV AX, BX 3-14a Trước thực lệnh MOV AL,15H 3-14b Sau thực lệnh MOV AL,15H 3-15a Trước thực lệnh MOV CX,BETA 3-15b Sau thực lệnh MOV CX,BETA 3-16a Trước thực lệnh MOV AX,[SI] 3-16b Sau thực lệnh MOV AX,[SI] 3-17a Trước thực lệnh MOV [BX] +BETA,AL 3-17b Sau thực lệnh MOV [BX] +BETA,AL 3-18a Trước thực lệnh MOV AL,[SI] +ARRAY 3-18b Sau thực lệnh MOV AL,[SI] +ARRAY 3-19a Trước thực lệnh MOV AX,[BX] [SI] +BETA 3-19b Sau thực lệnh MOV AX,[BX] [SI] +BETA 3-20 Hoạt động ngăn xếp với lệnh PUSH 3-21 Dạng mã lệnh LIỆT KÊ CÁC BẢNG Baûng Baûng Baûng Baûng Baûng Baûng Baûng Baûng Baûng Baûng Bảng Bảng Bảng 78 3-1 Các ghi sử dụng hiểu ngầm 3-2 Bảng địa 20 bit 3-3 Các đoạn nhớ độc lập 3-4 Trạng thái ghi vi xử lý bị reset 3-5 Đặc tính điện 3-6 Đặt tính tốc độ công suất tiêu tán 3-7 Mã hoá truy xuất nhớ vi xử lý 8086 3-8 Tính toán địa hiệu dụng cho cách định địa gián tiếp 3-9 Qui tắt kết hợp ghi đoạn ghi offset 3-10 Bảng liệt kê giá trị REG 3-11 Bảng liệt kê giá trị MOD 3-12 Bảng liệt kê giá trị R/M 3-13 Bảng liệt kê chu lệnh Vi xử lý Chương 3: Cấu trúc vi xử lý 16 bit 8086/88 I SPKT – Nguyễn Đình Phú CẤU TRÚC CỦA VI XỬ LÝ 8086/88: CẤU TRÚC BÊN TRONG VI XỬ LÝ 8086/88: Như trình bày phần giới thiệu chương khảo sát vi xử lý 16 bit vi xử lý tiêu biểu 8086/88 Cấu trúc bên vi xử lý gồm hai khối hình 3-1, tổ chức thành xử lý riêng BIU (Bus Interface Unit) EU (Execution Unit) Hình 3-1 Cấu trúc bên vi xử lý 8086/88 Chức khối BIU: đón mã lệnh từ nhớ đặt chúng vào hàng chờ lệnh Khối EU giải mã thực thi mã lệnh hàng chờ lệnh Vì đơn vị làm việc độc lập với nên khối BIU nhận lệnh EU thực thi lệnh trước Khi khối EU sẵn sàng thực thi lệnh tìm thấy mã lệnh đợi hàng chờ lệnh Chức khối EU: nhận mã lệnh chương trình liệu từ BIU, thực thi lệnh gởi trở kết trở lại cho khối BIU để lưu vào ghi hay nhớ xuất thiết bị giao tiếp Chú ý: khối EU kết nối với bus hệ thống nên nhận xuất liệu thông qua khối BIU Vi xử lý 79 Chương 3: Cấu trúc vi xử lý 16 bit 8086/88 SPKT – Nguyễn Đình Phú Vi xử lý 8088 vi xử lý 16 bit, khác vi xử lý 8086 8088 khối BIU: vi xử lý 8086 bus liệu giao tiếp bên bên 16 bit vi xử lý 8088 bus bên 16 bit bus bên có bit Sự khác dẫn đến tổ chức nhớ giao tiếp với vi xử lý 8086 8088 khác Vi xử lý 8088 nhớ tổ chức theo byte, vi xử lý 8086 nhớ tổ chức theo word (2 byte) Một điểm khác biệt thứ hàng đợi lệnh vi xử lý 8086 có byte vi xử lý 8088 có byte Còn tất khối lại giống nên điều cho phép chương trình cho 8086 chạy vi xử lý 8088 Quá trình nhận lệnh thực thi: Bước 1: Khối BIU xuất nội dung ghi trỏ lệnh IP (Instruction Pointer) bus địa để truy xuất nhớ tiến hành đọc mã lệnh lưu vào khối BIU Bước 2: Tăng ghi trỏ lệnh lên để trỏ đến lệnh kế Bước 3: Khi mã lệnh đưa vào BIU chuyển vào hàng chờ lệnh (queue) Hàng chờ lệnh ghi tổ chức theo kiểu vào trước trước (FIFO = First In First Out) Bước 4: Giả sử ban đầu hàng đợi lệnh trống khối EU lấy mã lệnh thực mã lệnh Bước 5: Trong khối EU thực thi lệnh khối BIU tiến hành nhận mã lệnh Tuỳ thuộc vào thời gian thực thi lệnh mà khối BIU lấy nhiều mã lệnh trước khối EU lấy mã lệnh kế Khối BIU lập trình để nhận lệnh hàng đợi chổ trống Sự kết hợp có ưu điểm khối EU thực lệnh liên tục chờ nhận mã lệnh so với vi xử lý trước nhờ khối BIU dẫn đến làm tăng tốc độ xử lý chương trình Toàn trình thực minh hoạ hình 3-2: Hình (a) Kiểu thực vi xử lý theo cách thông thường Hình (b) Kiểu thực vi xử lý theo cấu trúc đường ống Hình 3-2 Quá trình nhận lệnh thực thi lệnh 80 Vi xử lý Chương 3: Cấu trúc vi xử lý 16 bit 8086/88 Ghi chú: SPKT – Nguyễn Đình Phú (1) Các mã lệnh bị bỏ qua (2) Lệnh cần liệu không nằm hàng đợi (3) Khi thực lệnh Jump (Fetch: đón lệnh từ nhớ, Execute: thực lệnh, Read data: đọc liệu, Wait: đợi) Trong trình khối BIU nhận mã lệnh đưa vào hàng đợi khối EU thực thi lệnh xảy trường hợp khối EU phải rơi vào trạng thái chờ khối BIU rơi vào trạng thái chờ Trường hợp 1: xảy lệnh cần truy xuất đến ô nhớ để lấy liệu hàng đợi Trong trường hợp khối BIU phải tạm ngừng việc nhận mã lệnh mà tiến hành xuất địa để nhận liệu từ nhớ gởi cho khối EU Sau thực thi xong khối EU tiếp tục nhận mã lệnh từ hàng BIU tiếp tục đón mã lệnh gởi vào hàng Trường hợp 2: xảy lệnh thực thi lệnh nhảy “jump” Trong trường hợp khối EU nhảy tới thực lệnh địa mới, khối BIU nhận mã lệnh kế, EU phải đợi khối BIU nhận địa nơi nhảy đến, sau nhận địa từ khối BIU khối EU nhảy khối BIU tiếp tục nhận mã lệnh từ nhớ đưa vào hàng đợi Trường hợp 3: trường hợp làm BIU ngừng nhận mã lệnh Trường hợp xảy khối EU thực thi lệnh nhiều thời gian Ví dụ lệnh AAM (lệnh hiệu chỉnh thập phân cho lệnh nhân) cần 83 chu kỳ xung nhịp thực xong, khối BIU cần xung nhận xong mã lệnh nên BIU nhận mã lệnh làm đầy hàng đợi EU chưa thực xong lệnh nên BIU phải chờ Quá trình nhận lệnh EU thực thi lệnh có tiện ích sử dụng nhớ có tốc độ truy xuất chậm mà không làm ảnh hưởng đến suất hệ thống nhờ có kiến trúc đường ống Chuẩn PC: Với bus liệu 16 bit cần dãy nhớ thời điểm nhớ đắt tiền Do Intel cho đời vi xử lý 8088 hoàn toàn giống 8086 ngoại trừ bus liệu bên bit Vi xử lý 81 Chương 3: Cấu trúc vi xử lý 16 bit 8086/88 SPKT – Nguyễn Đình Phú Sau IBM cho đời máy tính IBM-PC sử dụng vi xử lý 8088 nhớ 16Kbyte (có thể mở rộng lên đến 64Kbyte) cho máy tính PC chuẩn với tốc xung clock 4.77 MHz CÁC THANH GHI TRONG VI XỬ LÝ 8086/88: Vi xử lý 8086/88 có 14 ghi phân loại sau: Các ghi liệu Các ghi số trỏ Các ghi đoạn hay gọi ghi phân đoạn Các ghi trạng thái điều khiển Hình 3-3 trình bày ghi bên vi xử lý 8086/88: Hình 3-3 14 ghi bên vi xử lý a Khảo sát ghi liệu: Các ghi liệu bao gồm ghi có tên ghi AX, BX, CX DX, chúng ghi 16 bit nên cho phép lưu trữ liệu 16 bit Mỗi ghi chia làm ghi: ghi lưu trữ byte thấp (Low) ghi lưu trữ byte cao (High) truy xuất độc lập cụ thể là: • AH, AL – chia từ ghi AX • BH, BL – chia từ ghi BX • CH, CL – chia từ ghi CX • DH, DL – chia từ ghi DX Chức ghi: dùng để thực phép toán số học, phép toán logic chuyển liệu 82 Vi xử lý Chương 3: Cấu trúc vi xử lý 16 bit 8086/88 SPKT – Nguyễn Đình Phú Có số ghi sử dụng hiểu ngầm số lệnh cho bảng 3-1 Thanh ghi Được hiểu ngầm số lệnh: AX MUL, IMUL, DIV, IDIV IN, OUT, CWD phép toán chuỗi AL MUL, IMUL, DIV, IDIV, IN, OUT AAA, AAD, AAM, AAX, CBW DAA, DAS phép toán chuỗi AH MUL, IMUL, DIV, IDIV, CBW DX XLAT CX LOOP, LOOPE, LOOPNE Các phép toán string với tiếp đầu ngữ REP CL RCR, RCL, ROR, ROL (quay với số lần lưu CL) SHR, SAR, SAL (dịch với số lần lưu CL) DX MUL, IMUL, DIV, IDIV Bảng 3-1 Các ghi sử dụng hiểu ngầm • Thanh ghi tích lũy AX (Accumulator): Là ghi sử dụng nhiều lệnh số học, lệnh logic truyền liệu với lý sử dụng ghi tạo mã máy ngắn Trong phép toán nhân chia số hạn tham gia phải chứa AH AL, thao tác vào sử dụng ghi AH AL • Thanh ghi sở BX (Base): Thanh ghi BX dùng cho tính toán địa phương pháp định địa gián tiếp • Thanh ghi đếm CX (Count): Việc thực vòng lặp thực dễ dàng nhờ ghi CX, CX đóng vai trò đếm vòng lặp Môät lệnh thường sử dụng ghi CX lệnh REP (Repeat) CL sử dụng biến đếm lệnh dịch hay xoay bit • Thanh ghi liệu DX (Data): DX dùng để định địa gián tiếp thao tác xuất nhập (In/Out), sử dụng chứa toán hạn, kết phép nhân chia b Khảo sát ghi số ghi trỏ: Các ghi SP, BP, SI DI ghi 16 bit dùng để chứa giá trị offset (còn gọi độ lệch) định địa nhớ đoạn (segment) Các ghi sử dụng phép toán số học logic Hai ghi trỏ SP BP dùng để quản lý nhớ ngăn xếp hành Hai ghi số SI DI dùng để truy xuất hay quản lý vùng nhớ liệu vùng nhớ liệu mở rộng (extra segment) • Thanh ghi trỏ ngăn xếp SP (Stack Pointer): Vi xử lý 83 Chương 3: Cấu trúc vi xử lý 16 bit 8086/88 SPKT – Nguyễn Đình Phú Dùng để kết hợp với ghi đoạn SS (Stack Segment) để quản lý địa nhớ ngăn xếp • Thanh ghi trỏ sở BP (Base Pointer): Thanh ghi dùng để truy cập liệu ngăn xếp mà không làm thay đổi SP Tuy nhiên, khác với SP ghi BP sử dụng để truy cập liệu vùng nhớ khác • Thanh ghi số nguồn SI (Source Index): Thanh ghi SI sử dụng để trỏ tới ô nhớ đoạn liệu định ghi đoạn liệu DS (Data Segment), truy cập dễ dàng ô nhớ liên tiếp cách tăng giá trị ghi SI • Thanh ghi số đích DI (Destination Index): Thanh ghi DI có chức tương tự ghi SI dùng kết hợp với ghi đoạn mở rộng ES (Extra Segment) Cả hai DI SI thích hợp thao tác chép, di chuyển so sánh khối liệu có dung lượng đến 64kB c Khảo sát ghi đoạn: Có ghi đoạn CS, DS, SS ES ghi 16 bit Trước trình bày chức ghi cần phân tích nhớ giao tiếp với vi xử lý 8086/88 Bộ nhớ tập hợp byte ô nhớ byte có địa xác định Vi xử lý 8086/88 có 20 đường địa để giao tiếp với nhớ có dung lượng Mbyte, ô nhớ có địa 20 bit Các byte nhớ có địa sau: A19 A18 A17 A16 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 HEX 0 0 0 0 0 0 0 0 0 0 00000 0 0 0 0 0 0 0 0 0 00001 0 0 0 0 0 0 0 0 0 00002 … 1 1 1 1 1 1 1 1 1 1 FFFFF Bảng 3-2 Bảng địa 20 bit Do địa ô nhớ 20 bit chứa ghi 16 bit vi xử lý 8086/88 nên 8086/88 chia nhớ 1Mbyte thành 16 đoạn nhớ (Memory Segment) 16 đoạn nhớ ghi đoạn quản lý gọi ghi segment trình bày hình 3-4: 84 Vi xử lý Chương 3: Cấu trúc vi xử lý 16 bit 8086/88 SPKT – Nguyễn Đình Phú Hình 3-4 Các ghi đoạn quản lý vùng nhớ Mỗi đoạn nhớ có dung lượng 64Kbyte có địa từ 0000H FFFFH Để quản lý địa vùng nhớ đoạn phải sử dụng ghi 16 bit gọi ghi offset – địa đoạn gọi địa offset Khi địa vật lý (còn gọi địa logic) ô nhớ xác định cách kết hợp “thanh ghi quản lý địa đoạn” “thanh ghi quản lý địa lệnh” segment:offset Trong hình 3-4 có cho ví dụ địa segment:offset = 0FE6:012Bh địa segment 0FE6H địa offset 012BH Để tìm địa vật lý (Physical Address = PA) ô nhớ vi xử lý phải dịch địa segment bên trái bit (bit thêm vào bit 0) hay xem thêm vào số 0H bên trái (địa 0FE6H sau dịch trở thành 0FE60H )và sau cộng với địa offset (012BH), kết địa vật lý ô nhớ có địa 0FE6:012Bh 0FF8Bh Bốn ghi đoạn có chức quản lý vùng nhớ đoạn tương ứng: Thanh ghi đoạn CS với ghi offset có chức quản lý đoạn nhớ chứa mã lệnh (Code Segment) Thanh ghi đoạn ES với ghi offset có chức quản lý đoạn nhớ mở rộng (Extra Segment) Thanh ghi đoạn SS với ghi offset có chức quản lý đoạn nhớ ngăn xếp chứa liệu tạm thời (Stack Segment) Thanh ghi đoạn DS với ghi offset có chức quản lý đoạn nhớ chứa liệu (Data Segment) Vùng nhớ 1Mbyte chia làm 16 đoạn độc lập bảng 3-3: Vùng nhớ đoạn Vi xử lý Segment: offset (bắt đầu) Segment: offset (kết thúc) 0000:0000 0000:FFFF Địa vật lý 00000 ÷ 0FFFF 85 Chương 3: Cấu trúc vi xử lý 16 bit 8086/88 SPKT – Nguyễn Đình Phú 1000:0000 1000:FFFF 10000 ÷ 1FFFF 2000:0000 2000:FFFF 20000 ÷ 2FFFF 3000:0000 3000:FFFF 30000 ÷ 3FFFF 4000:0000 4000:FFFF 40000 ÷ 4FFFF 5000:0000 5000:FFFF 50000 ÷ 5FFFF 6000:0000 6000:FFFF 60000 ÷ 6FFFF 7000:0000 7000:FFFF 70000 ÷ 7FFFF 8000:0000 8000:FFFF 80000 ÷ 8FFFF 9000:0000 9000:FFFF 90000 ÷ 9FFFF 10 A000:0000 A000:FFFF A0000 ÷ AFFFF 11 B000:0000 B000:FFFF B0000 ÷ BFFFF 12 C000:0000 C000:FFFF C0000 ÷ CFFFF 13 D000:0000 D000:FFFF D0000 ÷ DFFFF 14 E000:0000 E000:FFFF E0000 ÷ EFFFF 15 F000:0000 F000:FFFF F0000 ÷ FFFFF Bảng 3-3 Các đoạn nhớ độc lập Với việc phân chia bảng đoạn độc lập không bị chồng lên thật cách xa nhau, thực tế phần cứng thiết kế không đầy đủ dung lượng 1Mbyte, ví dụ hệ thống có 128Kbyte bắt buộc đoạn phải chồng lên Người lập trình phải phân chia vùng nhớ theo hệ thống phần cứng thiết kế Một chương trình lúc chiếm hết đoạn 64KByte, đặc điểm chồng đoạn nên cho phép đoạn chương trình nhỏ 64KB đặt gần Tại thời điểm, có ô nhớ định địa ghi đoạn truy cập, nghóa có đoạn nhớ tác động Tuy nhiên nội dung ghi đoạn thay đổi chương trình để truy cập đến đoạn khác d Khảo sát ghi trỏ lệnh ghi trạng thái : Thanh ghi trỏ lệnh IP (Instruction Pointer): có chức quản lý lệnh giống ghi PC (Program Counter) vi xử lý bit Khối BIU quản lý ghi IP để lưu trữ địa offset kết hợp với ghi CS để tạo địa vật lý để nhận mã lệnh từ nhớ chứa mã lệnh Code Segment Sau đón mã lệnh nội dung ghi IP tăng lên để đón mã lệnh kế Người lập trình sử dụng trực tiếp ghi 86 Vi xử lý Chương 3: Cấu trúc vi xử lý 16 bit 8086/88 SPKT – Nguyễn Đình Phú Hình 3-16a Trước thực lệnh MOV AX,[SI] Hình 3-16b Sau thực lệnh MOV AX,[SI] Sau thực lệnh ghi IP tăng lên đơn vị mã lệnh byte, liệu ô nhớ liên tiếp có địa 03234H 03235H copy vào ghi AX theo thứ tự byte thấp trước byte cao sau Thanh ghi DS ghi địa đoạn liệu Trong số trường hợp không rõ ràng trình biên dịch cần thêm dẫn BYTE PTR WORD PTR để kích thước địa liệu trỏ nhớ Ví dụ: lệnh MOV [DI],10H lệnh không rõ ràng hiểu cất liệu 10H vào ô nhớ byte hay word Để tránh hiểu nhầm ta phải thêm dẫn BYTE PTR hay WORD PTR sau: 104 Vi xử lý Chương 3: Cấu trúc vi xử lý 16 bit 8086/88 MOV BYTE PTR [DI], 10H MOV SPKT – Nguyễn Đình Phú WORD PTR [DI], 10H Cách định địa gián tiếp ghi thường dùng để truy xuất bảng liệu nhớ b Định địa (base addressing): Trong cách định địa địa vật lý ô nhớ chứa toán hạng tính toán cách cộng độ dời gián tiếp trực tiếp với nội dung ghi BX ghi BP cộng với nội dung ghi đoạn DS SS theo thứ tự Ví dụ 5: Lệnh MOV [BX] + BETA, AL Lệnh có chức “copy liệu ghi AL sang ô nhớ có địa offset giá trị lưu ghi BX cộng với số BETA vùng nhớ đoạn nhớ liệu” trình thực hình 3-17a 3-17b Trong lệnh giá trị lưu ghi BX 1000H nằm vi xử lý, giá trị BETA 1234H nên địa offset 2234H Địa offset cộng thêm địa ghi DS hành sau nhân 16 nhö sau: PA = 02000H + 2234H = 04234H Chính địa ô nhớ cần truy xuất liệu Hình 3-17a Trước thực lệnh MOV [BX] +BETA,AL Sau thực lệnh ghi IP tăng lên đơn vị mã lệnh byte, liệu ô nhớ có địa 04234H mang giá trị EDH Độ dời bit hay 16 bit phải xuất vùng toán hạng xem số nhị phân có dấu Với số nhị phân bit độ dời phải nằm tầm từ -128 ÷ +127, với số nhị phân 16 bit độ dời phải nằm tầm từ -32768 ÷ +32767 Vi xử lý 105 Chương 3: Cấu trúc vi xử lý 16 bit 8086/88 SPKT – Nguyễn Đình Phú Hình 3-17b Sau thực lệnh MOV [BX] +BETA,AL c Định địa chỉ số (index addressing): Giống kiểu định địa ghi sử dụng ghi SI DI Toán hạng có địa tổng độ dời số nhị phân có dấu bit hay 16 bit với ghi SI DI kết hợp với ghi đoạn DS Ví dụ 6: Lệnh MOV AL, [SI] + ARRAY Hình 3-18a Trước thực lệnh MOV AL,[SI] +ARRAY Lệnh có chức “copy liệu ô nhớ có địa offset giá trị lưu ghi SI với số ARRAY đoạn nhớ liệu sang ghi AL” trình thực hình 3-18a 3-18b 106 Vi xử lý Chương 3: Cấu trúc vi xử lý 16 bit 8086/88 SPKT – Nguyễn Đình Phú Trong lệnh giá trị lưu ghi SI 2000H nằm vi xử lý, giá trị ARRAY 1234H nên địa offset 3234H Địa offset cộng thêm địa ghi DS hành sau dịch sang phải bit nhö sau: PA = 02000H + 3234H = 05234H Chính địa ô nhớ cần truy xuất liệu Hình 3-18b Sau thực lệnh MOV AL,[SI] +ARRAY Sau thực lệnh ghi IP tăng lên đơn vị mã lệnh byte, liệu ô nhớ có địa 04234H mang giá trị EDH copy sang ghi AL Cách định địa cách định địa chỉ số gọi cách định địa tương đối dùng ghi d Định địa – số với độ dời : Các ghi ghi số cộng vào để tạo địa offset Thanh ghi BX hay BP cộng với ghi số SI DI Ví dụ 7: Lệnh MOV AH, [BX][SI] + BETA Lệnh có chức “copy liệu ô nhớ có địa offset giá trị lưu ghi BX cộng với giá trị lưu ghi BX với số BETA đoạn nhớ liệu sang ghi AH” trình thực hình 3-19a 3-19b Trong lệnh giá trị lưu ghi BX 1000H, cộng với giá trị lưu ghi SI 2000H nằm vi xử lý, giá trị BETA 1234H nên địa offset 4234H Địa offset cộng thêm địa ghi DS sau nhân 16 sau: PA = 02000H + 4234H = 06234H Chính địa ô nhớ cần truy xuất liệu Vi xử lý 107 Chương 3: Cấu trúc vi xử lý 16 bit 8086/88 SPKT – Nguyễn Đình Phú Hình 3-19a Trước thực lệnh MOV AX,[BX] [SI] +BETA Hình 3-19b Sau thực lệnh MOV AX,[BX] [SI] +BETA Sau thực lệnh ghi IP tăng lên đơn vị mã lệnh byte, liệu ô nhớ có địa 04234H mang giá trị BEH copy sang ghi AH Cách định địa chuỗi (string): Chuỗi dãy liên tục byte hay word cất nhớ lưu trữ dạng ASCII Vi xử lý 8086/88 có nhiều lệnh thiết kế riêng để xử lý chuỗi ký tự Các lệnh có cách định địa đặc biệt sử dụng DS:SI để quản lý địa chuỗi nguồn ES:DI để quản lý địa chuỗi đích Lệnh MOVSB dùng cách định địa chuỗi 108 Vi xử lý Chương 3: Cấu trúc vi xử lý 16 bit 8086/88 SPKT – Nguyễn Đình Phú có chức chuyển liệu nguồn đến vị trí đích Giá trị SI DI tự động tăng lên giảm phụ thuộc vào giá trị cờ DF ghi trạng thái Các lệnh với chuỗi không sử dụng cách định địa khác, chuỗi dài đến 64kbyte Ví dụ 8: cho DS = 1000H ES = 2000H, SI = 10H, DI = 20H Lệnh: MOVSB ;copy nội dung ô nhớ [10010H] đến [20020H] Cách định địa cổng (port addressing mode): Vi xử lý 8086/88 có vùng nhớ vùng IO độc lập với nhau, vi xử lý 8086/88 giao tiếp lên đến 65536 IO Các cổng IO truy xuất với địa trực tiếp dạng byte truy xuất 256 cổng IO: Ví dụ 9: Lệnh: IN AL,40H ;copy nội dung cổng IO có địa 40H vào AL OUT 40H,AL ;copy nội dung AL sang cổng IO có địa 40H Cổng IO truy cập ghi – truy cập đến 65536 cổng IO: Ví dụ 10: Lệnh: IN AL,DX ;copy nội dung cổng IO có địa lưu DX vào AL OUT DX,AL ;copy nội dung AL sang cổng IO có địa DX Cách định địa ngăn xếp: Cách sử dụng cho lệnh gọi chương trình lệnh kết thúc chương trình CALL/RET lệnh PUSH /POP Ngăn xếp vi xử lý 8086/88 tổ chức theo cấu trúc vào sau trước LIFO Ví dụ 11: Lệnh: PUSH AX ;cất nội dung AX vào ngăn xếp [SS:SP-1] [SS:SP-2] Giả sử cho AX = 1234H cất vào ngăn xếp minh hoạ hình 3-20: Trước PUSH Sau PUSH Hình 3-20 Hoạt động ngăn xếp với lệnh PUSH Đối với lệnh gọi chương trình CALL địa lệnh quay ghi IP tự động cất vào ngăn xếp Khi kết thúc chương trình lệnh RET địa cất ngăn xếp trả lại cho ghi IP Nếu lệnh gọi xa (far call) word cất Vi xử lý 109 Chương 3: Cấu trúc vi xử lý 16 bit 8086/88 SPKT – Nguyễn Đình Phú vào ngăn xếp (offset cất trước ) lấy lại lấy word mã kết thúc lệnh lệnh RET khác Chú ý: lệnh PUSH POP làm việc với toán hạng word Các qui tắc kết hợp ghi đoạn offset: Vi xử lý có qui tắc kết hợp ghi đoạn ghi offset sử dụng cho số cách định địa định Tuy nhiên ta viết chồng lên cách sử dụng tiếp đầu ngữ viết chồng đoạn, ví dụ MOV CL,DS:[BP] Thanh ghi Offset Thanh ghi đoạn Tiếp đầu ngữ viết chồng IP CS Không có SP SS Không có BP SS DS, ES hoaëc CS SI, DI DS ES, SS CS DI cho lệnh chuỗi kí tự ES ES, SS CS Bảng 3-9 Qui tắt kết hợp ghi đoạn ghi offset Ví dụ12: Leänh: MOV AX,[DI] MOV AX,ES:[DI] III ;AX ;AX DS: [DI] ES: [DI] TẬP LỆNH: Mã lệnh vi xử lý 8086/88: Vi xử lý 8086/88 có tập lệnh khoảng 300 lệnh, lệnh dài byte đến byte Hình 3-21 dạng mã lệnh vi xử lý 8086/88: Hình 3-21 Dạng mã lệnh Giải thích mã lệnh: 110 Vi xử lý Chương 3: Cấu trúc vi xử lý 16 bit 8086/88 SPKT – Nguyễn Đình Phú Vuøng ghi REG (register) : REG 000 001 010 011 100 101 110 111 W=1 AX BX CX DX SP BP SI DI W=0 AL CL DL BL AH BH DH BH Bảng 3-10 Bảng liệt kê giá trị REG Vùng MOD : MOD 00 01 10 11 Chức Toán hạng nhớ trực tiếp R/M =110, ngược lại toán hạng trực tiếp Toán hạng gián tiếp, độ dời bit Toán hạng gián tiếp, độ dời 16 bit Hai ghi sử dụng, vùng R/M vùng REG Bảng 3-11 Bảng liệt kê giá trị MOD Vùng R/M (register/memory) : Nếu vùng MOD = 11 vùng R/M ghi nguồn dùng mã vùng REG, ngược lại thì: R/M 000 001 010 011 100 101 110 111 Kieåu DS:[BX+SI+d] DS:[BX+DI+d] SS:[BP+SI+d] SS:[BP+DI+d] DS:[SI+d] DS:[DI+d] DS:[BP+d] DS:[BX+d] Baûng 3-12 Baûng liệt kê giá trị R/M Tổng quan tập lệnh vi xử lý 8086/88: Trong phần khảo sát lệnh vi xử lý sử dụng toán hạng hay dẫn assembler dựa trình biên dịch hợp ngữ Microsoft (MASM 6.0) Vi xử lý 8086 có 90 lệnh (không kể lệnh biến đổi cách định địa chỉ), chia làm nhóm lệnh sau: nhóm lệnh chuyển liệu, nhóm lệnh số học, nhóm lệnh xử lý chuỗi, nhóm lệnh chuyển quyền điều khiển nhóm lệnh điều khiển vi xử lý Nhóm lệnh chuyển liệu: gồm có 14 lệnh sau: MOV, PUSH, POP, XCHG, IN, OUT, XLAT, LEA, LDS, LES, LAHF, SAHF, PUSHF, POPF Nhóm lệnh số học: gồm có 20 lệnh nhö sau: ADD, ADC, INC AAA, BAA, SUB, SSB, DEC, NEG, CMP, Vi xử lý 111 Chương 3: Cấu trúc vi xử lý 16 bit 8086/88 SPKT – Nguyễn Đình Phuù AAS, DAS, MUL, IMUL, AAM, DIV, IDIV, AAD, CBW, CWD Nhóm lệnh LOGIC: gồm có 12 lệnh sau: NOT, SHL, SAL, SHR, SAR, ROL, ROR, RCL, RCR, AND, TEST, OR, XOR Nhóm lệnh xử lý chuỗi: gồm có lệnh sau: REP, MOVS, XMPS, SCAS, LODS, STOS Nhóm lệnh chuyển điều khiển: gồm có 26 lệnh sau: CALL, JMP, RET, JE/JZ, JL/JNGE, JLE/JNG, JB/JNAE, JBE/JNA, JP/JPE, JO, JS, JNE/JNZ, JNL/JGE, JNLE/JG,JNB/JAE, JNBE/JA, JNP/JPO, JNO, JNS, LOOP, LOOPZ/LOOPE, CJXZ, INT, INTO, IRETR Nhóm lệnh điều khiển VI XỬ LÝ : gồm có 12 lệnh sau: CLR, CMC, STC, CLD, STD, CLI, STI, HLT, WAIT, ESC, LOCK, NOP Mã lệnh bao gồm thông tin mã lệnh, địa chỉ, liệu Số lượng chu kỳ xung clock cần để thực lệnh phụ thuộc vào cách định địa Với hệ thống 8086/88 trình tính toán địa thật (20bit) cần nhiều xung clock – với vi xử lý từ 80286 trở sau không tính toán địa nên nhiều chu kỳ xung clock để tính địa Ví dụ 13: Một số lệnh số chu hiện: Cách định địa Gián tiếp ghi Trực tiếp Chỉ số Chỉ số (có độ dời) Tiếp đầu ngữ viết chồng đoạn Lệnh minh hoïa MOV CL,[DI] MOV CL,DATA MOV BL,[BP+DI] MOV CX,[BP+DI+DATA] MOV AL,ES:DATA Số chu kỳ 11 EA+2 Bảng 3-13 Bảng liệt kê chu lệnh Tóm tắt tập lệnh vi xử lý 8086/88: 112 Vi xử lý Chương 3: Cấu trúc vi xử lý 16 bit 8086/88 Vi xử lý SPKT – Nguyễn Đình Phú 113 Chương 3: Cấu trúc vi xử lý 16 bit 8086/88 114 SPKT – Nguyễn Đình Phú Vi xử lý Chương 3: Cấu trúc vi xử lý 16 bit 8086/88 Vi xử lý SPKT – Nguyễn Đình Phú 115 Chương 3: Cấu trúc vi xử lý 16 bit 8086/88 SPKT – Nguyễn Đình Phú Khảo sát tập lệnh vi xử lý 8086/88: Sau khảo sát lệnh tóm tắt trình bày việc tính toán mã lệnh trình biên dịch assembler thực hiện, người lập trình cần biết có lệnh chức xử lý liệu lệnh để viết trình Do có nhiều lệnh lệnh có ví dụ minh hoạ nên phần trình bày phần phụ lục IV 116 CÂU HỎI VÀ BÀI TẬP: Vi xử lý Chương 3: Cấu trúc vi xử lý 16 bit 8086/88 SPKT – Nguyễn Đình Phú Câu 1: Người lập trình vi xử lý 8086/88 ngôn ngữ Assembly cần biết ghi bên vi xử lý Câu 2: Có ghi bên vi xử lý 8086/88 Câu 3: Địa cao vi xử lý 8086 có giá trị bao nhiêu? Thấp bao nhiêu? Câu 4: Địa cao vi xử lý 8088 có giá trị bao nhiêu? Thấp bao nhiêu? Câu 5: Tổ chức nhớ vi xử lý 8086 theo bit, byte, word hay double word Câu 6: Tổ chức nhớ vi xử lý 8088 theo bit, byte, word hay double word Câu 7: Các nội dung ô nhớ có địa B0000H FFH B0001H 00H nội dung word có địa chẵn B0000H bao nhiêu? Câu 8: Hãy trình bày cách lưu trữ liệu double word 12345678H ô nhớ có địa bắt đầu A001H nào? Câu 9: Các ghi bên vi xử lý làm ghi đoạn nhớ Câu 10: Thành phần không gian địa nhớ vi xử lý 8086 dùng để lưu trữ lệnh chương trình Câu 11: Cái lưu địa FFFF0H ? Câu 12: Chức ghi trỏ lệnh IP ? Câu 13: Sau thực lệnh ghi IP thay đổi ? Câu 14: Hãy liệt kê ghi đa vi xử lý 8086/88 ? Câu 15: Hãy cho biết vai trò chức lưu trữ ghi liệu đa ? Câu 16: Hãy cho biết loại liệu lưu trữ ghi trỏ (pointer) ghi số (index) ? Câu 17: Hãy cho biết tên ghi trỏ? Câu 18: Hãy cho biết ghi trỏ kết hợp với ghi đoạn ? Câu 19: Hãy cho biết ghi số kết hợp với ghi đoạn ? Câu 20: Hãy cho khác ghi trỏ ghi số ? Câu 21: Hãy liệt kê bit ghi trạng thái cho biết chức chúng ? Câu 22: Hãy cho biết bit ghi trạng thái hướng địa tăng giảm? Câu 23: Hãy cho biết hai thành phần kết hợp lại tạo thành địa thật (PA) ? Câu 24: Nếu giá trị ghi CS ghi IP 0200H 01ACH theo thứ tự địa thật lệnh kế ? Câu 25: Nếu đoạn liệu định vị địa A0000H đến AFFFFH giá trị phải nạp vào ghi DS ? Vi xử lý 117 Chương 3: Cấu trúc vi xử lý 16 bit 8086/88 SPKT – Nguyễn Đình Phú Câu 26: Từ kết muốn ô nhớ có địa A1234H lưu liệu giá trị cần phải nạp vào ghi DI ? Câu 27: Hãy cho biết chức ngăn xếp ? Câu 28: Nếu giá trị SS SP 0C00H FF00H theo thứ tự địa đỉnh ngăn xếp ? Câu 29: Hãy trình bày trình thực lưu giá trị ghi AX = EE11H vào ngăn xếp giá trị SS SP 0C00H FF00H ? Câu 30: Đối với vi xử lý 8086 vùng nhớ vùng IO chung hay độc lập ? Câu 31: Hãy cho biết vùng IO lớn ? Câu 32: Hãy phân biệt lệnh thuộc kiểu định địa nào: (a) MOV AL,BL (b) MOV AX,OFFH (c) MOV [DI],AX (d) MOV DI,[SI] (e) MOV [BX] +XYZ,CX (f) MOV [DI] + XZY,AH (g) MOV [BX][DI]+XYZ,AL Câu 33: Nếu cho giá trị ghi: CS = 0A00H, DS = 0B00H, SI = 0100H, DI = 0200H, BX = 0300H XYZ = 0400H Hãy tính: (a) Địa liệu đến lệnh (c) 32 (b) Địa liệu nguồn lệnh (d) 32 (c) Địa liệu đến lệnh (e) 32 (d) Địa liệu đến lệnh (f) 32 (e) Địa liệu đến lệnh (g) 32 return 118 Vi xử lý ... 112 Vi xử lý Chương 3: Cấu trúc vi xử lý 16 bit 8086/88 Vi xử lý SPKT – Nguyễn Đình Phú 113 Chương 3: Cấu trúc vi xử lý 16 bit 8086/88 114 SPKT – Nguyễn Đình Phú Vi xử lý Chương 3: Cấu trúc vi xử. .. liệu thông qua khối BIU Vi xử lý 79 Chương 3: Cấu trúc vi xử lý 16 bit 8086/88 SPKT – Nguyễn Đình Phú Vi xử lý 8088 vi xử lý 16 bit, khác vi xử lý 8086 8088 khối BIU: vi xử lý 8086 bus liệu giao... 3-13 Bảng liệt kê chu lệnh Vi xử lý Chương 3: Cấu trúc vi xử lý 16 bit 8086/88 I SPKT – Nguyễn Đình Phú CẤU TRÚC CỦA VI XỬ LÝ 8086/88: CẤU TRÚC BÊN TRONG VI XỬ LÝ 8086/88: Như trình bày phần

Ngày đăng: 26/04/2013, 08:52

Hình ảnh liên quan

Cấu trúc bên trong của vi xử lý gồm hai khối chính như hình 3-1, nó được tổ chức thành 2 bộ xử lý riêng là BIU (Bus Interface Unit) và EU (Execution Unit) - Cấu trúc vi xử lý 16bit 8086/88

u.

trúc bên trong của vi xử lý gồm hai khối chính như hình 3-1, nó được tổ chức thành 2 bộ xử lý riêng là BIU (Bus Interface Unit) và EU (Execution Unit) Xem tại trang 3 của tài liệu.
Có một số thanh ghi khi sử dụng được hiểu ngầm trong một số lệnh như cho ở bảng 3-1. - Cấu trúc vi xử lý 16bit 8086/88

m.

ột số thanh ghi khi sử dụng được hiểu ngầm trong một số lệnh như cho ở bảng 3-1 Xem tại trang 7 của tài liệu.
Hình 3-4. Các thanh ghi đoạn quản lý các vùng nhớ. - Cấu trúc vi xử lý 16bit 8086/88

Hình 3.

4. Các thanh ghi đoạn quản lý các vùng nhớ Xem tại trang 9 của tài liệu.
Bảng 3-3. Các đoạn bộ nhớ độc lập. - Cấu trúc vi xử lý 16bit 8086/88

Bảng 3.

3. Các đoạn bộ nhớ độc lập Xem tại trang 10 của tài liệu.
Hình 3-5. Các bit trong thanh ghi cờ. - Cấu trúc vi xử lý 16bit 8086/88

Hình 3.

5. Các bit trong thanh ghi cờ Xem tại trang 11 của tài liệu.
Hình 3-6. Tổ chức bộ nhớ của vi xử lý 8086. - Cấu trúc vi xử lý 16bit 8086/88

Hình 3.

6. Tổ chức bộ nhớ của vi xử lý 8086 Xem tại trang 13 của tài liệu.
Bảng 3-5. Đặc tính điện. - Cấu trúc vi xử lý 16bit 8086/88

Bảng 3.

5. Đặc tính điện Xem tại trang 15 của tài liệu.
Hình 3-8 trình bày giản đồ thời gian làm truy xuất bộ nhớ của vi xử lý và giải thích hoạt động của từng chu kỳ - Cấu trúc vi xử lý 16bit 8086/88

Hình 3.

8 trình bày giản đồ thời gian làm truy xuất bộ nhớ của vi xử lý và giải thích hoạt động của từng chu kỳ Xem tại trang 16 của tài liệu.
Bảng 3-6. Đặt tính tốc độ và công suất tiêu tán. - Cấu trúc vi xử lý 16bit 8086/88

Bảng 3.

6. Đặt tính tốc độ và công suất tiêu tán Xem tại trang 18 của tài liệu.
Bảng 3-7. Mã hoá truy xuất bộ nhớ của vi xử lý 8086. - Cấu trúc vi xử lý 16bit 8086/88

Bảng 3.

7. Mã hoá truy xuất bộ nhớ của vi xử lý 8086 Xem tại trang 19 của tài liệu.
Hình 3-11. Vi xử lý hoạt độn gở chế độ tối đa. - Cấu trúc vi xử lý 16bit 8086/88

Hình 3.

11. Vi xử lý hoạt độn gở chế độ tối đa Xem tại trang 20 của tài liệu.
Hình 3-12. Mạch tạo tín hiệu reset. - Cấu trúc vi xử lý 16bit 8086/88

Hình 3.

12. Mạch tạo tín hiệu reset Xem tại trang 22 của tài liệu.
Hình 3-13a và 3-13b sẽ minh hoạ quá trình vi xử lý trước và sau khi thực hiện lệnh. - Cấu trúc vi xử lý 16bit 8086/88

Hình 3.

13a và 3-13b sẽ minh hoạ quá trình vi xử lý trước và sau khi thực hiện lệnh Xem tại trang 23 của tài liệu.
Hình 3-13b. Sau khi thực hiện lệnh MOV AX, BX. - Cấu trúc vi xử lý 16bit 8086/88

Hình 3.

13b. Sau khi thực hiện lệnh MOV AX, BX Xem tại trang 24 của tài liệu.
Hình 3-14a. Trước khi thực hiện lệnh MOV AL,15H. - Cấu trúc vi xử lý 16bit 8086/88

Hình 3.

14a. Trước khi thực hiện lệnh MOV AL,15H Xem tại trang 25 của tài liệu.
Hình 3-15b. Sau khi thực hiện lệnh MOV CX,BETA. - Cấu trúc vi xử lý 16bit 8086/88

Hình 3.

15b. Sau khi thực hiện lệnh MOV CX,BETA Xem tại trang 26 của tài liệu.
Hình 3-15a. Trước khi thực hiện lệnh MOV CX,BETA. - Cấu trúc vi xử lý 16bit 8086/88

Hình 3.

15a. Trước khi thực hiện lệnh MOV CX,BETA Xem tại trang 26 của tài liệu.
Bảng 3-8. Tính toán địa chỉ hiệu dụng cho các cách định địa chỉ gián tiếp. - Cấu trúc vi xử lý 16bit 8086/88

Bảng 3.

8. Tính toán địa chỉ hiệu dụng cho các cách định địa chỉ gián tiếp Xem tại trang 27 của tài liệu.
Hình 3-16a. Trước khi thực hiện lệnh MOV AX,[SI]. - Cấu trúc vi xử lý 16bit 8086/88

Hình 3.

16a. Trước khi thực hiện lệnh MOV AX,[SI] Xem tại trang 28 của tài liệu.
Hình 3-16b. Sau khi thực hiện lệnh MOV AX,[SI]. - Cấu trúc vi xử lý 16bit 8086/88

Hình 3.

16b. Sau khi thực hiện lệnh MOV AX,[SI] Xem tại trang 28 của tài liệu.
Cách định địa chỉ gián tiếp thanh ghi thường dùng để truy xuất bảng dữ liệu trong bộ nhớ. - Cấu trúc vi xử lý 16bit 8086/88

ch.

định địa chỉ gián tiếp thanh ghi thường dùng để truy xuất bảng dữ liệu trong bộ nhớ Xem tại trang 29 của tài liệu.
Hình 3-18a. Trước khi thực hiện lệnh MOV AL,[SI] +ARRAY. - Cấu trúc vi xử lý 16bit 8086/88

Hình 3.

18a. Trước khi thực hiện lệnh MOV AL,[SI] +ARRAY Xem tại trang 30 của tài liệu.
Hình 3-17b. Sau khi thực hiện lệnh MOV [BX] +BETA,AL. - Cấu trúc vi xử lý 16bit 8086/88

Hình 3.

17b. Sau khi thực hiện lệnh MOV [BX] +BETA,AL Xem tại trang 30 của tài liệu.
Hình 3-18b. Sau khi thực hiện lệnh MOV AL,[SI] +ARRAY. - Cấu trúc vi xử lý 16bit 8086/88

Hình 3.

18b. Sau khi thực hiện lệnh MOV AL,[SI] +ARRAY Xem tại trang 31 của tài liệu.
Hình 3-19a. Trước khi thực hiện lệnh MOV AX,[BX] [SI] +BETA. - Cấu trúc vi xử lý 16bit 8086/88

Hình 3.

19a. Trước khi thực hiện lệnh MOV AX,[BX] [SI] +BETA Xem tại trang 32 của tài liệu.
Hình 3-19b. Sau khi thực hiện lệnh MOV AX,[BX] [SI] +BETA. - Cấu trúc vi xử lý 16bit 8086/88

Hình 3.

19b. Sau khi thực hiện lệnh MOV AX,[BX] [SI] +BETA Xem tại trang 32 của tài liệu.
Hình 3-20. Hoạt động của ngăn xếp với lệnh PUSH. - Cấu trúc vi xử lý 16bit 8086/88

Hình 3.

20. Hoạt động của ngăn xếp với lệnh PUSH Xem tại trang 33 của tài liệu.
Bảng 3-9. Qui tắt kết hợp các thanh ghi đoạn và thanh ghi offset. - Cấu trúc vi xử lý 16bit 8086/88

Bảng 3.

9. Qui tắt kết hợp các thanh ghi đoạn và thanh ghi offset Xem tại trang 34 của tài liệu.
Bảng 3-10. Bảng liệt kê giá trị của REG. - Cấu trúc vi xử lý 16bit 8086/88

Bảng 3.

10. Bảng liệt kê giá trị của REG Xem tại trang 35 của tài liệu.
Bảng 3-13. Bảng liệt kê chu kỳ thực hiện của các lệnh. - Cấu trúc vi xử lý 16bit 8086/88

Bảng 3.

13. Bảng liệt kê chu kỳ thực hiện của các lệnh Xem tại trang 36 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan