– 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