Cho đoạn mã Assembler sau:
ORG 0000H
MOV R1, #10
MOV A, #20
LAP: INC A
DJNZ R1, LAP
END.
Kết quả của thanh ghi A là:
Trả lời:
Đáp án đúng: C
Đoạn mã Assembler thực hiện như sau:
1. **ORG 0000H**: Khai báo chương trình bắt đầu từ địa chỉ 0000H.
2. **MOV R1, #10**: Gán giá trị 10 (decimal) vào thanh ghi R1. R1 là bộ đếm vòng lặp.
3. **MOV A, #20**: Gán giá trị 20 (decimal) vào thanh ghi A. A là thanh ghi tích lũy.
4. **LAP: INC A**: Tăng giá trị của thanh ghi A lên 1.
5. **DJNZ R1, LAP**: Giảm giá trị của thanh ghi R1 đi 1. Nếu R1 khác 0, quay lại nhãn LAP. Nếu R1 bằng 0, tiếp tục thực hiện các lệnh tiếp theo.
6. **END**: Kết thúc chương trình.
Vòng lặp sẽ được thực hiện 10 lần (từ 10 giảm về 0). Mỗi lần lặp, giá trị của thanh ghi A tăng lên 1. Ban đầu A = 20. Sau 10 lần lặp, A sẽ là 20 + 10 = 30.
Vậy, kết quả của thanh ghi A là 30 (decimal).
Đáp án đúng là B. 30H