Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 18 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
18
Dung lượng
641,63 KB
Nội dung
1 Bộ Cơng Thương ĐẠI HỌC CƠNG NGHIỆP HÀ NỘI Khoa Công Nghệ Thông tin - Đề tài 5: Nghiên Cứu Tìm Hiểu Về Tập Lệnh Vi Sử Lý 8086 Giáo viên hướng dẫn : Nguyễn Thanh Hải Bộ Môn : Kiến Trúc Máy Tính Lớp : Kĩ Thuật Phần Mềm Nhóm 6: Nhóm 6: Nghiên Cứu Tìm Hiểu Về Tập Lệnh Vi Sử Lý 8086 Bộ vi sử lý INTEL 8086 I CẤU TRÚC BÊN TRONG CỦA INTEl 8086 Intel 8086 vi xử lý 16 bít Intel vi xử lý hỗ trợ tập lệnh x86 Vi xử lý sử dụng nhiều lĩnh vực khác nhau, máy IBM PC/XT Các vi xử lý thuộc họ sử dụng rộng rãi thời gian dài tính kế thừa sản phẩm họ x86 Các chương trình viết cho 8086 chạy hệ thống tiên tiến sau Sơ đồ khối Sơ đồ khối 8086 Vi xử lý 8086 có hai khối BIU EU Về chi tiết, vi xử lý bao gồm đơn vị điều khiển, số học lơ-gíc, hàng đợi lệnh tập ghi Đơn vị giao tiếp bus BIU đơn vị thực thi EU CPU 8086 có khối chính: Đơn vị giao tiếp BIU (Bus Interface Unit) đơn vị thực EU (Execution Unit) Việc chia CPU thành phần làm việc đồng thời có Nhóm 6: Nghiên Cứu Tìm Hiểu Về Tập Lệnh Vi Sử Lý 8086 liên hệ với qua đệm lệnh làm tăng đáng kể tốc độ xử lý CPU Các bus bên CPU có nhiệm vụ chuyển tải tín hiệu khối Hệ thống bus CPU gồm bus liệu 16 bít ALU, bus điều khiển EU bus BIU Các đệm sử dụng để kết nối bus CPU với bus (bus hệ thống) nhằm nâng cao tính tương thích cho phối ghép BIU đưa địa chỉ, đọc mã lệnh từ nhớ, đọc/ghi liệu với nhớ, cổng vào Nói cách khác BIU chịu trách nhiệm đưa địa bus trao đổi liệu với bus Mã lệnh đọc từ bộ nhớ BIU nạp vào đệm lệnh (còn gọi hàng đợi lệnh) với dung lượng byte, hoạt động theo nguyên tắc FIFO dùng để chứa mã lệnh chờ EU xử lý EU bao gồm đơn vị điều khiển, khối có giải mã lệnh Mã lệnh từ đệm lệnh đưa đến đầu vào giải mã, nơi lệnh giải mã kiểu sinh vi thao tác Các thông tin thu từ đầu giải mã đưa đến mạch tạo xung điều khiển, kết ta thu dãy xung khác kênh điều khiển (tuỳ theo mã lệnh) để điều khiển hoạt động phận bên bên CPU Ngồi ra, EU cịn có khối số học lôgic (Arithmetic and Logic Unit - ALU) dùng để thực thao tác khác với toán hạng lệnh Tóm lại, EU cung cấp thơng tin địa cho BIU để khối đọc lệnh liệu, cịn thân EU giải mã lệnh thực lệnh II CÁC THANH GHI Các ghi đoạn trỏ lệnh CS DS SS ES IP Bộ vi xử lý 8086 chia nhớ cấp cho chương trình máy tính thành đoạn (Segment) theo nội dung chúng lưu trữ, đoạn chứa mã lệnh, đoạn chứa liệu, Để quản lý đoạn nhớ, vi xử lý 8086 sử dụng ghi 16 bít lưu địa bắt đầu đoạn nhớ chúng gọi ghi đoạn (Segment Registers) Có ghi đoạn, gồm: - Thanh ghi đoạn mã CS (Code-Segment) :Trỏ tới đoạn nhớ chứa mã chương trình - Thanh ghi đoạn liệu DS (Data Segment) :Trỏ tới đoạn khai báo liệu Nhóm 6: Nghiên Cứu Tìm Hiểu Về Tập Lệnh Vi Sử Lý 8086 - Thanh ghi đoạn ngăn xếp SS (Stack Segment) :Lưu địa trả từ chương trình hay trình phục vụ ngắt - Thanh ghi đoạn liệu phụ ES (Extra Segment) :Sử dụng liệu khai báo vượt mức cho phép - Thanh ghi trỏ lệnh IP: trỏ lệnh (Instruction Pointer) IP trỏ vào lệnh thực nằm đoạn mã CS Địa đầy đủ lệnh có dạng CS:IP Bộ ghi đa dụng 15 AH AL BH BL CH CL DH DL Trong khối EU có bốn ghi đa 16 bít, gồm AX, BX, CX, DX Mỗi ghi đa dùng cho nhiều mục đích khác nhau, ghi gán chức chun biệt riêng Chính chúng gán tên có ý nghĩa Cụ thể: AX (Accumulator): ghi tích lũy Các kết thao tác thường chứa AX (kết phép nhân, chia) BX (Base): ghi sở, thường dùng để chứa địa sở dãy ô nhớ CX (Count): đếm CX thường dùng để chứa số lần lặp trường hợp lệnh LOOP (lặp) DX (Data): ghi liệu DX tham gia thao tác phép nhân chia số 16 bít DX thường dùng để chứa địa cổng lệnh vào/ liệu Một điều đặc biệt ghi đa sử dụng ghi 16 bít tách thành ghi bít độc lập AX tách thành ghi bít, gồm AH AL, với H bít phần cao, L bít phần thấp Tương tự BX, CX, DX tách thành BH BL, CH CL, DH DL tương ứng Bộ ghi trỏ số SI Nhóm 6: Nghiên Cứu Tìm Hiểu Về Tập Lệnh Vi Sử Lý 8086 DI BP SP Trong vi xử lý 8086 cịn có ba ghi trỏ hai ghi số 16 bít, gồm: BP: trỏ sở (Base Pointer) BP trỏ vào liệu nằm đoạn ngăn xếp SS Địa đầy đủ phần tử đoạn ngăn xếp có dạng SS:BP SP: trỏ ngăn xếp (Stack Pointer) SP trỏ vào đỉnh thời ngăn xếp nằm đoạn ngăn xếp SS Địa đỉnh ngăn xếp có dạng SS:SP SI: số gốc hay nguồn (Source Index) SI vào liệu đoạn liệu DS mà địa cụ thể đầy đủ có dạng DS:SI DI: số đích (Destination Index) DI vào liệu đoạn liệu DS (hoặc ES) mà địa cụ thể đầy đủ có dạng DS:DI (hoặc ES:DI) Riêng lệnh thao tác với liệu kiểu chuỗi cặp ES:DI ứng với địa phần tử thuộc chuỗi đích cịn cặp DS:SI ứng với địa phần tử thuộc chuỗi gốc Thanh ghi cờ FR (flag register) Đây ghi đặc biệt CPU, bít dùng để phản ánh trạng thái định kết phép toán ALU thực trạng thái hoạt động EU Dựa vào cờ này, người lập trình có lệnh thích hợp cho vi xử lý (các lệnh nhảy có điều kiện) Thanh ghi cờ gồm 16 bít người ta dùng hết bít để làm bít cờ Thanh ghi cờ U bít khơng sử dụng C CF (Carry Flag): cờ nhớ CF = có nhớ mượn từ bít có nghĩa lớn MSB (Most Significant Bit) P PF (Parity Flag): cờ chẵn lẻ PF phản ánh tính chẵn lẻ tổng số bít có kết Cờ PF =1 tổng số bít kết lẻ (odd parity) PF =0 tổng số bít kết chẵn (even parity) Ví dụ: Khi thực (00000101 AND 00000101) PF = Nhóm 6: Nghiên Cứu Tìm Hiểu Về Tập Lệnh Vi Sử Lý 8086 A AF (Auxiliary Carry Flag): cờ nhớ phụ có ý nghĩa ta làm việc với số BCD (Binary Coded Decimal) AF = có nhớ mượn từ số BCD thấp (4 bít thấp) sang số BCD cao (4 bít cao) Ví dụ: phép tốn 00001001 + 00000111 = 00010000 lập cờ AF lên - Cờ AF thường dùng phép toán BCD (là số dùng hệ nhị phân bit để biểu diễn số thập phân từ – 9) Z ZF (Zero Flag): cờ rỗng ZF =1 kết = ZF =0 kết = S SF (sign flag): cờ dấu SF = kết âm SF = kết khơng âm O OF (Overflow Flag): cị tràn OF = kết số bù vượt qua giới hạn biểu diễn dành cho Trên bít cờ trạng thái phản ánh trạng thái khác kết sau thao tác đó, bít cờ đầu thuộc byte thấp cờ cờ giống vi xử lý bít 8085 Intel Chúng lập xoá tuỳ theo điều kiện cụ thể sau thao tác ALU Ngoài ra, vi xử lý 8086 cịn có cờ điều khiển sau (các cờ lập xoá lệnh riêng): T TF (Trap Flag): cờ bẫy TF = CPU làm việc chế độ chạy lệnh (chế độ dùng cần tìm lỗi chương trình) I IF (Interrupt Enable Flag): cờ cho phép ngắt IF = CPU cho phép yêu cầu ngắt (che được) IF = CPU cấm yêu cầu ngắt D DF (Direction Flag): cờ hướng DF = CPU làm việc với chuỗi ký tự theo thứ tự từ phải sang trái, giảm địa (vì D cờ lùi) DF = CPU làm việc với chuỗi ký tự theo thứ tự từ trái sang phải, tăng địa III TẬP LỆNH CỦA 8086 Khái niệm lệnh, mã hố lệnh q trình thực lệnh Lệnh vi xử lý ghi ký tự dạng gợi nhớ (mnemonic) để người sử dụng để nhận biết Đối với thân vi xử lý lệnh mã hố dạng số (cịn gọi mã máy) dạng biểu diễn thông tin mà máy hiểu Do lệnh cho dạng mã nên sau nhận lệnh, vi xử lý phải thực việc giải mã lệnh sau thực lênh Một lệnh có độ dài vài byte tuỳ theo thiết kế vi xử lý Số lượng bít n dùng để mã hóa lệnh (opcode) cho biết số lượng tối đa lệnh (2n) có vi xử lý Với byte vi xử lý mã hố tối đa 256 lệnh Trong thực tế việc mã hoá lệnh cho vi xử lý phức tạp bị chi phối nhiều yếu tố khác Đối với vi xử lý 8086 lệnh có độ dài từ đến byte Ta lấy trường hợp lệnh MOV để giải thích cách mã hóa lệnh nói chung 8086 Nhóm 6: Nghiên Cứu Tìm Hiểu Về Tập Lệnh Vi Sử Lý 8086 Lệnh MOV đích, gốc dùng để chuyển liệu ghi ô nhớ Chỉ nguyên với ghi 8086, ta đặt ghi vào vị trí tốn hạng đích tốn hạng gốc ta thấy phải cần tới nhiều mã lệnh khác để mã hố tổ hợp Hình vẽ biểu diễn dạng thức byte dùng để mã hoá lệnh MOV Như để mã hoá lệnh MOV cần byte, bít byte đầu dùng để chứa mã lệnh Đối với lệnh MOV, bít W dùng để byte (W = 0) từ (W = 1) chuyển Trong thao tác chuyển liệu, tốn hạng ln bắt buộc phải ghi Bộ vi xử lý dùng bít (phần REG) để mã hố ghi CPU sau: Bít D dùng để hướng liệu D = liệu đến ghi cho bít REG, D = liệu khỏi ghi cho bít REG bít MOD (chế độ) với bít R/M (thanh ghi/bộ nhớ) tạo bít dùng để chế độ địa cho toán hạng lệnh Bảng cho ta thấy cách mã hoá chế độ địa (cách tìm tốn hạng bít này) Ghi chú: Nhóm 6: Nghiên Cứu Tìm Hiểu Về Tập Lệnh Vi Sử Lý 8086 addr8, addr16 tương ứng với địa 16 bít Các giá trị cho cột 2, 3, (ứng với MOD =00, 01, 10) địa hiệu dụng (EA – Effective address) cộng với DS để tạo địa vật lý (riêng BP phải cộng với SS) Cấu trúc tập lệnh 8086 Một tập lệnh (ínstruction set ), kiến trúc tập lệnh (instruction set architecture – ISA ) phần kiến trúc máy tính liên quan tới việc thực thi chương trình, bao gồm kiểu liệu; lệnh;các ghi; phương pháp định địa chỉ; kiến trúc nhớ; ngắt; bẫy lỗi việc vào\ra với bên Một kiến trúc tập lệnh bao gồm việc đặc tả tập mã thi hành ( opcode ) hay cịn gọi ngơn ngữ máy thi hành loại vi xử lý riêng biệt Một tập lệnh máy tính chia làm nhiều nhóm lệnh với chức thực thao tác khác nhau: lệnh thao tác, lệnh truy cập nhớ, lệnh điều khiển, lệnh đặc quyền, lệnh vectơ ❖ Một lệnh vi xử lý 86 có dạng tổng quát sau : < Mã gợi nhớ> , Chú ý: lệnh khơng có nguồn, khơng có đích khơng có đích nguồn ❖ Một lệnh giải mã dạng mã máy thường có định dạng sau : OP-CODE ADDRESS(ES) OP-CODE phần mã thi hành ADDRESS(ES) 0,1,2 trường địa để xác định địa tốn hạng có lệnh Một tập lệnh máy tính gồm lệnh có định dạng khác nhau, song phần OP-CODE khơng thể thiếu, cịn phần Address có khơng tùy theo số tốn hạng xuất câu lệnh Và số toán hạng xuất câu lệnh tùy theo câu lệnh tùy theo kiến trúc tập lệnh Ví dụ cpu 8086 : Mã lệnh Lệnh NOP Câu lệnh tốn hạng CPU nghỉ chu kỳ máy, định dạng lệnh mã khơng có trường address • Mã_lệnh tốn_hạng_đích Nhóm 6: Nghiên Cứu Tìm Hiểu Về Tập Lệnh Vi Sử Lý 8086 Lệnh INC AX Câu lệnh có tốn hạng Tăng nội dung chứa lên 1, định dạng lệnh mã có trường address • Mã_lệnh tốn_hạng_đích, tốn_hạng_nguồn Lệnh ADD AX, AX=AX+5 Trong định dạng mã có trường address Và máy tính Intel RISC 860, có lệnh với định dạng: • Mã_lệnh tốn_hạng_đích, tốn_hạng_nguồn, kết_quả OR 25, R0, R8 ; OR 25 với R0 lưu kết vào R8 Tập lệnh 8086 Bộ xử lý 8086 có tập lệnh gồm 111 lệnh, chiều dài lệnh từ byte đến vài byte Tập lệnh 8086 hỗ trợ nhóm thao tác a Các lệnh trao đổi liệu Các câu lệnh nhóm trao đổi liệu cho phép trao đổi liệu ghi ô nhớ hay thiết bị vào/ra với ô nhớ ghi Kích cỡ liệu cho phép với câu lệnh byte (8 bít) word (16 bít) Như câu lệnh trao đổi liệu giúp nạp liệu cần thiết cho thao tác tính tốn vi xử lý Ngồi ra, lệnh cho phép lưu kết tính tốn nhớ thiết bị ngoại vi Bảng Các lệnh trao đổi liệu Mã gợi nhớ MOV Chức Di chuyển byte hay wordnăng ghi ô nhớ IN, OUT Đọc, ghi byte hay word cổng ghi LEA Nạp địa hiệu dụng PUSH, POP Nạp vào, lấy word ngăn xếp XCHG Hoán đổi byte hay word ❖ MOV - Chuyển byte hay word Viết lệnh: MOV Đích,Gốc Mơ tả: Đích Gốc Trong tốn hạng đích gốc tìm theo chế độ địa khác Nhóm 6: Nghiên Cứu Tìm Hiểu Về Tập Lệnh Vi Sử Lý 8086 10 phải có độ dài khơng phép đồng thời ô nhớ ghi đoạn Lệnh khơng tác động đến cờ Ví dụ: MOV AL, 74H ; AL 74 MOV CL, BL ; CL BL MOV DL, [SI] ; DL [DS:SI] MOV AL, Table [BX] ; AL [DS:[Table+BX]] ❖ LEA – Nạp địa hiệu dụng vào ghi Viết lệnh: LEA Đích, Gốc Trong đó: + Đích thường ghi: BX, CX, DX, BP, SI, DI + Gốc tên biến đoạn DS rõ lệnh ô nhớ cụ thể Mô tả: Đích Địa lệch Gốc, Đích Địa hiệu dụng Gốc Đây lệnh để tính địa lệch biến địa ô nhớ chọn làm gốc nạp vào ghi chọn Lệnh không tác động đến cờ Ví dụ: LEA DX, MSG : nạp địa lệch biến MSG vào DX LEA CX, [BX] [DI] : nạp vào CX địa hiệu dụng : BX DI ra: EA = BX+DI ❖ IN – Đọc liệu từ cổng ghi ACC Viết lệnh: IN ACC, Port Mô tả: ACC [Port] Trong [Port] liệu đọc từ cổng có địa Port Port địa bít cổng, có giá trị khoảng 00H…FFH Như có khả sau: +Nếu ACC AL liệu bít đưa vào từ cổng Port +Nếu ACC AX liệu 16 bít đưa vào từ cổng Port cổng Port+1 Nhóm 6: Nghiên Cứu Tìm Hiểu Về Tập Lệnh Vi Sử Lý 8086 11 Địa cổng lưu ghi DX Cách địa cổng hoá mềm dẻo Lúc địa cổng nằm dải 0000H FFFFH câu lệnh có dạng: IN ACC, DX Trong DX phải gắn từ trước giá trị ứng với địa cổng Lệnh không tác động đến cờ ❖ OUT – Ghi liệu từ Acc cổng Viết lệnh: OUT Port, Acc Mô tả: Acc → [port] Trong [port] liệu ghi cổng có địa Port Port địa bít cổng, có giá trị khoảng 00H FFH Như ta có khả sau: + Nếu Acc AL liệu bít đưa cổng port + Nếu Acc AX liệu 16 bít đưa cổng port cổng port +1 Có cách khác để biểu diễn địa cổng 16 bít thơng qua ghi DX theo dạng: OUT DX, Acc Trong DX phải gán từ trước giá trị ứng với địa cổng Lệnh không tác động đến cờ ❖ XCHG Dùng để hoán chuyển nội dung hai ghi, ghi nhớ Cú pháp : XCHG Đích, Nguồn Giới hạn: tốn hạng khơng ghi hạng Lệnh không tác động đến cờ Ví dụ: XCHG AX,BX ❖ PUSH Dùng để cất từ ,từ ghi ô nhớ vào đỉnh ngăn xếp Cú pháp: PUSH Nguồn Mô tả : SP = SP -2, Nguồn =>{SP} Giới hạn:thanh ghi 16 bit từ nhớ Lệnh không tác động đến cờ Ví dụ: PUSH BX ❖ POP Nhóm 6: Nghiên Cứu Tìm Hiểu Về Tập Lệnh Vi Sử Lý 8086 12 Dùng để lấy lại từ vào ghi nhớ từ đình ngăn xếp Cú pháp: POP Đích Mơ tả: {SP} => Đích,SP=SP+2 Giới hạn: ghi 16 bit (trừ CS) từ nhớ Lệnh khơng tác động đến cờ Ví dụ: POP BX b Các lệnh tính tốn số học lơ gíc Đây nhóm lệnh thực tính tốn chủ yếu vi xử lý 8086 Bảng Các lệnh số học lơ gíc Mã gợi nhớ NOT Chức Phép Đảo (bù một) byte hay word AND Phép Và byte word OR Phép Hoặc byte word XOR Phép Hoặc loại trừ byte word SHL, SHR ADD, SUB Dịch trái, dịch phải lơgíc byte hay word Số bước CL xác định Dịch trái, dịch phải số học byte hay word Số bước CL xác định Quay trái, quay phải byte hay word Số bước CL xác định Cộng trừ byte word ADC, SBB Cộng trừ byte word có nhớ INC, DEC Tăng, giảm NEG Đảo byte word (bù 2) CMP So sánh hai byte word MUL, DIV Nhân, chia byte word khơng dấu IMUL, IDIV Nhân chia byte word có dấu SAL, SAR ROL, ROR ❖ ADD – Cộng tốn hạng Viết lệnh: ADD Đích, Gốc Nhóm 6: Nghiên Cứu Tìm Hiểu Về Tập Lệnh Vi Sử Lý 8086 13 Mơ tả: Đích Đích + Gốc Trong tốn hạng đích gốc tìm theo chế độ địa khác nhau, phải chứa liệu có độ dài khơng phép đồng thời ô nhớ không ghi đoạn Lệnh thay đổi cờ: AF, CF, PF, SF, ZF Ví dụ: ; AX AX + BX ADD AX, BX ❖ SUB – Trừ tốn hạng Viết lệnh: SUB Đích, Gốc Mơ tả: Đích Đích - Gốc Trong tốn hạng đích gốc tìm theo chế độ địa khác nhau, phải chứa liệu có độ dài không phép đồng thời ô nhớ không ghi đoạn Lệnh thay đổi cờ: AF, CF, PF, SF, ZF Ví dụ: SUB AX, BX ❖ MUL – Nhân số không dấu ; AX AX - BX Viết lệnh: MUL Gốc Trong tốn hạng Gốc số nhân tìm theo chế độ địa khác Mô tả: tuỳ theo độ dài tốn hạng Gốc ta có trường hợp tổ chức phép nhân, toán hạng số nhân nơi chứa kết quả: Nếu Gốc số bít: AL ×Gốc, số bị nhân phải số bít để AL sau nhân: AX tích, Nếu Gốc số 16 bít: AX × Gốc, số bị nhân phải số 16 bít để AX sau nhân: DXAX tích Nếu byte cao (hoặc 16 bít cao) 16 (hoặc 32) bít kết chứa CF=OF=0 Như cờ CF OF cho biết bỏ số kết Nếu cần nhân số bít với số 16 bít, số 16 bít đặt Gốc số bít AL Số bít AL cần phải mở rộng sang AH cách gán AH=0 để làm Nhóm 6: Nghiên Cứu Tìm Hiểu Về Tập Lệnh Vi Sử Lý 8086 14 cho số bị nhân nằm AX Sau việc dùng lệnh MUL Gốc kết có cặp DXAX Lệnh thay đổi cờ: CF, OF Không xác định: AF, PF, SF, ZF Ví dụ: Tính 10 x 30 MOV AL, 10 ; AL 10 MOV BL, 30 ; BL 30 MUL BL ; AX AL x BL = 10 × 30 = 300 ❖ DIV – Chia số khơng có dấu Viết lệnh: DIV Gốc Trong tốn hạng Gốc số chia tìm theo chế độ địa khác Mơ tả: tuỳ theo độ dài tốn hạng gốc ta có trường hợp bố trí phép chia, toán hạng số bị chia nơi lưu kết quả: - - Nếu Gốc số bít: AX / Gốc Số bị chia phải số không dấu 16 bít để AX Kết quả: thương lưu AL phần dư lưu AH Nếu Gốc số 16 bít: DXAX : Gốc Số bị chia phải số khơng dấu 32 bít để cặp ghi DXAX Kết quả: thương lưu AX phần dư lưu DX Nếu Gốc = thương thu lớn FFH FFFFH (tuỳ theo độ dài tốn hạng Gốc) 8086 thực lệnh ngắt INT Không xác định: AF, CF, OF, PF, SF, ZF Ví dụ: Tính 300 : 10 MOV AX, 300 ; AX 10 MOV BL, 10 ; BL 30 DIV BL ; AX : BL, AL 30, AH ❖ CMP – So sánh byte hay word Viết lệnh: CMP Đích, Gốc Mơ tả: Đích – Gốc Trong tốn hạng đích gốc tìm theo chế độ địa khác Nhưng phải chứa liệu có độ dài không phép đồng thời ô nhớ Lệnh tạo cờ, không lưu kết so sánh, sau so sánh tốn Nhóm 6: Nghiên Cứu Tìm Hiểu Về Tập Lệnh Vi Sử Lý 8086 15 hạng không bị thay đổi Lệnh thường dùng để tạo cờ cho lệnh nhảy có điều kiện (nhảy theo cờ) Các cờ theo quan hệ đích gốc so sánh số khơng dấu: CF 0 Đích = Gốc Đích > Gốc Đích < Gốc ZF 0 SF 0 Cập nhật cờ: AF, CF, OF, PF, SF, ZF ❖ AND – Phép toán hạng Viết lệ nh: AND Đích, Nguồn Mơ tả: Đích - Đích, Gốc Trong tốn hạng đích gốc tìm theo chế độ địa khác Nhưng phải chứa liệu độ dài không phép đồng thời ô nhớ không ghi đoạn Phép AND thường dùng để che đi/giữ lại vài bít toán hạng cách nhân logic toán hạng với tốn hạng tức có bít 0/1 chỗ cần che đi/giữ nguyên tương ứng (toán hạng lúc cịn gọi mặt nạ) Xố: CF, OF Cập nhật: PF, SF, ZF, PF có nghĩa tốn hạng bít Khơng xác định: AF Ví dụ: AND AL, BL ; nhân AL với BL theo bít, kết lưu vào AL AND BL, 0FH ; xóa bít cao BL c Các lệnh điều khiển, rẽ nhánh lặp Các câu lệnh thuộc nhóm cho phép thay đổi trật tự thực câu lệnh bên chương trình Bảng Các lệnh rẽ nhánh lặp tiêu biểu Mã gợi nhớ Chức JMP Nhảy không điều kiện JA (JNBE) Nhảy lớn Nhóm 6: Nghiên Cứu Tìm Hiểu Về Tập Lệnh Vi Sử Lý 8086 16 JAE (JNB) Nhảy lớn JB (JNAE) Nhảy bé JBE (JNA) Nhảy bé JE (JZ) Nhảy nêu JC, JNC Nhảy cờ nhớ đặt, xóa JO, JNO Nhảy cờ tràn đặt, xóa JS, JNS Nhảy cờ dấu đặt, xóa LOOP Lặp không điều kiện, số lần lặp CX xác định Lặp (cờ không) số lần lặp LOOPE (LOOPZ) CX xác định LOOPNE (LOOPNZ) Lặp khơng (cờ khơng xóa) số lần lặp CX xác định CALL, RET Gọi hàm, trở từ hàm INT Gọi ngắt mềm IRET Quay trở từ đoạn chương trình ngắt ❖ JMP - Nhảy (vơ điều kiện) đến đích Lệnh khiến cho vi xử lý 8086 bắt đầu thực lệnh địa định lệnh Lệnh phân biệt nhảy xa nhảy gần theo vị trí câu lệnh Tuỳ thuộc vào độ dài bước nhảy phân biệt kiểu lệnh nhảy ngắn, nhảy gần nhảy xa với độ dài lệnh khác Lệnh nhảy ngắn lệnh nhảy tương đối đến nhãn shortlabel Nơi đến phải nằm phạm vi từ -128 đến +127 so với vị trí lệnh nhảy Tốn hạng nguồn lệnh byte độ dời để cộng thêm vào ghi IP Byte độ dời mở rộng dấu trước cộng vào ghi IP - Ví dụ : JMP SHORT 18h JMP 0F008h JMP DWORD PTR [3000h] Lệnh nhảy gần tương tự lệnh nhảy ngắn, khoảng nhảy phải nằm phạm vi từ -32768 đến +32767 so với vị trí lệnh nhảy Lệnh nhảy xa lệnh nhảy đến vị trí biểu diễn địa đầy đủ ô nhớ theo dạng địa đoạn : địa lệch Lệnh không tác động đến cờ ❖ Các lệnh nhảy có điều kiện Nhóm 6: Nghiên Cứu Tìm Hiểu Về Tập Lệnh Vi Sử Lý 8086 17 • JE or JZ, JNE or JNZ, JG, JGE, JL, JLE (dùng cho số có dấu) JA, JB, JAE, JBE (dùng cho số khơng có dấu)… • Nhảy phụ thuộc vào cờ • Là lệnh nhảy ngắn Ví dụ: Nhan1: XOR BX ,BX Nhan2:MOV AX, CMP AL,10H JNE Nhan1 JE Nhan2 Thực hiện: IP = IP + độ dịch ❖ LOOP -Lặp lại đoạn chương trình nhãn CX=0 Viết lệnh: LOOP NHAN Lệnh dùng để lặp lại đoạn chương trình (gồm lệnh nằm khoảng từ nhãn NHAN đến hết lệnh LOOP NHAN) số lần lặp CX=0 Điều có nghĩa trước vào vịng lặp số lần lặp mong muốn phải nạp vào ghi CX sau lần thực lệnh LOOP NHAN đồng thời CX tự động giảm CX CX-1) Lệnh khơng tác động đến cờ Ví dụ: MOX AL,AL MOV CX,16 Lap: INC AL LOOP Lap Lặp đến CX=0 ❖ CALL – Gọi chương trình Có loại: CALL gần CALL xa • CALL gần (near call): tương tự nhảy gần Gọi chương trình đoạn mã Ví dụ: Tong PROC NEAR ADD AX, BX ADD AX,CX RET Tong ENDP Nhóm 6: Nghiên Cứu Tìm Hiểu Về Tập Lệnh Vi Sử Lý 8086 18 … CALL Tong Cất IP vào ngăn xếp IP=IP+dịch chuyển RET: lấy IP từ ngăn xếp • CALL xa (far call):tương tự nhảy xa Gọi chương trình ngồi đoạn mã Ví dụ: Tong PROC FAR ADD AX,BX ADD AX,CX RET Tong ENDP CALL Tong Cất CS vào ngăn xếp , cất IP vào ngăn xếp IP=IP Tong, CS=CS Tổng RET:lấy IP từ ngăn xếp, lấy CS từ ngăn xếp ❖ Lệnh ngắt INT IRET • INT gọi chương trình phục vụ ngắt (CTCPVN) • Bảng vector ngắt: Kbytes 00000H đến 009FF H - 256 vector ngắt - vector bytes, chứa IP CS CTCPVN - 32 vector đầu dành riêng cho Intel - 224 vector sau danh cho người dùng • Cú pháp: INT Number Ví dụ: INT 21H gọi CTCPVN DOS • Thực INT: - Cất ghi cờ vào ngăn xếp - IF=0 (cấm ngắt khác tác động ),TF=0 (chạy suốt) - Cất CS vào ngăn xếp - Cất IP vào ngăn xếp - IP=[N*4], CS=[N*4*2] • Gặp IRET: - Lấy IP từ ngăn xếp - Lấy CS từ ngăn xếp - Lấy ghi từ ngăn xếp Nhóm 6: Nghiên Cứu Tìm Hiểu Về Tập Lệnh Vi Sử Lý 8086 ... Bộ vi sử lý INTEL 8086 I CẤU TRÚC BÊN TRONG CỦA INTEl 8086 Intel 8086 vi xử lý 16 bít Intel vi xử lý hỗ trợ tập lệnh x86 Vi xử lý sử dụng nhiều lĩnh vực khác nhau, máy IBM PC/XT Các vi xử lý. .. trường hợp lệnh MOV để giải thích cách mã hóa lệnh nói chung 8086 Nhóm 6: Nghiên Cứu Tìm Hiểu Về Tập Lệnh Vi Sử Lý 8086 Lệnh MOV đích, gốc dùng để chuyển liệu ghi ô nhớ Chỉ nguyên với ghi 8086, ta... EU (Execution Unit) Vi? ??c chia CPU thành phần làm vi? ??c đồng thời có Nhóm 6: Nghiên Cứu Tìm Hiểu Về Tập Lệnh Vi Sử Lý 8086 liên hệ với qua đệm lệnh làm tăng đáng kể tốc độ xử lý CPU Các bus bên