3. TẬP LỆNH CỦA 8086
3.3.3 Điều khiển, rẽ nhánh và lặp
Các câu lệnh thuộc nhóm này cho phép thay đổi trật tự thực hiện các câu lệnh bên trong chương trình.
Bảng 2-4. Các lệnh rẽ nhánh và lặp tiêu biểu
Mã gợi nhớ Chức năng
JMP Nhảy không điều kiện
JA (JNBE) Nhảy nếu lớn hơn
JAE (JNB) Nhảy nếu lớn hơn hoặc bằng JB (JNAE) Nhảy nếu bé hơn
JBE (JNA) Nhảy nếu bé hơn hoặc bằng
JE (JZ) Nhảy nêu bằng
JC, JNC Nhảy nếu cờ nhớ đặt, xóa JO, JNO Nhảy nếu cờ tràn đặt, xóa JS, JNS Nhảy nếu cờ dấu đặt, xóa
LOOP Lặp không điều kiện, số lần lặp do CX xác định LOOPE (LOOPZ) Lặp nếu bằng (cờ không) hoặc số lần lặp do CX
xác định
LOOPNE (LOOPNZ) Lặp nếu không bằng (cờ không xóa) hoặc số lần lặp do CX xác định
CALL, RET Gọi hàm, trở về từ hàm con
INT Ngắt mềm
CHƯƠNG 2. BÔ XỬ LÍ INTEL 8086/8088
3.3.3.aJMP - Nhảy (vô điều kiện) đến một đích nào đó
Lệnh này khiến cho bộ vi xử lý 8086 bắt đầu thực hiện một lệnh mới tại địa chỉ được mô tả trong lệnh. Lệnh này phân biệt nhảy xa và nhảy gần theo vị trí của câu lệnh mới. Tuỳ thuộc vào độ dài của bước nhảy chúng ta phân biệt các kiểu lệnh nhảy gần và nhảy xa với độ dài lệnh khác nhau. Lệnh nhảy đến nhãn ngắn shortlabel là lệnh nhảy tương đối. Nơi đến phải nằm trong phạm vi từ -128 đến +127 so với vị trí của lệnh nhảy. Toán hạng nguồn trong lệnh chỉ là byte độ dời để cộng thêm vào thanh ghi IP. Byte độ dời này được mở rộng dấu trước khi cộng vào thanh ghi IP.
- Ví dụ :
JMP SHORT 18h JMP 0F008h
JMP DWORD PTR [3000h] Lệnh này không tác động đến các cờ.
3.3.3.bLOOP -Lặp lại đoạn chương trình do nhãn chỉ ra cho đến khi CX=0 Viết lệnh: LOOP NHAN
Lệnh này dùng để lặp lại đoạn chương trình (gồm các lệnh nằm trong khoảng từ nhãn NHAN đến hết lệnh LOOP NHAN) cho đến khi số lần lặp CX=0. Điều này có nghĩa là trước khi vào vòng lặp số lần lặp mong muốn phải được nạp vào thanh ghi CX và sau mỗi lần thực hiện lệnh LOOP NHAN thì đồng thời CX tự động giảm đi một (CX CX-1).
Lệnh này không tác động đến các cờ.