tailieunhanh - LẬP TRÌNH HỆ THỐNG - CẤU TRÚC TRƯƠNG TRÌNH DẠNG EXE - 2

Cấu trúc rẽ nhánh – Vòng lặp JMP ; (near jump). Kiểu này nhảy tùy ý trong phạm vi segment. Ví dụ: JMP Calculate JMP FAR PTR ; (far jump). Kiểu này nhảy đến bất kì chỗ nào. Ví dụ: JMP FAR PTR Calculate JMP ; (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ỏ. | 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 . 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 CMP hay TEST. Khi sử dụng lệnh nhảy có điều kiện sau khi thực hiện phép so sánh Ths. Nguyễn Hứa Duy Khang Ks. Trần Hữu Danh 10 Bài 3 - Cấu trúc rẽ nhánh - Vòng lặp phải đặc biệt lưu ý toán hạng trong phép so sánh là số có dấu signed hay không có dấu unsigned để lựa chọn lệnh cho phù hợp. Ví dụ MOV AH AL AL hiện bằng 128 CMP AH 1 JGE Greater AH 1 nhưng không nhảy Greater Ví dụ nếu AL là số nguyên không dấu thì đoạn chương trình ở trên phải sửa lại như sau MOV AH AL CMP AH 1 JAE Greater Greater Một số lệnh nhảy có điều kiện thường dùng Lệnh Ý Nghĩa Điều Kiện JB JNAE Nhảy nếu nhỏ hơn Jump if Below Nhảy nếu không lớn hơn hoặc bằng CF 1 JAE JNB Nhảy nếu lớn hơn hoặc bằng Jump if Above or Equal Nhảy nếu không nhỏ hơn CF 0 JBE JNA Nhảy nếu nhỏ hơn hoặc bằng Jump if Below or Equal Nhảy nếu không lớn hơn CF 1 và ZF 1 JA JNBE

TỪ KHÓA LIÊN QUAN