Cho đoạn mã Assembler sau:MOV A, #0FFHADD A, #1JNZ SKIPADDC A, #02HSJMP EXITSKIP: ADDC A, #01HEXIT: ENDKết quả của thanh ghi A là:
Trả lời:
Đáp án đúng: C
Đoạn mã Assembler thực hiện các phép toán cộng trên thanh ghi A.
1. **MOV A, #0FFH**: Gán giá trị 0FFH (255 trong hệ thập phân) vào thanh ghi A.
2. **ADD A, #1**: Cộng giá trị 1 vào thanh ghi A. A = 0FFH + 1 = 100H. Vì A là thanh ghi 8-bit nên chỉ giữ lại 00H, cờ nhớ (Carry flag) sẽ được bật (CF = 1).
3. **JNZ SKIP**: Nhảy đến nhãn SKIP nếu cờ Z (Zero flag) khác 0. Vì A = 00H, nên cờ Z được bật (ZF = 1). Do đó, điều kiện nhảy không thỏa mãn và chương trình tiếp tục thực hiện lệnh kế tiếp.
4. **ADDC A, #02H**: Cộng giá trị 02H và cờ nhớ (CF) vào A. Vì CF = 1, nên A = 00H + 02H + 1 = 03H.
5. **SJMP EXIT**: Nhảy vô điều kiện đến nhãn EXIT.
6. **SKIP: ADDC A, #01H**: Nhãn này bị bỏ qua vì đã nhảy đến EXIT.
7. **EXIT: END**: Kết thúc chương trình. Giá trị cuối cùng của A là 03H.
Vậy đáp án đúng là B. 03H