Các lệnh tính toán số học và lô gíc

Một phần của tài liệu Bài giảng kỹ thuật vi xử lý (Trang 35 - 38)

3. TẬP LỆNH CỦA 8086

3.3.2Các lệnh tính toán số học và lô gíc

Đây là các nhóm lệnh thực hiện các tính toán chủ yếu của vi xử lý 8086.

Bảng 2-3. Các lệnh số học và lô gíc

Mã gợi nhớ Chức năng

NOT Đảo (bù một) byte hay word

AND Phép và byte hoặc word

OR Phép hoặc byte hoặc word

XOR Phép hoặc loại trừ byte hoặc word

SHL, SHR Dịch trái, dịch phải lôgíc byte hay word. Số bước 1 hoặc do CL xác định

SAL, SAR Dịch trái, dịch phải số học byte hay word. Số bước 1 hoặc do CL xác định

ROL, ROR Quay trái, quay phải byte hay word. Số bước 1 hoặc do CL xác định

ADD, SUB Cộng trừ byte hoặc word

ADC, SBB Cộng trừ byte hoặc word có nhớ

INC, DEC Tăng, giảm

NEG Đảo byte hoặc word (bù 2)

CMP So sánh hai byte hoặc word

MUL, DIV Nhân, chia byte hoặc word không dấu IMUL, IDIV Nhân chia byte hoặc word có dấu

3.3.2.aADD-Cộng 2 toán hạng Viết lệnh: ADD Đích, Gốc. Mô tả: Đích  Đích + Gốc.

Trong đó toán hạng đích và gốc có thể tìm được theo các chế độ địa chỉ khác nhau. Nhưng phải chứa dữ liệu có cùng độ dài và không được phép đồng thời là 2 ô nhó và cũng không được là thanh ghi đoạn. Có thể tham khảo các ví dụ của lệnh ADC.

Cập nhật: AF, CF, PF, SF, ZP

3.3.2.bMUL - Nhân số không dấu Viết lệnh: MUL Gốc

Trong đó toán hạng Gốc là số nhân và có thể tìm được theo các chế độ địa chỉ khác nhau.

Mô tả: tuỳ theo độ dài của toán hạng Gốc ta có 2 trường hợp tổ chức phép nhân, chỗ để ngầm định cho số bị nhân và kết quả:

Nếu Gốc là số 8 bít: ALGốc,

số bị nhân phải là số 8 bít để trong AL. sau khi nhân: AX  tích,

Nếu Gốc là số 16 bít: AXGốc,

số bị nhân phải là số 16 bít để trong AX. sau khi nhân: DXAX  tích.

Nếu byte cao (hoặc 16 bít cao) của 16 (hoặc 32) bít kết quả chứa 0 thì CF=OF=0 Như vậy các cờ CF và OF cho biết có thể bỏ đi bao nhiêu số 0 trong kết quả. Ví dụ: Nếu cần nhân một số 8 bít với một số 16 bít, số 16 bít đặt tại Gốc và số 8 bít ở AL. Số 8 bít này ở AL cần phải được mở rộng sang AH bằng cách gán AH=0 để làm cho số bị nhân nằm trong AX. Sau cùng chỉ việc dùng lệnh MUL Gốc và kết quả có trong cặp DXAX.

Cập nhật: CF, OF.

Không xác định: AF, PF, SF, ZP.

3.3.2.c DIV – Chia 2 số không có dấu Viết lệnh: DIV Gốc

CHƯƠNG 2. BÔ XỬ LÍ INTEL 8086/8088 (adsbygoogle = window.adsbygoogle || []).push({});

Trong đó toán hạng Gốc là số chia và có thể tìm được theo các chế độ địa chỉ khác nhau.

Mô tả: tuỳ theo độ dài của toán hạng gốc ta có 2 trường hợp bố trí phép chia. Các chỗ để ngầm định cho số bị chia và kết quả:

 Nếu Gốc là số 8 bít: AX/Gốc. Số bị chia phải là số không dấu 16 bít để trong AX.

 Nếu Gốc là số 16 bít: DXAX/Gốc. Số bị chia phải là số không dấu 32 bít để trong cặp thanh ghi DXAX.

 Nếu thương không phải là số nguyên nó được làm tròn theo số nguyên sát đuôi.

 Nếu Gốc = 0 hoặc thương thu được lớn hơn FFH hoặc FFFFH (tuỳ theo độ dài của toán hạng Gốc) thì 8086 thực hiện lệnh ngắt INT 0.

Không xác định: AF, CF, OF, PF, SF, ZP.

3.3.2.dCMP- So sánh 2 byte hay 2 word Viết lệnh: CMP Đích, Gốc.

Mô tả: Đích – Gốc.

Trong đó toán hạng đích và gốc có thể tìm được theo các chế độ địa chỉ khác nhau. Nhưng phải chứa dữ liệu có cùng độ dài và không được phép đồng thời là 2 ô nhớ.

Lệnh này chỉ tạo các cờ, không lưu kết quả so sánh, sau khi so sánh các toán hạng không bị thay đổi. Lệnh này thường được dùng để tạo cờ cho các lệnh nhảy có điều kiện (nhảy theo cờ).

Các cờ chính theo quan hệ đích và gốc khi so sánh 2 số không dấu: CF ZF

Đích = Gốc 0 1 Đích > Gốc 0 1 Đích > Gốc 1 0

Cập nhật: AF, CF, OF, PF, SF, ZP.

3.3.2.e AND - Phép và 2 toán hạng Viết lệnh: AND Đích, Gốc

Mô tả: Đích - Đích, Gốc.

Trong đó toán hạng đích và gốc có thể tìm được theo các chế độ địa chỉ khác nhau. Nhưng phải chứa dữ liệu cùng độ dài và không được phép đồng thời là 2 ô nhớ và cũng không được là thanh ghi đoạn. Phép AND thường dùng để che đi/giữ lại một vài bít nào

đó của một toán hạng bằng cách nhân logic toán hạng đó với toán hạng tức là có các bít 0/1 ở các chỗ cần che đi/giữ nguyên tương ứng (toán hạng lúc này còn được gọi là mặt nạ).

Xoá: CF, OF.

Cập nhật: PF, SF, ZP, PF chỉ có nghĩa khi toán hạng là 8 bít.

Không xác định: AF. Ví dụ:

AND AL, BL ;AL, AL BL theo từng bít. AND BL, 0FH ;che 4 bít cao của BL.

Một phần của tài liệu Bài giảng kỹ thuật vi xử lý (Trang 35 - 38)