Cho đoạn mã Assembler sau:
ORG 0000H
MOV A, #0C0H
CLR C
MOV R1, #40H
MOV 40H, #15H
SUBB A, R1
END.
Kết quả của thanh ghi A là:
Trả lời:
Đáp án đúng: D
Đoạn mã Assembler thực hiện các bước sau:
1. `MOV A, #0C0H`: Gán giá trị 0xC0 (192 trong hệ thập phân) cho thanh ghi A.
2. `CLR C`: Xóa cờ nhớ C (Carry flag), đặt C = 0.
3. `MOV R1, #40H`: Gán địa chỉ 40H cho thanh ghi R1. Thanh ghi R1 lúc này đóng vai trò là con trỏ.
4. `MOV 40H, #15H`: Gán giá trị 0x15 (21 trong hệ thập phân) vào ô nhớ có địa chỉ 40H. Vì R1 đang chứa địa chỉ 40H, nên có thể hiểu là giá trị 0x15 được gán vào ô nhớ mà R1 đang trỏ tới.
5. `SUBB A, R1`: Thực hiện phép trừ A = A - (R1) - C. Trong đó (R1) là giá trị tại địa chỉ mà R1 trỏ tới, tức là giá trị tại ô nhớ 40H (0x15). C là cờ nhớ (đang bằng 0).
Vậy, A = 0xC0 - 0x15 - 0 = 0xC0 - 0x15 = 0xAB (171 trong hệ thập phân).
Vậy kết quả cuối cùng của thanh ghi A là 0xAB.