Nhóm lệnh rẽ nhánh (nhảy), lặp

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

DIV nguồn (Unsigned Divide)

2.3.5. Nhóm lệnh rẽ nhánh (nhảy), lặp

Việc sử dụng nhóm các lệnh nhảy có thể làm thay đổi tính tuần tự của các câu lệnh hợp ngữ.

Lệnh nhảy không điều kiện

JMP Nhãn (Uncondition Jump to Specified Destination) Nhảy (vơ điều kiện) đến đích Nhãn

Lệnh mới bắt đầu tại địa chỉ ứng với nhãn 'Nhãn'. Lệnh Jmp có thể nhảy lên (về phía địa chỉ thấp) hoặc nhảy xuống (về phía địa chỉ cao) và có thể nhảy xa được tối đa 1/2 đoạn (64Kbyte)

Lệnh này khơng tác động đến các cờ.

Lệnh nhảy có điều kiện (nhảy khi thoả mãn một số điều kiện)

Toán hạng CF ZF

đích = gốc 0 1 đích > gốc 0 0 đích < gốc 1 0

Nhắc lại một số từ tiếng Anh

A: Above (trên) Z: Zero (không) S: Signed

B: Below (dưới) G: Greater (lớn hơn) PO: Parity Old N: Not (phủ định – không) L: Less (nhỏ hơn) PE: Parity Even

E: Equal (bằng) P: Parity C: Carry (nhớ)

O: Overflow

JA/JNBE (CF+ZF = 0, so sánh không dấu) JAE/JNB/JNC (CF = 0, so sánh không dấu) JB/JC/JNAE (CF = 1, so sánh không dấu) JCXZ (CX = 0, không so sánh) JE/JZ (ZF = 1, so sánh không dấu )

JG/JNLE ((SF⊕OF)+ZF = 0, so sánh có dấu ) JGE/JNL ((SF⊕OF) = 0, so sánh có dấu ) JL/JNGE ((SF⊕OF) = 1, so sánh có dấu ) JLE/JNG ((SF⊕OF)+ZF = 1, so sánh có dấu ) JNE/JNZ (ZF = 0, so sánh khơng dấu )

JNO (OF = 0) JNP/JPO (PF = 0) JNS (SF = 0) JO (OF = 1) JP/JPE (PE = 1) JS (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 (Jump to Specified Label if CX<>0 after autodecrement)

Lặp lại đoạn chương trình do NHAN chỉ ra cho đến khi CX=0. Lệnh này dùng để thực hiện lặp lại đoạn chương trình trong khoảng từ NHAN đến hết lệnh LOOP NHAN cho đến khi số lần lặp CX=0. Số lần lặp CX phải được nạp sẵn từ trước. Sau mỗi lần thực hiện lệnh LOOP NHAN thì CX tự động giảm 1 (CX <= CX-1).

Lệnh này không tác động đến các cờ.

LOOPE/LOOPZ NHAN (Loop while CX<>0 and ZF=1)

Lệnh thực hiện lặp đoạn chương trình do NHAN chỉ ra cho đến khi CX=0 hoặc ZF=0. Số lần lặp CX phải được nạp từ trước. Sau mỗi lần lặp thì CX tự động giảm 1 (CX <= CX- 1).

Lệnh này không tác động đến các cờ.

LOOPNE/LOOPNZ NHAN (Loop while CX<>0 and ZF=0)

Lệnh thực hiện lặp đoạn chương trình do NHAN chỉ ra cho đến khi CX=0 hoặc ZF=1. Số lần lặp CX phải được nạp từ trước. Sau mỗi lần lặp thì CX tự động giảm 1 (CX <= CX- 1).

Lệnh này không tác động đến các cờ.

Thực hiện lặp lại lệnh đứng sau đó cho đến khi CX=0. Đây là ‘tiếp đầu ngữ’ dùng để viết trước các lệnh thao tác với chuỗi mà ta muốn lặp lại một số lần. Số lần lặp CX phải được nạp từ trước. Sau mỗi lần lặp thì CX tự động giảm 1 (CX <= CX-1).

REPE/REPZ (Repeat string instruction until CX=0 or ZF=0)

Lặp lại lệnh viết sau đó cho đến khi CX=0 hoặc ZF=0

REPNE/REPNZ (Repeat string instruction until CX=0 or ZF=1)

Lặp lại lệnh viết sau đó cho đến khi CX=0 hoặc ZF=1

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

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

(116 trang)
w