Hai thanh ghi được sử dụng, vùng R/M là vùng REG

Một phần của tài liệu Cấu trúc vi xử lý 16bit 8086/88 (Trang 35 - 40)

DI cho các lệnh chuỗi kí tự ES ES, SS hoặc CS

11 Hai thanh ghi được sử dụng, vùng R/M là vùng REG

Bảng 3-11. Bảng liệt kê giá trị của MOD.

Vùng R/M (register/memory) :

Nếu vùng MOD = 11 thì vùng R/M là thanh ghi nguồn dùng các mã của vùng REG, ngược lại thì: R/M Kiểu 000 DS:[BX+SI+d] 001 DS:[BX+DI+d] 010 SS:[BP+SI+d] 011 SS:[BP+DI+d] 100 DS:[SI+d] 101 DS:[DI+d] 110 DS:[BP+d] 111 DS:[BX+d]

Bảng 3-12. Bảng liệt kê giá trị của R/M.

2. Tổng quan về tập lệnh vi xử lý 8086/88:

Trong phần này chúng ta sẽ khảo sát các lệnh của vi xử lý và sử dụng các toán hạng hay chỉ dẫn assembler dựa trên trình biên dịch hợp ngữ của Microsoft (MASM 6.0).

Vi xử lý 8086 có 90 lệnh cơ bản (không kể các lệnh biến đổi về cách định địa chỉ), được chia làm 6 nhóm lệnh như sau: nhóm lệnh chuyển dữ 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 và nhóm lệnh điều khiển vi xử lý.

Nhóm lệnh chuyển dữ liệu: gồm có 14 lệnh 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:

AAS, DAS, MUL, IMUL, AAM, DIV, IDIV, AAD, CBW, CWD.

Nhóm lệnh LOGIC: gồm có 12 lệnh 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ó 6 lệnh 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 như sau:

CLR, CMC, STC, CLD, STD, CLI, STI, HLT, WAIT, ESC, LOCK, NOP. Mã lệnh bao gồm những thông tin như mã lệnh, địa chỉ, dữ liệu.

Số lượng chu kỳ xung clock cần để thực hiện lệnh phụ thuộc vào cách định địa chỉ. Với hệ thống 8086/88 thì quá trình tính toán địa chỉ thật (20bit) cần nhiều xung clock – với những vi xử lý từ 80286 trở về sau thì không còn tính toán địa chỉ nên không phải mất nhiều chu kỳ xung clock để tính địa chỉ.

Ví dụ 13: Một số lệnh và số chu kỳ thực hiện:

Cách định địa chỉ Lệnh minh họa Số chu kỳ Gián tiếp thanh ghi MOV CL,[DI] 5

Trực tiếp MOV CL,DATA 3 Chỉ số nền MOV BL,[BP+DI] 7 Chỉ số nền (có độ dời) MOV CX,[BP+DI+DATA] 11 Tiếp đầu ngữ viết

chồng đoạn

MOV AL,ES:DATA EA+2

Bảng 3-13. Bảng liệt kê chu kỳ thực hiện của các lệnh.

3. Khảo sát tập lệnh vi xử lý 8086/88:

Sau khi đã khảo sát lệnh tóm tắt đã trình bày ở trên thì việc tính toán ra mã lệnh do trình biên dịch assembler thực hiện, người lập trình chỉ cần biết có bao nhiêu lệnh và chức năng xử lý dữ liệu của từng lệnh để viết trình.

Do có rất nhiều lệnh và mỗi lệnh đều có ví dụ minh hoạ nên phần này được trình bày ở phần phụ lục.

Một phần của tài liệu Cấu trúc vi xử lý 16bit 8086/88 (Trang 35 - 40)

Tải bản đầy đủ (PDF)

(42 trang)