Kỹ thuật vi xử lý - Chương 2 pptx

17 914 3
Kỹ thuật vi xử lý - Chương 2 pptx

Đ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

Trờng đại học kỹ thuật Công Nghiệp Nguyễn Tiến Duy Trung tâm Kỹ thuật máy tính Bộ môn Kỹ thuật máy tính 11 http:// www.ebook.edu.vn Chơng 2 Bộ vi xử lý 8088 của Intel 1. Giới thiệu hoạt động của bộ vi xử lý 8088 a. Giới thiệu chung Bộ vi xử lý 8088 thuộc họ vi xử lý của Intel. Điển hình: 8085 là bộ vi xử lý 8 bit. 8086 là bộ vi xử lý 16 bit hoàn chỉnh. 8088 là bộ vi xử lý 16 bit trong/ 8 bit ngoài. Các đặc tính kỹ thuật chủ yếu: - Số thanh ghi: 14 thanhg ghi 16 bit - Bus địa chỉ: 20 bit - Bus dữ liệu: 16 (8086) và 8 (8088) - Tập lệnh: 115 (là số lệnh đợc công bố trong nhiều tài liệu) - Tốc độ chuẩn: 4.77 MHz - Số chân của bộ vi xử lý: 40 Bộ vi xử lý 8086 của Intel đợc phát triển từ năm 1978 vào đa vào thị trờng từ năm 1980. Đây là bộ vi xử lý 16 bit bán hoàn chỉnh, các thanh ghi bên trong là 16 bit và nó xử lý 16 bit dữ liệu cùng một lúc, 8086 liên hệ với kênh số liệu bên ngoài bằng bus dữ liệu 16 bit và bus địa chỉ là 20 bit. Bộ vi xử lý 8088 ra đời sau 8086, nó có cấu trúc bên trong và tập lệnh hoàn toàn giống của 8086, chỉ khác 8086 ở kênh truyền dữ liệu với bên ngoài. 8088 sử dụng kênh dữ liệu 8 bit nên việc truyền dữ liệu giữa các thanh ghi trong nó với bộ nhớ chậm hơn so với 8086. Đây là một bớc lùi về kỹ thuật nhng đem lại nhiều lợi ích về kinh tế. Tại thời điểm lịch sử đó, bus DataMaster 8 bit đang đợc sử dụng rộng rãi trên thị trờng, nhiều loại card mở rộng và các chip hỗ trợ có sẵn trên thị trờng là loại 8 bit nên giá thấp hơn loại 16 bit tơng ứng. Việc sử dụng bus dữ liệu 8 bit giúp cho ngời sử dụng khi nâng cấp máy có thể tận dụng đợc các card 8 bit trong các máy cũ cũng nh chỉ phải mua mới với giá thấp. Đồng thời cũng giúp cho các nhà sản xuất các máy tơng thích với IBM PC có thêm nhiều cơ hội lựa chọn sản phẩm của các hãng khác nhau. Chiến lợc phát triển có tính kế thừa nh vậy đã góp phần làm cho khách hàng của IBM ngày một gia tăng. Chọn bộ vi xử lý 8088 để nghiên cứu vì: - Tập lệnh chung cho các bộ vi xử lý nói trên. - Tính phức tạp vừa phải, phù hợp với những ngời mới tìm hiểu. b. Cấu trúc và hoạt động của bộ VXL 8088 Sự hoạt động của bộ vi xử lý 8088/8086 thực sự là việc thực hiện lặp đi lặp lại 3 thao tác chính là lấy lệnh (fetch), giải mã lệnh (decode) và thực hiện (execute). Sơ đồ khối của bộ vi xử lý 8088/8086 nh hình vẽ với 2 đơn vị chính: - EU (Execution Unit): Đơn vị (khối) thực hiện lệnh. - BIU (Bus Interface Unit): Đơn vị giao tiếp bus (khối tơng thích bus) để điều khiển bus hiệu quả hơn. EU Đơn vị EU của 8088 và 8086 giống nhau, bao gồm ALU, thanh ghi cờ, các thanh ghi đệm và các thanh ghi đa năng. Các bus dữ liệu bên trong của EU đều là 16 bit. EU không nối trực tiếp với bên ngoài, nó nhận lệnh từ hàng đợi lệnh bên trong Trờng đại học kỹ thuật Công Nghiệp Nguyễn Tiến Duy Trung tâm Kỹ thuật máy tính Bộ môn Kỹ thuật máy tính 12 http:// www.ebook.edu.vn AX: Accumulator BX: Base CX: Count DX: Data Stack Pointer Base Pointer Source Index Destination Index Instruction Pointer Status flags Code Segment Data Segment Stack Segment Extra Segment General Registers Segment Registers BUI. Nếu là lệnh cần truy nhập bộ nhớ hoặc cổng vào/ra (I/O port - thiết bị ngoại vi) thì EU yêu cầu BIU lấy hoặc gửi dữ liệu. Tất cả các địa chỉ mà EU thao tác đều là 16 bit, khi gửi sang BIU thì BIU sẽ thực hiện tính toán để tạo địa chỉ vật lý 20 bit và phát ra các chân địa chỉ của chip. AH AL BH BL CH CL DH DL SP BP SI DI IP FLAGS CS DS SS ES Hình vẽ: Bộ vi xử lý 8088 và tập thanh ghi các thanh ghi tạm thanh ghi cờ Logic đ iều khiển BUS AX BX CX DX SP BP SI DI Khối điều khiển của Đệm lệnh (hàng đợi lệnh) (6 byte cho 8086) BUS ngoài Bus địa chỉ (20 các thanh ghi các thanh ghi đoạn các thanh ghi con trỏ Bus dữ liệu ALU(16bit) Bus dữ liệu (8 bit) Bus trong 8 bit dữ liệu 20 bit địa chỉ EU BIU CS DS SS ES IP Trờng đại học kỹ thuật Công Nghiệp Nguyễn Tiến Duy Trung tâm Kỹ thuật máy tính Bộ môn Kỹ thuật máy tính 13 http:// www.ebook.edu.vn Các thanh ghi trong Có 8 thanh ghi, là thành phần nhớ có tốc độ truy nhập rất cao. Bao gồm các thanh ghi đa năng Ax, Bx, Cx, Dx. Mỗi thanh ghi 16 bit có thể đợc phân chia thành 2 thanh ghi 8 bit làm việc độc lập nhau. + AX (Accumulator, Acc): Thanh chứa, chứa tạm thời dữ liệu (toán hạng, kết quả phép toán nh nhân, chia và đợc coi là Acc). AX có thể đợc phân chia thành AH : Phần cao. AL : Phần thấp. + BX (Base): Thanh ghi cơ sở, thờng đợc dùng để chứa địa chỉ cơ sở cần truy nhập trong lệnh XLAT. BX có thể đợc phân chia thành BH : Phần cao. BL : Phần thấp + CX (Count): Bộ đếm, thờng đợc dùng để đếm số lần lặp của công việc (số lần lặp trong các vòng lặp). CX có thể đợc phân chia thành CH : Phần cao. CL : Phần thấp. CX thờng đợc dùng để chứa số lần lặp trong các lệnh LOOP, còn CL thờng chứa số lần dịch hoặc quay trong các lệnh dịch quay thanh ghi. + DX (Data): Thanh ghi đữ liệu, sử dụng để chứa toán hạng, kết quả. DX cùng AX dùng để chứa toán hạng hoặc kết quả của các phép nhân, chia số 16 bit. DX còn chứa địa chỉ cổng trong các lệnh vào ra trực tiếp (IN, OUT). DX có thể đợc phân chia thành DH : Phần cao. DL : Phần thấp. Các thanh ghi con trỏ, chỉ số Các thanh ghi SP, BP là các thanh ghi con trỏ không tách rời. + SP (Stack Pointer): Thanh ghi con trỏ ngăn xếp, trỏ vào đỉnh hiện thời của ngăn xếp nằm trong đoạn ngăn xếp SS (Nó luôn kết hợp với thanh ghi SS). Ta có địa chỉ logic SS: SP. Sau mỗi thao tác cất một word vào stack (thao tác Push) thì SP tự động giảm 2 đơn vị, còn sau thao tác lấy một word ra khỏi stack (thao tác Pop), SP đợc tự động tăng 2 đơn vị. + BP (Base stack Pointer): Con trỏ cơ sở, luôn trỏ vào một dữ liệu cụ thể nằm trong đoạn ngăn xếp SS. Ta có địa chỉ logic SS: BP. + SI (Source Index): Thanh ghi chỉ số nguồn (hay nguồn), chỉ vào dữ liệu nằm trong đoạn DS. Ta có địa chỉ logic DS: SI. + DI (Destination Index): Thanh ghi chỉ số đích, chỉ dữ liệu trong đoạn DS. Ta có địa chỉ logic DS: DI. Ta có các cặp SP, BP đi với SS và SI, DI đi với DS. Trong các lệnh thao tác với dữ liệu kiểu chuỗi thì cặp ES:DI luôn ứng với địa chỉ của phần tử thuộc chuỗi đích còn cặp DS:SI ứng với địa chỉ của phần tử thuộc chuỗi nguồn. Khối ALU Làm nhiệm vụ thực hiện các lệnh số học và logic. + Số học: +, -, *, /, so sánh, đảo dấu. + Logic: Phủ định (NOT): NOT 0 = 1, NOT 1 = 0 Tổng quát: NOT A , là phép đảo từng bit của A (8, 16 bit). Và (AND) A AND B , thực hiện AND từng cặp bit một của A và B (8, 16 bit). Trờng đại học kỹ thuật Công Nghiệp Nguyễn Tiến Duy Trung tâm Kỹ thuật máy tính Bộ môn Kỹ thuật máy tính 14 http:// www.ebook.edu.vn Ví dụ: A =1011 0100 B =1101 0011 A AND B =1001 0000 Hoặc (OR) A OR B, thực hiện OR từng cặp bit của A và B (8, 16 bit). Ví dụ: A =1011 0100 B =1101 0011 A OR B =1111 0111 Cộng modul (XOR eXclusive OR) a b = a.b + a.b Ví dụ: A =1011 0100 B =1101 0011 A XOR B =1001 0000 Thanh ghi cờ: Đây là thanh ghi 16 bit, mỗi bit đợc sử dụng để thể hiện một trạng thái của bộ vi xử lý tại một thời điểm nhất định trong quá trình thực hiện chơng trình (dãy các câu lệnh), nhng chỉ dùng 9 bit đối với bộ vi xử lý 8088/8086. Mỗi bit đó đợc gọi là một cờ (flag). Giá trị của mỗi cờ đợc biểu diễn bằng các ký hiệu gợi nhớ nh cách biểu diễn của chơng trình Debug của DOS. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 X X x x O D I T S Z x A x P x C Các cờ của bộ vi xử lý 8085 (x: Không đợc định nghĩa (don't care), với 8 bit thấp là các cờ của bộ vi xử lý 8085) Hình vẽ: Sơ đồ thanh ghi cờ của 8088/86 o Cờ trạng thái: Biểu diễn trạng thái phép toán vừa thực hiện. CF (Carry Flag): Cờ nhớ (cờ tràn). CF = 1 (CY - CarrY) khi kết quả phép toán vợt (tràn) khuôn khổ biểu diễn (có nhớ (mợn) lên trên (từ) MSB), CF = 0 (NC - No Carry) trong trờng hợp ngợc lại. Cờ này thờng đợc sử dụng khi thực hiện các phép cộng, trừ các số nhiều byte. Ví dụ: 1011 0001 + 0110 1001 1 0001 1010 PF (Parity Flag): Cờ chẵn lẻ. PF = 1 (PE - Parity Even) khi số bit 1 trong kết quả phép toán (hay các phép vận chuyển dữ liệu) là chẵn, PF = 0 (PO - Parity Old) trong trờng hợp ngợc lại. AF (Carry Flag): Cờ nhớ phụ (tràn phụ - cờ bổ trợ). Cờ này có ý nghĩa khi ta làm việc với số BCD. AF = 1 (AC - Auxiliary Carry) khi có nhớ hoặc mợn từ một số BCD thấp (4 bit thấp) sang một số BCD cao (4 bit cao) và AF = 0 (NA - No Auxiliary carry) trong trờng hợp ngợc lại. SF (Sign Flag): Cờ dấu. Trong bộ vi xử lý 8088/8086 các số âm đợc biểu diễn dới dạng số bù 2, nên phải dùng cờ SF để chỉ thị dấu của kết quả. Trờng đại học kỹ thuật Công Nghiệp Nguyễn Tiến Duy Trung tâm Kỹ thuật máy tính Bộ môn Kỹ thuật máy tính 15 http:// www.ebook.edu.vn SF = 1 (NG - NeGative), khi kết quả phép toán là một số âm, SF = 0 (PL- PLus) trong trờng hợp ngợc lại. ZF (Zero Flag): Cờ rỗng. ZF = 1 (ZR - ZeRo) khi kết quả phép toán = 0, ZF = 0 (NZ-Non Zero) trong trờng hợp ngợc lại. OF (Overflow Flag): Cờ tràn. OF = 1 (OV-OVerflow) khi kết quả là số bù 2 vợt khuôn khổ biểu diễn (tràn số học, hay nói cách khác: khi cộng hai số cùng dấu mà kết quả là một số trái dấu thì OF = 1), OF = 0 (NV-Non oVerflow) trong trờng hợp ngợc lại (cờ này làm việc với số có dấu). o Cờ điều khiển Cờ trạng thái phụ thuộc kết quả phép toán, còn với cờ điều khiển ta có thể thiết lập nhờ lệnh. IF (Interrupt Flag): Cờ ngắt. IF = 1 (EI-Enable Interrup), CPU cho phép ngắt, IF = 0 (DI-Disable Interrup) CPU không cho phép ngắt (cấm) các loại ngắt che đợc (Maskable) TF (Trap Flag): Cờ bẫy. TF = 1 CPU làm việc trong chế độ chạy từng lệnh, thờng dùng để gỡ rối chơng trình (debug). Sau khi thực hiện xong mỗi lệnh, bộ vi xử lý sẽ phát ra một lệnh ngắt (INT) để có kiểm tra chơng trình. DF (Direction Flag): Cờ hớng. Điều khiển hớng xử lý đối với thao tác chuỗi. DF = 1 (DN-DowN) thì các lệnh vận chuyển dữ liệu hay xử lý chuỗi sẽ thao tác lùi từ phải đến trái (địa chỉ cao đến địa chỉ thấp). DF=0 (UP) trong trờng hợp ngợc lại (thao tác các phần tử từ địa chỉ thấp đến địa chỉ cao). Cờ này thờng đợc lập bởi chơng trình của ngời sử dụng khi có các lệnh thao tác chuỗi. tiến (thuận theo chiều tăng địa chỉ) lùi (ngợc theo chiều giảm địa chỉ) BIU Hàng đợi: Là tập thanh ghi Với 8086 hàng đợi lệnh là 6 byte, 8088 hàng đợi lệnh là 4 byte nên chứa đợc tối đa là 4 lệnh. CPU chứa tập thanh ghi theo kiểu LIFO. Cơ chế: + Đọc lệnh (lấy lệnh) + Giải mã lệnh + Thực hiện Thanh ghi IP: Thanh ghi con trỏ lệnh, trỏ vào lệnh tiếp theo chuẩn bị đợc thực hiện nằm trong đoạn CS (CS: IP). Sau khi đọc 1 byte, IP tự động tăng thêm 1. Nh vậy thực tế thì cặp CS:IP mới là con trỏ lệnh vì nó chứa địa chỉ đầy đủ của một lệnh trong bộ nhớ. Thanh ghi đoạn: + CS (Code Segment): Thanh ghi đoạn mã, là thanh ghi địa chỉ đoạn mã lệnh, chứa địa chỉ cơ sở (địa chỉ đoạn) của chơng trình đang thực hiện. Hàng đợi lệnh Trờng đại học kỹ thuật Công Nghiệp Nguyễn Tiến Duy Trung tâm Kỹ thuật máy tính Bộ môn Kỹ thuật máy tính 16 http:// www.ebook.edu.vn + DS (Data Segment): Thanh ghi đoạn dữ liệu, là thanh ghi địa chỉ đoạn dữ liệu, chứa địa chỉ đoạn của vùng dữ liệu mà chơng trình đang thực hiện sử dụng. Vùng này thờng chứa các biến của chơng trình. + SS (Stack Segment): Thanh ghi đoạn ngăn xếp, là thanh ghi địa chỉ đoạn bộ nhớ ngăn xếp (stack) của chơng trình đang chạy. + ES (Extra Segment): Thanh ghi đoạn dữ liệu phụ, là thanh ghi địa chỉ đoạn dữ liệu bổ sung mà chơng trình đang thực hiện sử dụng. Vùng này cũng thờng chứa các biến của chơng trình. 8088 có 20 bit địa chỉ, trong khi đó các thanh ghi quản lý bộ nhớ là 16 bit. Để xác định một ngăn nhớ có địa chỉ 20 bit, dùng 2 thanh ghi 16 bit để xác định địa chỉ. Địa chỉ luôn nằm trong một thanh ghi gọi là địa chỉ đoạn. Địa chỉ lệch (offset) trong một thanh ghi khác (Ax, Bx, Cx, ). Địa chỉ logic: DS:SI DS:DI DS:XX Địa vật lý (phải là số 20 bit) đợc xác định nh sau: Địa vật lý = địa chỉ đoạn * 16 + địa chỉ lệch Ví dụ: DS = 4000h, SI = 3F4Dh Địa chỉ logic của ngăn nhớ: 4000:3F4D Địa chỉ vật lí của ngăn nhớ: DS * 16 + SI = 40000 + 3F4D = 43F4Dh Tại một thời điểm CPU quản lý đợc 4 đoạn nhớ (DS, SS, CS, ES) , nó có thể đồng thời truy nhập 4 đoạn đó. Bộ nhớ đợc chia thành nhiều đoạn. Mỗi đoạn có kích thớc tối đa là 64 KB. Vậy ta có 16 đoạn tách rời và địa chỉ lệch thay đổi từ 0000 H đến FFFFh. Nếu địa chỉ đoạn thay đổi từ 0000h đến FFFFh thì có 64 Kđoạn. Khi này các đoạn bao trùm lên nhau. 2 đoạn kề nhau sẽ các nhau 16 Byte (Paragraph). Khi khởi động máy (hoặc Reset) CS đợc nạp giá trị F000h, IP đợc nạp giá trị FFF0h. Địa chỉ này thuộc đoạn cuối, nơi đặt ROM khởi động. Địa chỉ vật lý = F000h*16 + FFF0h = F0000h + FFF0h = FFFF0h c. Bộ vi xử lý 8086 và 8088 2. Chế độ địa chỉ của 8088 a. Cách mã hoá lệnh của bộ VXL 8088/88 b. Chế độ địa chỉ thanh ghi Dùng thanh ghi nh là các toán hạng chứa dữ liệu cần thao tác, tốc độ thực hiện lệnh rất nhanh vì CPU không mất thời gian tìm kiếm dữ liệu. Ví dụ: MOV AL, BL ; AL:= BL MOV DS, BX ; DS:= BX ADD AL, DL ; AL:= AL + DL c. Chế độ địa chỉ tức thì + Toán hạng đích là thanh ghi, hoặc ô nhớ. + Toán hạng nguồn là 1 giá trị cụ thể (hằng số). Trờng đại học kỹ thuật Công Nghiệp Nguyễn Tiến Duy Trung tâm Kỹ thuật máy tính Bộ môn Kỹ thuật máy tính 17 http:// www.ebook.edu.vn Ví dụ: MOV AL, 0Dh ;AL:=0Dh Lệnh này thờng đợc dùng để nạp dữ liệu cần thao tác vào thanh ghi nào đó. d. Chế độ địa chỉ tực tiếp - Một toán hạng là địa chỉ offset của ô nhớ chứa giá trị cần thao tác. - Toán hạng kia là thanh ghi (không đợc là ô nhớ). Ví dụ: MOV AL, [04FCh] ; đa vào thanh ghi AL nội dung ô nhớ có địa chỉ logic DS:04FCh. e. Chế độ địa chỉ gián tiếp qua thanh ghi - Một toán hạng là thanh ghi chứa địa chỉ offset của ngăn nhớ chứa giá trị cần thao tác. - Toán hạng kia là thanh ghi (không đợc là ngăn nhớ). Ví dụ: MOV [BX], AL ; Đa nội dung thanh ghi AL vào ngăn nhớ có địa chỉ offset nằm trong thanh ghi BX. f. Chế độ địa chỉ tơng đối cơ sở - Thanh ghi BX, BP và các hằng số là giá trị dịch chuyển để xác định ngăn nhớ trong DS, SS chứa giá trị cần thao tác. Ví dụ: MOV [BX + N], CL ; Đa nội dung thanh ghi CL vào ngăn nhớ có địa chỉ offset BX + N (DS:BX + N) MOV AL, [BP + N] ; Đa nội ngăn nhớ có địa chỉ offset BP + N vào thanh ghi AL (SS:BP + N) g. Chế độ địa chỉ tơng đối chỉ số - Thanh ghi DI, SI và các hằng số là giá trị dịch chuyển để xác định ngăn nhớ chứa giá trị trong DS cần thao tác. Ví dụ: MOV [SI + N], AH ; Đa nội dung thanh ghi AH vào ngăn nhớ có địa chỉ offset tại SI + N (DS:SI + N). MOV CL, [DI + N] ; Đa nội dung ngăn nhớ có địa chỉ offset tại DI + N (DS:DI + N) vào thanh ghi CL. h. Chế độ địa chỉ tơng đối chỉ số cơ sở - Chế độ địa chỉ này là sự kết hợp cả 2 chế độ địa chỉ trên. Dùng cả thanh ghi cơ sở và thanh ghi chỉ số để tính địa chỉ toán hạng. Ví dụ: MOV [BX + SI + N], AX ;Đa nội dung thanh ghi AX vào ngăn ;nhớ có địa chỉ offset tại BX + SI + N (DS:BX + SI + N). MOV CL, [BP + DI + N] ;Đa nội dung ngăn nhớ có địa chỉ ;offset tại BP + DI + N (DS:BP + DI + N) ;vào thanh ghi CL. Trờng đại học kỹ thuật Công Nghiệp Nguyễn Tiến Duy Trung tâm Kỹ thuật máy tính Bộ môn Kỹ thuật máy tính 18 http:// www.ebook.edu.vn 3. Mô tả tập lệnh của 8088 Tập lệnh của bộ vi xử lý 8088 nói chung đợc chia thành 6 nhóm, với 5 nhóm thao tác dữ liệu và 1 nhóm đặc biệt (gồm các chỉ thị để điều khiển). Một lệnh thờng có cấu trúc nh sau: a. Nhóm lệnh chuyển dữ liệu Nhóm này thực hiện vận chuyển dữ liệu (sao chép - copy) từ nơi này đến nơi khác. + MOV đích, nguồn (Move a Word or Byte) Lệnh thực hiện chuyển dữ liệu từ nguồn tới đích (đíchnguồn), dữ liệu có thể là một byte hoặc một word (từ). Các toán hạgn có thể đợc tìm thấy qua các chế độ địa chỉ khác nhau. Lệnh này không tác động đến các cờ. + LDS đích, nguồn (Load Register and DS with Word from Memory) Lệnh thực hiện nạp một word từ bộ nhớ vào thanh ghi cho trong lệnh và một word tiếp theo vào thanh ghi DS (đích nguồn, DS nguồn+2). ứng dụng: thờng nạp địa chỉ đầu của vùng nhớ chứa chuỗi nguồn vào SI và DS trớc khi dùng đến lệnh thao tác chuỗi. Lệnh này không tác động đến các cờ. Ví dụ: LDS SI, Str ;Lệnh nạp vào SI nội dung 2 ô nhớ Str và Str+1, rồi nạp vào ;DS nội dung 2 ô nhớ Str+2 và Str+3, các ô nhớ nằm trong DS. + LEA đích, nguồn (Load Effective Address) Lệnh thực hiện nạp địa chỉ hiệu dụng vào thanh ghi. Toán hạng 'đích' thờng là một trong các thanh ghi: BX, CX, DX, BP, SI, DI. Toán hạng 'nguồn' là tên biến trong đoạn DS đợc chỉ ra trong lệnh hoặc ô nhớ cụ thể. đích địa chỉ lệch của nguồn (đích @nguồn) đích địa chỉ hiệu dụng của nguồn Lệnh này không tác động đến các cờ. Ví dụ: LEA DX, Str ;Lệnh nạp địa chỉ offset của Str vào DX LEA CX, [BX] ;Lệnh nạp địa chỉ hiệu dụng (EA-Effective Address) ;EA = BX LEA CX, [BX][DI] ;Lệnh nạp địa chỉ hiệu dụng EA = BX + DI + LES đích, nguồn Lệnh này giống lệnh LDS nhng 2 byte tiếp theo đợc nạp vào thanh ghi ES. ứng dụng: thờng nạp vào DI và ES địa chỉ đầu của vùng nhớ chứa chuỗi trớc khi thực hiện các lệnh thao tác chuỗi. Lệnh này không tác động đến các cờ. Ví dụ: LES DI, Str ;Lệnh nạp địa chỉ offset của Str vào DX M M ã ã l l ệ ệ n n h h đ đ í í c c h h , , n n g g u u ồ ồ n n Trờng đại học kỹ thuật Công Nghiệp Nguyễn Tiến Duy Trung tâm Kỹ thuật máy tính Bộ môn Kỹ thuật máy tính 19 http:// www.ebook.edu.vn + IN Acc, Port (Input data from a port) Đọc dữ liệu từ cổng vào/ra vào thanh ghi Acc (Acc {Port}). Với {Port} là dữ liệu của cổng có địa chỉ là Port (là địa chỉ 8 bit = 00h FFh). Acc là AL đọc 8 bit từ cổng Port, là AX đọc 16 bit từ cổng Port và Port+1. Thờng dùng DX để chứa địa chỉ cổng có thể có địa chỉ từ 0000h FFFFh Viết lệnh: IN Acc, DX Lệnh này không tác động đến các cờ. Ví dụ: MOV DX, 07F8h IN AL, DX ;Đọc 1 byte từ cổng có địa chỉ 07F8h + OUT Acc, Port (Output a byte or a word to a port) Đa dữ liệu từ thanh ghi Acc đến cổng vào/ra. Acc Port. Lệnh này thao tác ngợc lại với lệnh IN, tính chất hoàn toàn tơng tự. Lệnh này không tác động đến các cờ. + STC (Set the Carry fag): Lập cờ nhớ: CF 1 Lệnh này không tác động đến các cờ khác. + STD (Set the Direcion flag): Lập cờ hớng: DF 1 Lệnh này định hớng thao tác cho các lệnh làm việc với chuỗi theo chiều lùi (). Các thanh ghi liên quan: SI, DI sẽ đợc tự động giảm khi làm việc xong với 1 phần tử của chuỗi. Lệnh này không tác động đến các cờ. + STC (Set the Interrupt fag): Lập cờ cho phép ngắt: IF 1 Lệnh lập IF để cho các yêu cầu ngắt tác động vào chân INTR đợc CPU nhận biết. IF=1, INTR=1 CPU bị ngắt, cất thanh ghi cờ, địa chỉ trở về vào Stack rồi thực hiện chơng trình con phục vụ ngắt. Lệnh này không tác động đến các cờ khác. + CLC (Clear the Carry flag): Xoá cờ nhớ: CF 0. Lệnh này không tác động đến các cờ khác. + CLD (Clear the Direction flag): Xoá cờ hớng: DF 0. Lệnh định hớng thao tác cho các lệnh làm việc với chuỗi theo chiều tiến (). Các thanh ghi liên quan: SI, DI sẽ tự động tăng 1 khi làm việc xong với một phần tử dữ liệu của chuỗi. Lệnh này không tác động đến các cờ khác. + CLI (Clear the Interrupt flag): Xoá cờ cho phép ngắt: IF 0. Khi thực hiện lệnh này, các ngắt che đợc sẽ bị che. Lệnh này không tác động đến các cờ khác. + CMC (Complement the Carry flag): Đảo cờ nhớ: CF CF Lệnh chỉ cập nhật CF, không tác động đến các cờ khác. + PUSH nguồn Push Word on the Stack: Cất 1 từ vào ngăn xếp SP SP-2 {SP} nguồn Toán hạng nguồn tìm đợc theo các chế độ địa chỉ khác nhau. Lệnh này thờng đi cặp với lệnh POP. Lệnh này không tác động đến các cờ. + POP đích Pop Word from top of Stack: Lấy 1 word từ đỉnh ngăn xếp vào thanh ghi đích {SP} SP SP+2 Toán hạng đích tìm đợc theo các chế độ địa chỉ (không đợc là thanh ghi đoạn mã: CS). Dữ liệu để tại ngăn xếp không thay đổi. SS không thay đổi. Lệnh này không tác động đến các cờ. Trờng đại học kỹ thuật Công Nghiệp Nguyễn Tiến Duy Trung tâm Kỹ thuật máy tính Bộ môn Kỹ thuật máy tính 20 http:// www.ebook.edu.vn + POPF Pop Word from top of Stack to Flag register: Lấy 1 word từ đỉnh ngăn xếp vào thanh ghi cờ. RF {SP} SP SP+2 Dữ liệu để tại ngăn xếp không thay đổi. SS không thay đổi. Lệnh này không tác động đến các cờ. b. Nhóm lệnh số học + ADC đích, nguồn Add with carry: cộng 2 toán hạng có nhớ đích đích+nguồn+CF Các toán hạng đích, nguồn tìm đợc theo các chế độ địa chỉ, phải chứa dữ liệu cùng độ dài (cùng kiểu). Không đợc là 2 ô nhớ và không đợc là thanh ghi đoạn. Điều này áp dụng hầu hết cho tất cả các lệnh số học có cú pháp tơng tự. Lệnh cập nhật các cờ: AF, CF, OF, PF, SF, ZF. + ADD đích, nguồn ;Add: cộng 2 toán hạng có nhớ đích đích+nguồn Các toán hạng đích, nguồn tìm đợc theo các chế độ địa chỉ, phải chứa dữ liệu cùng độ dài (cùng kiểu). Không đợc là 2 ô nhớ và không đợc là thanh ghi đoạn. (Tính chất giống với lệnh ADC). Lệnh cập nhật các cờ: AF, CF, OF, PF, SF, ZF. + SBB đích, nguồn Substract with Borrow: Trừ có mợn đích đích-nguồn-CF Các toán hạng đích, nguồn tìm đợc theo các chế độ địa chỉ, phải chứa dữ liệu cùng độ dài (cùng kiểu). Không đợc là 2 ô nhớ và không đợc là thanh ghi đoạn. (Tính chất giống với lệnh ADC). Lệnh cập nhật các cờ: AF, CF, OF, PF, SF, ZF. AF, PF chỉ liên quan đến 8 bit thấp + SUB đích, nguồn Substract: Trừ 2 toán hạng đích đích-nguồn Các toán hạng đích, nguồn tìm đợc theo các chế độ địa chỉ, phải chứa dữ liệu cùng độ dài (cùng kiểu). Không đợc là 2 ô nhớ và không đợc là thanh ghi đoạn. (Tính chất giống với lệnh ADC). Lệnh cập nhật các cờ: AF, CF, OF, PF, SF, ZF. AF, PF chỉ liên quan đến 8 bit thấp Chú ý: Các ví dụ cho các lệnh ADC, ADD, SBB, SUB có thể tham khảo trong tài liệu Kỹ thuật Vi xử lý - Văn Thế Minh. + MUL nguồn (Multiply Unsigned Byte or Word) Nhân số không dấu. Toán hạng 'nguồn' là số nhân, tìm đợc theo các chế độ địa chỉ. Tuỳ theo độ dài (kích thớc) của toán hạng 'nguồn' mà ta có các trờng hợp sau: o 'nguồn' là 8 bit (1 byte): AX AL*nguồn, số bị nhân phải là số 8 bit để trong thanh ghi AL. o 'nguồn' là 16 bit (2 byte): DXAX AX*nguồn, số bị nhân phải là số 16 bit để trong thanh ghi AX. [...]... o SP SP -2 , {SP} FR o IF 0 (cấm ngắt), TF 0 (chạy suốt) o SP SP -2 , {SP} CS 26 Nguyễn Tiến Duy Trung tâm Kỹ thuật máy tính Bộ môn Kỹ thuật máy tính http://www.ebook.edu.vn o SP o IP Trờng đại học kỹ thuật Công Nghiệp SP -2 , {SP} IP {N*4}, CS {N*4 +2} Ví dụ: Với N=5 thì CS {0016h} IP {0014h} + INTO (Interrupt on Overflow): Ngắt nếu có tràn Nếu OF=1 thì lệnh ngắt công vi c đang làm của bộ vi xử lý và thực... sánh + CMP đích, gốc (Compare Byte or Word): So sánh 2 byte hay 2 từ (word) 24 Nguyễn Tiến Duy Trung tâm Kỹ thuật máy tính Bộ môn Kỹ thuật máy tính http://www.ebook.edu.vn Trờng đại học kỹ thuật Công Nghiệp đích-gốc; Toán hạng đích, gốc tìm đợc theo các chế độ địa chỉ, phải chứa dữ liệu có cùng độ dài (kích thớc) Không đợc (đồng thời) là 2 ô nhớ, không đợc là thanh ghi đoạn Lệnh chỉ tạo cờ, không lu... chia (AX hoặc DXAX) o Nếu 'nguồn' = 0 hoặc thơng nằm ngoài -1 28 127 (hoặc ngoài 327 68 327 67 tuỳ độ dài (kích thớc) của toán hạng 'nguồn') thì 8088/8086 thực hiện lệnh INT 0 + NEG đích (Negative a Operand (From its 2' s Complement)) Đảo dấu một toán hạng (lấy bù 2 của một toán hạng) Toán hạng đích có thể tìm đợc theo các chế độ địa chỉ đích 0- ích = đích+1 (not đích +1) Lệnh cập nhật: AF, CF, OF, PF,... ZF + INC đích (Increment Destination register or Memory) Nguyễn Tiến Duy Trung tâm Kỹ thuật máy tính Bộ môn Kỹ thuật máy tính 21 http://www.ebook.edu.vn Trờng đại học kỹ thuật Công Nghiệp Tăng toán hạng đích lên 1 Toán hạng đích có thể tìm đợc theo các chế độ địa chỉ đích đích+1 Nếu đích = FFh (hoặc FFFFh) thì đích-1 = 00h (hoặc 0000h) mà không ảnh hởng cờ CF Lệnh này tơng đơng ADD đích,1 Lệnh cập... chính (CTC) từ chơng trình con phục vụ ngắt (ISR Interrup Service Routin) Tại cuối ISR phải có lệnh IRET để bộ vi xử lý tự động lấy lại địa chỉ trở về CTC và lấy lại thanh ghi cờ + RET(Return from Procedure to Calling Program): Trở về CTC từ ctc Vi t lệnh: RET hoặc RET n (n: nguyên, dơng) Lệnh RET đợc đặt tại cuối chơng trình con để bộ vi xử lý biết tự động lấy lại địa chỉ trở về chơng trình chính Nếu... (PF chỉ có nghĩa khi toán hạng là 8 bit) Không xác định AF + SHR đích, CL (Shift (Logically) Right): Dịch phải logic MSB LBS CF 0 Nguyễn Tiến Duy Trung tâm Kỹ thuật máy tính Bộ môn Kỹ thuật máy tính 23 http://www.ebook.edu.vn Trờng đại học kỹ thuật Công Nghiệp Toán hạng đích đợc tìm theo các chế độ địa chỉ Lệnh có tác động giống các lệnh SAL, SHL nhng theo chiều ngợc lại + ROL đích, CL (Rotate All... sánh có dấu ) ((SFOF) = 1, so sánh có dấu ) ((SFOF)+ZF = 1, so sánh có dấu ) (ZF = 0, so sánh không dấu ) (OF = 0) Nguyễn Tiến Duy Trung tâm Kỹ thuật máy tính Bộ môn Kỹ thuật máy tính 25 http://www.ebook.edu.vn + JNP/JPO + JNS + JO + JP/JPE + JS Trờng đại học kỹ thuật Công Nghiệp (PF = 0) (SF = 0) (OF = 1) (PE = 1) (SF = 1) (Chú ý: Các lệnh nhảy trên không tác động đến các cờ) Các lệnh lặp + LOOP NHAN... Operands) Hoặc 2 toán hạng đích đíchnguồn Các toán hạng đích, nguồn tìm đợc theo các chế độ địa chỉ, phải chứa dữ liệu cùng độ dài (kích thớc), không đợc là 2 ô nhớ, không đợc là thanh ghi đoạn ứng dụng: Thờng dùng lệnh Or để lập một số bit nào đó của toán hạng bằng cách cộng logic (Or) toán hạng đó với một toán hạng tức thì có các bit 0, 1 ở các vị trí cần lập 22 Nguyễn Tiến Duy Trung tâm Kỹ thuật máy... chỉ đích đích-1 Nếu đích = 00h (hoặc 0000h) thì đích-1 = FFh (hoặc FFFFh) mà không ảnh hởng cờ CF Lệnh này tơng đơng ADD đích,1 Lệnh cập nhật: AF, OF, PF, SF, ZF Không xác định CF + XCHG đích, nguồn (Exchange 2 Operands) Hoán đổi nội dung 2 toán hạng đích nguồn Các toán hạng đích, nguồn tìm đợc theo các chế độ địa chỉ, phải chứa dữ liệu có cùng độ dài (kích thớc-kiểu) Không đợc đồng thời là 2 ô nhớ, không... vị trí cần lập 22 Nguyễn Tiến Duy Trung tâm Kỹ thuật máy tính Bộ môn Kỹ thuật máy tính http://www.ebook.edu.vn Trờng đại học kỹ thuật Công Nghiệp Lệnh xoá cờ CF, OF Cập nhật: PF, SF, ZF (PF chỉ có nghĩa khi toán hạng 8 bit), không xác định cờ AF + XOR đích, nguồn (Exclusive Or Corresponding bits of Two Operands) Hoặc loại trừ 2 toán hạng đích đíchnguồn Các toán hạng đích, nguồn tìm đợc theo các chế . của bộ vi xử lý 8088 a. Giới thiệu chung Bộ vi xử lý 8088 thuộc họ vi xử lý của Intel. Điển hình: 8085 là bộ vi xử lý 8 bit. 8086 là bộ vi xử lý 16 bit hoàn chỉnh. 8088 là bộ vi xử lý 16. SP -2 , {SP} FR o IF 0 (cấm ngắt), TF 0 (chạy suốt) o SP SP -2 , {SP} CS Trờng đại học kỹ thuật Công Nghiệp Nguyễn Tiến Duy Trung tâm Kỹ thuật máy tính Bộ môn Kỹ thuật máy tính 27 . - Tốc độ chuẩn: 4.77 MHz - Số chân của bộ vi xử lý: 40 Bộ vi xử lý 8086 của Intel đợc phát triển từ năm 1978 vào đa vào thị trờng từ năm 1980. Đây là bộ vi xử lý 16 bit bán hoàn chỉnh, các

Ngày đăng: 22/07/2014, 05:21

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

Tài liệu liên quan