Cho đoạn mã Assembler sau:
ORG 0000H
MOV R1, #30H
CJNE R1, #30, NHAN
MOV A, #45H
SJMP KETTHUC
NHAN: MOV A, #54H
KETTHUC: END.
Kết quả của thanh ghi A là:
Trả lời:
Đáp án đúng: A
Đoạn mã Assembler này thực hiện các bước sau:
1. `ORG 0000H`: Khởi tạo chương trình bắt đầu từ địa chỉ 0000H.
2. `MOV R1, #30H`: Gán giá trị 30H vào thanh ghi R1.
3. `CJNE R1, #30, NHAN`: So sánh giá trị của R1 với 30H. Nếu R1 khác 30H, chương trình sẽ nhảy đến nhãn NHAN. Trong trường hợp này, R1 đang chứa giá trị 30H, vì vậy điều kiện so sánh là sai (R1 bằng 30H).
4. Vì điều kiện so sánh sai, chương trình sẽ không nhảy đến nhãn NHAN mà tiếp tục thực hiện lệnh tiếp theo.
5. `MOV A, #45H`: Gán giá trị 45H vào thanh ghi A.
6. `SJMP KETTHUC`: Nhảy vô điều kiện đến nhãn KETTHUC.
7. `NHAN: MOV A, #54H`: (Nhãn này sẽ không được thực thi vì chương trình không nhảy đến đây).
8. `KETTHUC: END`: Kết thúc chương trình.
Như vậy, thanh ghi A sẽ nhận giá trị 45H trước khi chương trình nhảy đến KETTHUC và kết thúc. Giá trị này không bị thay đổi bởi nhãn NHAN.
Vậy, kết quả của thanh ghi A là 45H.





