Giả sử AX=35F7H, BX=126EH, sau lệnh CMP AH,BL lệnh nào sau đây chuyển điều khiển chương trình đến nhãn N?
Đáp án đúng: B
Đầu tiên, ta cần xác định giá trị của AH và BL trước khi thực hiện lệnh CMP. AX = 35F7H, vậy AH là byte cao của AX, tức là AH = 35H. BX = 126EH, vậy BL là byte thấp của BX, tức là BL = 6EH.
Lệnh CMP AH, BL thực hiện phép so sánh AH và BL (35H và 6EH). Về bản chất, nó thực hiện phép trừ AH - BL, nhưng không lưu kết quả vào thanh ghi nào. Thay vào đó, nó chỉ cập nhật các cờ trạng thái (status flags) trong thanh ghi cờ, bao gồm cờ dấu (SF), cờ tràn (OF), cờ không (ZF), cờ nhớ (CF), v.v.
Trong trường hợp này, 35H - 6EH sẽ cho một số âm (vì 35H < 6EH). Do đó, cờ nhớ CF sẽ được đặt (CF = 1), và cờ dấu SF cũng có thể được đặt (SF = 1, tùy thuộc vào kết quả cụ thể).
Bây giờ, xét các lệnh nhảy có điều kiện:
- JG N (Jump if Greater): Nhảy đến N nếu AH > BL (có dấu). Điều kiện này không đúng vì 35H < 6EH.
- JL N (Jump if Less): Nhảy đến N nếu AH < BL (có dấu). Điều kiện này đúng vì 35H < 6EH.
- JE N (Jump if Equal): Nhảy đến N nếu AH = BL. Điều kiện này không đúng vì 35H ≠ 6EH.
- JA N (Jump if Above): Nhảy đến N nếu AH > BL (không dấu). Điều kiện này không đúng vì 35H < 6EH.
Vậy, đáp án đúng là JL N.





