GIÁO TRÌNH VI XỬ LÝ 1 - CHƯƠNG 3. CẤU TRÚC VI XỬ LÝ 16 BIT 8086 pdf

42 593 5
GIÁO TRÌNH VI XỬ LÝ 1 - CHƯƠNG 3. CẤU TRÚC VI XỬ LÝ 16 BIT 8086 pdf

Đ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

Truong DH SPKT TP HCM http://www.hcmute.edu.vn Chương III CẤ U TRÚC VI XỬ LÝ 8086/8088 Cấu trúc bên vi xử lý 8086/8088 Cá c ghi bên vi xử lý Bộ nhớ phâ n đoạn vi xử lý Reset vi xử lý K pham Tóm tắt phần cứng vi xử lý 8086 H Su ng D TruoA VI XỬ LÝ 8086 CÁ C PHệễNG PHAP ẹềNH ẹềAn â CU CHặ uye an q B TẬP LỆNH CỦA VI XỬ LÝ 8086 Mã lện h vi xử lý 8086/8088 Tổng quan tập lệnh vi xử lý 8086 Khảo sát tập lệnh vi xử lý 8086 M P HC uat T y th CÂ U HỎI VÀ BÀI TẬ P Thu vien DH SPKT TP HCM - http://www.thuvienspkt.edu.vn Truong DH SPKT TP HCM http://www.hcmute.edu.vn Chương 3: Cấu trúc vi xử lý 8086/8088 I SPKT CẤU TRÚC CỦA VI XỬ LÝ 8086/8088: Cấu trúc bên vi xử lý 8086/8088: 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/8088 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) vaø EU (Execution Unit) H Su ng D ruo K pham M P HC uat T y th n©T quye an B Hình 3-1 Cấu trúc bê n vi xử lý 8086/8088 Chức năn g khối BIU: nhậ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àn g chờ lệnh Vì đơn vị làm việc độc lập với nên khối BIU nhận lện h 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 năn g 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ôn g qua khối BIU 78 Vi xử lý Thu vien DH SPKT TP HCM - http://www.thuvienspkt.edu.vn Truong DH SPKT TP HCM http://www.hcmute.edu.vn Chương 3: Cấu trúc vi xử lý 8086/8088 SPKT 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 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) HCM TP tức lấy mã lệnh thực Bước 4: Giả sử ban đầu hàng đợi lệnh trống khối EU uat lập h Ky t mã lệnh pham H Su n D Bước 5: Trong khối EU thực g lệnh khối BIU tiến hành nhận mã lệnh Truo thi © u lện Tuỳ thuộc vào thời gian thực thi yenh mà khối BIU lấy nhiều mã lệnh trước khối EU an q B 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 3-2 Quá trình nhận lệ nh thực thi lệ nh Hình (a) dạng vi xử lý thực theo cách thông thường Hình (b) dạng vi xử lý thực theo cấu trúc đường ống Vi xử lý 79 Thu vien DH SPKT TP HCM - http://www.thuvienspkt.edu.vn Truong DH SPKT TP HCM http://www.hcmute.edu.vn Chương 3: Cấu trúc vi xử lý 8086/8088 Ghi chú: SPKT (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 hiệ n 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 cũ ng 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 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ện h 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 chờ 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 HCM đợi TP huat Ky t ng hợp xảy khối Trường hợp 3: trường hợp làm BIU ngừng nhận mã phnm Trườ lệ ah H Su (lệnh hiệu chỉnh thập phân cho lệ nh EU thực thi lệnh nhiều thời gian Ví dụ lệnD AAM ng h Truo nhân) cần 83 chu kỳ xung nhịp thựenhiện xong, khối BIU cần xung nhận c © y n qu amã lệnh làm đầy hàng đợi EU chưa thực xong xong mã lệnh nê n BIU nhậB n lệnh nên BIU phải chờ Quá trình nhận lệnh EU thực thi lện h 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 năn g 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 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 ghi vi xử lý 8086/8088: Vi xử lý 8086/8088 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/8088: 80 Vi xử lý Thu vien DH SPKT TP HCM - http://www.thuvienspkt.edu.vn Truong DH SPKT TP HCM http://www.hcmute.edu.vn Chương 3: Cấu trúc vi xử lý 8086/8088 SPKT HCM TP Hình 3-3 14 ghi bên vi xửulýt h a Ky t pham a Khảo sát ghi liệu: H Su gD ruon Các ghi liệu bao gồm ©4Tthanh ghi có tên ghi AX, BX, CX DX, chúng en ghi 16 bit nênan quy p lưu trữ liệu 16 bit Mỗi ghi chia cho phé B 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 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 Vi xử lý 81 Thu vien DH SPKT TP HCM - http://www.thuvienspkt.edu.vn Truong DH SPKT TP HCM http://www.hcmute.edu.vn Chương 3: Cấu trúc vi xử lý 8086/8088 SPKT DAA, DAS phép toán chuỗi AH MUL, IMUL DIV, IDIV CBW DX XLAT CX LOOP, LOOPE, LOOPNE Caù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 CMtruyền liệu H TP với lý sử dụng ghi tạo mã máy ngắn uat y th Kn tham gia phải chứa AH Trong phép toán nhân chia cácham số hạ p H Su AL, thao tác vào sử dụng ghi AH AL ng D Truo  Thanh ghi sở BX (Base):© n quye antính toán địa phương pháp định địa gián tiếp B Thanh ghi BX dùng cho  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  Thanh ghi trỏ số: Các ghi SP, BP, SI, DI thường trỏ tới ô nhớ (tức chức địa offset ô nhớ đó) Khác với ghi đoạn, ghi trỏ ngăn xếp sử dụng thao tác số học số thao tác khác 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) cho phần tử định địa đ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): 82 Vi xử lý Thu vien DH SPKT TP HCM - http://www.thuvienspkt.edu.vn Truong DH SPKT TP HCM http://www.hcmute.edu.vn Chương 3: Cấu trúc vi xử lý 8086/8088 SPKT 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 thêm 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 caùc ghi 16 bit CM H TP uat ta cần phân tích nhớ giao Trước trình bày chức ghi y thng am K tiếp với vi xử lý 8086/8088 u ph DH S g r byte có địa xác định Vi xử lý Bộ nhớ tập hợp byte ô ©nhớuon n T e 8086/8088 có 20 đường địa n qể gián tiếp với nhớ có dung lượng Mbyte, ô nhớ có y Ba đị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 Do địa ô nhớ 20 bit chứa ghi 16 bit vi xử lý 8086/8088 (16 bit) nên 8086/8088 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: Vi xử lyù 83 Thu vien DH SPKT TP HCM - http://www.thuvienspkt.edu.vn Truong DH SPKT TP HCM http://www.hcmute.edu.vn Chương 3: Cấu trúc vi xử lý 8086/8088 SPKT 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 CM ghi offset – P H uat T địa đoạn gọi địa logic hay địa offset y th am K Khi địa thật (còn gọi địa logic) Su pthô nhớ xác định cách kết mộ DH hợp “thanh ghi quản lý địa đoạn” “thanh ong quản lý địa lệnh” segment:offset ru ghi n©T quye segment:offset = 0FE6:012Bh địa segment Trong hình 3-4 có cho ví Banđịa dụ 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ý vùng nhớ chứa mã lệnh (Code Segment) Thanh ghi đoạn ES với ghi offset có chức quản lý vùng nhớ mở rộng (Extra Segment) Thanh ghi đoạn SS cùn g với ghi offset có chức quản lý vùng 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ý vùng nhớ chứa liệu (Data Segment) Vùng nhớ 1Mbyte chia làm 16 đoạn độc lập bảng 3-2: Vù ng nhớ đoạn Segment: offset (bắ t đầu) Segment: offset (kết thúc) 0000:0000 0000:FFFF 1000:0000 1000:FFFF 2000:0000 2000:FFFF 84 Vi xử lý Thu vien DH SPKT TP HCM - http://www.thuvienspkt.edu.vn Truong DH SPKT TP HCM http://www.hcmute.edu.vn Chương 3: Cấu trúc vi xử lý 8086/8088 SPKT 3000:0000 3000:FFFF 4000:0000 4000:FFFF 5000:0000 5000:FFFF 6000:0000 6000:FFFF 7000:0000 7000:FFFF 8000:0000 8000:FFFF 9000:0000 9000:FFFF 10 A000:0000 A000:FFFF 11 B000:0000 B000:FFFF 12 C000:0000 C000:FFFF 13 D000:0000 D000:FFFF 14 E000:0000 E000:FFFF 15 F000:0000 F000:FFFF Bảng 3-2 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ị CM ng lên thật chồ H TPkhôn g đầy đủ dung lượ ng cách xa nhau, thực tế phần cứng thiếatkế hu t Ky tđoạn phải chồng lên Người 1Mbyte ví dụ hệ thống có 128Kbyte bắt pham buộc Su H ng phần cứng thiết kế lập trình phải phân chia vùng nhớ theo ng D hệ thố Truo © Một chương trình khôngqphản lúc chiếm hết đoạn 64KByte, đặc điểm uye i an B 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ạn g 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 Thanh ghi cờ (Flag Register) 8086 có độ dài 16bit, có bit điều khiển bit trạng thái gọi cờ Các bit lại chưa thiết lập nên người dùng khôn g thể truy xuất Hình 3-5 cấu tạo ghi cờ 8086/8088: Vi xử lý 85 Thu vien DH SPKT TP HCM - http://www.thuvienspkt.edu.vn Truong DH SPKT TP HCM http://www.hcmute.edu.vn Chương 3: Cấu trúc vi xử lý 8086/8088 SPKT Hình 3-5 Các bit ghi cờ Khi vi xử lý thực phép toán vào kết sau xử lý tác động đến số cờ ghi trạng thái trình bày phần trước Chức CM ghi P H uat T cờ đề cập lại sau: y th am K + Cờ tràn CF: u ph DH S Cờ nhớ CF thực phéTruonn cộng có tràn phép toán trừ có mượn, p toá g n© ngược lại khô ng tràn , không an quythì cờ CF bằn g Cờ CF bị ảnh hưở ng lệnh mượn e B xoay lệnh dịch + Cờ chẳn lẻ PF: Sau thực lệnh số học lệnh logic liệu dạng byte: byte kết số chẵn cờ PF ‘1’ ngược lại cờ PF ‘0’ nế u số lẻ, liệu xử lý word xét byte thấp + Cờ nhớ phụ AF: Khi thực lệnh cộng lệnh trừ số BCD: liệu dạn g byte cờ AF cộng trừ bit thấp bị tràn có mượ n, liệu dạng word cờ AF cộ ng trừ byte thấp bị tràn có mượn Cờ AF sử dụng lệnh xử lý với liệu dạng số BCD + Cờ zero ZF: Cờ zero kết qủa xử lý + Cờ dấu SF: Cờ dấu ‘1’ bit MSB kết ‘1’ tức số âm, lệnh byte MSB bit lệnh word bit 15 Ngược lại cờ SF + Cờ bẫy TF: Có chức thực chương trình theo từ ng bước, TF ‘1’ vi xử lý 8086/8088 phát sinh ngắt cứng loại Chương trình DEBUG sử dụng thi hành lệnh T (trace) để chạy lệnh Đầu tiên DEBUG thiết lập cờ TF chuyển điều khiển cho lệnh Sau lệnh thi hành vi xử lý phát sinh ngắt TF lập chương trình DEBUG sử dụng phục vụ ngắt để lấy quyền điề u khiển từ vi xử lý 86 Vi xử lý Thu vien DH SPKT TP HCM - http://www.thuvienspkt.edu.vn Truong DH SPKT TP HCM http://www.hcmute.edu.vn Chương 3: Cấu trúc vi xử lý 8086/8088 SPKT 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 nhö sau: MOV BYTE PTR [DI], 10H MOV WORD PTR [DI], 10H Cách định địa gián tiếp ghi thườn g dùng để truy xuất bảng liệu nhớ Định địa (base addressing): Trong cách định địa địa thật ô 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ụ 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 với số BETA data segment tại” trình thực hình 3-17a 3-17b HCM TP uat Trong lệnh giá trị lưu ghi BX 1000Hhnằm vi xử lý, giá trị Ky t m ph offset cộn g thêm địa BETA 1234H nên địa offset 2234H Địa uchỉ a HS D ghi DS hiệ n hành sau dịch sang ruonig4 bit sau: phả T © uyen PA = 02000H + 2234H = 04234H an q B Chính địa ô nhớ cần truy xuất liệu Hình 3-17a Trước thực hiệ n lệnh MOV [BX] +BETA,AL 104 Vi xử lyù Thu vien DH SPKT TP HCM - http://www.thuvienspkt.edu.vn Truong DH SPKT TP HCM http://www.hcmute.edu.vn Chương 3: Cấu trúc vi xử lý 8086/8088 SPKT Hình 3-17b Sau thực leänh MOV [BX] +BETA,AL M P HC uat T y th mã lệnh byte, Sau thực lệnh ghi IP tăng lênham K vị đơn Su png EDH liệu ô nhớ có địa 04234H mang g DH bằ giá trị ruon n©T Độ dời bit hay 16 bit phảiexuất vùng toán hạng xem số nhị phân quy n có dấu Với số nhị phân 8Ba độ dời phải nằm tầm từ -128 ÷ +127, với số nhị phân 16 bit bit độ dời phải nằm tầm từ -32768 ÷ +32767 Đị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 (mặc nhiên DS) Ví dụ 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 data segment sang ghi AL” trình thực hình 3-18a 3-18b Trong lện h 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 hiệ n hành sau dịch sang phải bit sau: PA = 02000H + 3234H = 05234H Chính địa ô nhớ cần truy xuất liệu Vi xử lý 105 Thu vien DH SPKT TP HCM - http://www.thuvienspkt.edu.vn Truong DH SPKT TP HCM http://www.hcmute.edu.vn Chương 3: Cấu trúc vi xử lý 8086/8088 SPKT Hình 3-18a Trước thực hiệ n lệnh MOV AL,[SI] +ARRAY P H Su ng D ruo K pham uat T y th HCM n©T quye an B Hình 3-18b Sau thực hiệ n 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 Định địa – số với độ dời : 106 Vi xử lý Thu vien DH SPKT TP HCM - http://www.thuvienspkt.edu.vn Truong DH SPKT TP HCM http://www.hcmute.edu.vn Chương 3: Cấu trúc vi xử lý 8086/8088 SPKT 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ụ 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ố ARRAY data segment sang ghi AH” trình thực hình 3-19a 3-19b Trong lện h giá trị lưu ghi BX 12000H, cộng với giá trị lưu ghi SI 2000H nằm vi xử lý, giá trị ARRAY 1234H nên địa offset 4234H Địa offset cộng thêm địa ghi DS hiệ n hành sau dịch sang phải bit sau: PA = 02000H + 4234H = 065234H Chính địa ô nhớ cần truy xuất liệu H Su ng D ruo K pham M P HC uat T y th n©T quye an B Hình 3-19a Trước thực hiệ n lệnh MOV AX,[BX] [SI] +BETA Vi xử lý 107 Thu vien DH SPKT TP HCM - http://www.thuvienspkt.edu.vn Truong DH SPKT TP HCM http://www.hcmute.edu.vn Chương 3: Cấu trúc vi xử lý 8086/8088 SPKT HCM TP t thua Sau thực lệnh ghi IP tăng lên đơn amvì y lệnh byte, vị K mã u ph liệu ô nhớ có địa 04234H mang giá trị bằHg BEH copy sang ghi AH Dn S g ruon n©T e Cách định địa chuỗuye i (string): q Ban Chuỗi dãy liên tục byte hay word cất nhớ lưu trữ dạng ASCII Vi xử lý 8086/8088 có nhiều lện h thiết kế riêng để xử lý chuỗi ký tự Hình 3-19b Sau thực hiệ n lệnh MOV AX,[BX] [SI] +BETA Các lệnh có cách định địa đặc biệt sử dụng DS:SI để quản lý địa chuỗi kí tự nguồn ES:DI để quản lý địa vùng nhớ mà chuỗi chuyển đến Lệnh MOVSB lệnh dùng cách định địa chuỗi có chức năn g 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ị DF 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ụ: cho DS = 1000H ES = 2000H, SI = 10H, DI = 20H Lệnh: f MOVSB ;copy nội dung ô nhớ [10010H] đến [20020H] Cách định địa cổng (port addressing mode): Vi xử lý 8086/8088 có vùng nhớ vùng IO độc lập với Vùng IO 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ụ: 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 80H Cổng IO truy cập ghi – truy cập đến 65536 cổng IO: 108 Vi xử lý Thu vien DH SPKT TP HCM - http://www.thuvienspkt.edu.vn Truong DH SPKT TP HCM http://www.hcmute.edu.vn Chương 3: Cấu trúc vi xử lý 8086/8088 SPKT Ví dụ: Lệnh: ;copy nội dung cổ ng IO có địa lưu DX vào AL OUT DX,AL g IN AL,DX ;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/8088 tổ chức theo cấu trúc vào sau trước LIFO Ví dụ: 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: H Su ng D ruo n©T quye an Trước PUSH K pham M P HC uat T y th Sau PUSH BHì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 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 h 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 mặc nhiê n Tiếp đầu ngữ viết chồng IP CS Không có SP SS Không có BP SS DS, ES CS SI, DI DS ES, SS CS DI cho lệnh chuỗi kí tự ES ES, SS CS Bảng 3-7 Qui tắt kết hợp ghi đoạn ghi offset Ví dụ: Vi xử lý 109 Thu vien DH SPKT TP HCM - http://www.thuvienspkt.edu.vn Truong DH SPKT TP HCM http://www.hcmute.edu.vn Chương 3: Cấu trúc vi xử lý 8086/8088 Lệnh: SPKT ;AX  DS: [DI] MOV AX,ES:[DI] III MOV AX,[DI] ;AX  ES: [DI] TẬP LỆNH: Mã lện h vi xử lý 8086/8088: Vi xử lý 8086/8088 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/8088: H Su ng D ruo K pham M P HC uat T y th n©T quye an B Hình 3-21 Dạng mã lệ nh Giải thích mã lệnh: Vù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-8 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-9 Bảng liệ t kê giá trị MOD 110 Vi xử lý Thu vien DH SPKT TP HCM - http://www.thuvienspkt.edu.vn Truong DH SPKT TP HCM http://www.hcmute.edu.vn Chương 3: Cấu trúc vi xử lý 8086/8088 SPKT 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] Bảng 3-10 Bảng liệt kê giá trị R/M Tổng quan tập lệnh vi xử lý 8086/8088: 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) HCM Vi xử lý 8086 có 90 lệnh (không kể lệnh biếnổiTP cách định địa chỉ), h at Ky t chia làm nhóm lệnh sau: nhóm lện h chuyể n liệu , nhóm lệnh số học, nhóm lệnh xử lý pham chuỗi, nhóm lệnh chuyển quyề n điều khiển vàDH Sm lệnh điều khiển vi xử lý nhó u g ruon Nhóm lệnh chuyển liệu: gồm có 14 lệnh sau: n©T quye MOV, PUSH, POP, XCHG, IN, OUT, XLAT, LEA, Ban 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, 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 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/8088 trình tính toán địa thật (20bit) cần nhiều xung clock – với nhữ ng vi xử lý từ 80286 trở sau không tính toán địa nên khôn g phải nhiều chu kỳ xung clock để tính địa Ví dụ: Một số lệ nh số chu hiện: Cách định địa Gián tiếp ghi Lệnh minh họa MOV CL,[DI] Số chu kỳ Vi xử lý 111 Thu vien DH SPKT TP HCM - http://www.thuvienspkt.edu.vn Truong DH SPKT TP HCM http://www.hcmute.edu.vn Chương 3: Cấu trúc vi xử lý 8086/8088 Trực tiếp Chỉ số Chỉ số (có độ dời) Tiếp đầu ngữ viết chồng đoạn SPKT MOV MOV MOV MOV CL,DATA BL,[BP+DI] CX,[BP+DI+DATA] AL,ES:DATA 11 EA+2 Baûng 3-11 Bảng liệt kê chu lệnh Tóm tắt tập lệnh vi xử lý 8086/8088: H Su ng D ruo K pham M P HC uat T y th n©T quye an B 112 Vi xử lý Thu vien DH SPKT TP HCM - http://www.thuvienspkt.edu.vn Truong DH SPKT TP HCM http://www.hcmute.edu.vn Chương 3: Cấu trúc vi xử lý 8086/8088 SPKT H Su ng D ruo K pham M P HC uat T y th n©T quye an B Vi xử lý 113 Thu vien DH SPKT TP HCM - http://www.thuvienspkt.edu.vn Truong DH SPKT TP HCM http://www.hcmute.edu.vn Chương 3: Cấu trúc vi xử lý 8086/8088 SPKT H Su ng D ruo K pham M P HC uat T y th n©T quye an B 114 Vi xử lý Thu vien DH SPKT TP HCM - http://www.thuvienspkt.edu.vn Truong DH SPKT TP HCM http://www.hcmute.edu.vn Chương 3: Cấu trúc vi xử lý 8086/8088 SPKT H Su ng D ruo K pham M P HC uat T y th n©T quye an B Vi xử lý 115 Thu vien DH SPKT TP HCM - http://www.thuvienspkt.edu.vn Truong DH SPKT TP HCM http://www.hcmute.edu.vn Chương 3: Cấu trúc vi xử lý 8086/8088 SPKT H Su ng D ruo K pham M P HC uat T y th n©T quye an B Khảo sát tập lệnh vi xử lý 8086/8088: 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 116 Vi xử lý Thu vien DH SPKT TP HCM - http://www.thuvienspkt.edu.vn Truong DH SPKT TP HCM http://www.hcmute.edu.vn Chương 3: Cấu trúc vi xử lý 8086/8088 IV SPKT CÂU HỎI VÀ BÀI TẬP: Câu 1: Người lập trình vi xử lý 8086/8088 bằn g 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/8088 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? M P HC Tbộ nhớ Câu 9: Các ghi bên vi xử lý làm ghihuat n đoạ Ky t am Câu 10: Thành phần không gianH Su nhớ vi xử lý 8086 dùng để địa ph ng D lưu trữ lệnh chương trình Truo © uyen an tạ Câu 11: Cái đượcBlưu q i đị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/8088 ? 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ế bao nhiê u ? Vi xử lý 117 Thu vien DH SPKT TP HCM - http://www.thuvienspkt.edu.vn Truong DH SPKT TP HCM http://www.hcmute.edu.vn Chương 3: Cấu trúc vi xử lý 8086/8088 SPKT 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 ? 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ùn g 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 naøo: (a) MOV AL,BL (b) MOV AX,OFFH (c) MOV [DI],AX (d) MOV DI,[SI] H Su ng D ruo (f) y th MOV [BX] +XYZ,CX n©T quye Ban MOV [DI] + XZY,AH (g) K pham M P HC uat T MOV [BX][DI]+XYZ,AL (e) Câu 33: Nếu cho giá trị caùc ghi: CS = 0A00H, DS = 0B00H, SI = 0100H, DI = 0200H, BX = 0300H vaø 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 118 Vi xử lý Thu vien DH SPKT TP HCM - http://www.thuvienspkt.edu.vn ... http://www.hcmute.edu.vn Chương 3: Cấu trúc vi xử lý 8086/ 8088 I SPKT CẤU TRÚC CỦA VI XỬ LÝ 8086/ 8088: Cấu trúc bên vi xử lý 8086/ 8088: 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... 000 01 0 0 0 0 0 0 0 0 0 00002 … 1 1 1 1 1 1 1 1 1 1 FFFFF Do địa ô nhớ 20 bit chứa ghi 16 bit vi xử lý 8086/ 8088 (16 bit) nên 8086/ 8088 chia nhớ 1Mbyte thành 16 đoạn nhớ (Memory Segment) 16 đoạn... 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ử

Ngày đăng: 26/07/2014, 21:20

Từ khóa liên quan

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

Tài liệu liên quan