Cho đoạn mã Assembler sau:MOV R1, #0F0HMOV @R1, #0FHMOV A, #0F0HADD A, @R1Kết quả của thanh ghi R1 là:
Trả lời:
Đáp án đúng: D
Đoạn mã Assembler thực hiện các bước sau:
- MOV R1, #0F0H: Gán giá trị F0H (240 trong hệ thập phân) cho thanh ghi R1. Thanh ghi R1 bây giờ chứa địa chỉ F0H.
- MOV @R1, #0FH: Gán giá trị 0FH (15 trong hệ thập phân) cho ô nhớ có địa chỉ được lưu trong R1 (tức là địa chỉ F0H).
- MOV A, #0F0H: Gán giá trị F0H cho thanh ghi A.
- ADD A, @R1: Cộng giá trị của ô nhớ có địa chỉ được lưu trong R1 (tức là ô nhớ F0H, hiện đang chứa giá trị 0FH) vào thanh ghi A. Vậy A = A + (F0H) = F0H + 0FH = FFH.
Tuy nhiên, câu hỏi yêu cầu kết quả của thanh ghi R1. Lệnh MOV R1, #0F0H gán giá trị F0H cho R1 và không có lệnh nào khác thay đổi giá trị của R1. Do đó, giá trị của R1 vẫn là F0H.