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 31 - 35)

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

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.a ADD-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ập nhật: AF, CF, PF, SF, ZF Ví dụ: ADD AX, BX ; AX  AX + BX 3.3.2.b SUB-Trừ 2 toán hạng Viết lệnh: SUB Đí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ập nhật: AF, CF, PF, SF, ZF Ví dụ:

31

3.3.2.c MUL - 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, toán hạng số nhân và nơi chứa 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, 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 x 30 = 300

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

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, toán hạng

số bị chia và nơi lưu 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. Kết quả: thương lưu trong AL và phần dư lưu trong AH.

 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. Kết quả: thương lưu trong AX và phần dư lưu trong DX.

 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, ZF.

Ví dụ: Tính 300 : 10

MOV AX, 300 ; AX  10

MOV BL, 10 ; BL  30

DIV BL ; AX : BL, AL  30, AH  0

3.3.2.e CMP- 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 SF Đích = Gốc 0 1 0 Đích > Gốc 0 0 0 Đích < Gốc 1 0 1 Cập nhật: AF, CF, OF, PF, SF, ZF. 3.3.2.f 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, ZF, 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 ; nhân AL với BL theo từng bít, kết quả lưu vào AL. AND BL, 0FH ; xóa 4 bít cao của BL.

33

Một phần của tài liệu BÀI GIẢNG KỸ THUẬT VI XỬ LÝ (Trang 31 - 35)