Cho đoạn mã Assembler sau:
ORG 0000H
MOV R1, #2BH
CJNE R1, #2BH, NHAN
MOV A, #4BH
SJMP KETTHUC NHAN: MOV A, #0B4H
KETTHUC: END.
Kết quả của thanh ghi A là:
Trả lời:
Đáp án đúng: A
Đoạn mã Assembler thực hiện các bước sau:
1. **ORG 0000H**: Khai báo chương trình bắt đầu từ địa chỉ 0000H.
2. **MOV R1, #2BH**: Gán giá trị 2BH (43 theo hệ thập phân) vào thanh ghi R1.
3. **CJNE R1, #2BH, NHAN**: So sánh giá trị của thanh ghi R1 với giá trị 2BH. Nếu R1 khác 2BH, thì nhảy đến nhãn NHAN. Trong trường hợp này, R1 đang chứa giá trị 2BH, do đó điều kiện so sánh không thỏa mãn (R1 = 2BH), và chương trình **không** nhảy đến nhãn NHAN mà tiếp tục thực hiện lệnh kế tiếp.
4. **MOV A, #4BH**: Gán giá trị 4BH vào thanh ghi A. Do điều kiện CJNE không thỏa mãn nên lệnh này được thực hiện.
5. **SJMP KETTHUC**: Nhảy vô điều kiện đến nhãn KETTHUC.
6. **NHAN: MOV A, #0B4H**: Nhãn NHAN và lệnh gán giá trị 0B4H cho thanh ghi A. Vì chương trình không nhảy đến nhãn này (do CJNE không thỏa mãn), lệnh này không được thực hiện.
7. **KETTHUC: END**: Nhãn KETTHUC và kết thúc chương trình.
Vì vậy, giá trị cuối cùng của thanh ghi A là 4BH.





