– CẤU TRÚC RẼ NHÁNH – VÒNG LẶP • JMP <NHÃN> ; (NEAR JUMP)....

Bài 3 – Cấu trúc rẽ nhánh – Vòng lặp

• JMP <nhãn> ; (near jump). Kiểu này nhảy tùy ý trong phạm vi segment.

Ví dụ: JMP Calculate

• JMP FAR PTR <nhãn> ; (far jump). Kiểu này nhảy đến bất kì chỗ nào.

Ví dụ: JMP FAR PTR Calculate

• JMP <con trỏ 2 byte> ; (near indirect jump). Khi thực hiện, thanh ghi PC sẽ

được gán bằng giá trị lưu tại địa chỉ này. Có thể kết hợp

dùng với định vị chỉ số.

Ví dụ:

myPointer DW Prepare, Calculate, Check, Output

...

MOV BX, 2 ; chỉ số trong mảng con trỏ

SHL BX, 1 ; nhân đôi

JMP myPointer[BX]

Prepare:

; công việc 0

Calculate: ; công việc 1

Check:

; công việc 2 – nơi cần nhảy đến

Output:

; công việc 3

• JMP <con trỏ 4 byte> ; (far indirect jump). Tương tự trường hợp trên, nhưng

con trỏ gồm cả segment và offset. Chỉ khác ở khai báo

con trỏ

• JMP <thanh ghi 2 byte> ; (indirect jump via regs). Nhảy đến địa chỉ lưu trong

thanh ghi AX.

Ví dụ: MOV AX, offset Calculate

JMP AX ; PC ← AX

2.4. Lệnh nhảy có điều kiện

Cú pháp: J<điềukiện> <Label>

Các lệnh nhảy có điều kiện bắt

đầu bằng chữ J sau đó là các chữ cái biểu thị

điều kiện (ví dụ JGE: Jump if Greater than or Equal, nhảy nếu lớn hơn hay bằng), tiếp

sau là một tên nhãn.

Điều kiện để lệnh nhảy xem xét khi thi hành là giá trị các cờ được tạo ra từ lệnh