Cho đoạn mã Assembler sau:MOV R0, #7FHMOV 7EH, #00HMOV 7FH, #40HDEC @R0DEC R0DEC @R0Kết quả của thanh ghi R0 là:
Trả lời:
Đáp án đúng: C
Đoạn mã Assembler thực hiện các bước sau:
1. `MOV R0, #7FH`: Gán giá trị 7FH (127 trong hệ thập phân) cho thanh ghi R0.
2. `MOV 7EH, #00H`: Gán giá trị 00H cho ô nhớ có địa chỉ 7EH.
3. `MOV 7FH, #40H`: Gán giá trị 40H cho ô nhớ có địa chỉ 7FH. Tại thời điểm này, R0 đang chứa địa chỉ 7FH.
4. `DEC @R0`: Giảm giá trị của ô nhớ được trỏ bởi R0 đi 1. R0 đang trỏ đến địa chỉ 7FH, nơi chứa giá trị 40H. Sau lệnh này, giá trị tại ô nhớ 7FH sẽ là 3FH (40H - 1 = 3FH).
5. `DEC R0`: Giảm giá trị của thanh ghi R0 đi 1. R0 bây giờ sẽ chứa giá trị 7EH.
6. `DEC @R0`: Giảm giá trị của ô nhớ được trỏ bởi R0 đi 1. R0 đang trỏ đến địa chỉ 7EH, nơi chứa giá trị 00H. Sau lệnh này, giá trị tại ô nhớ 7EH sẽ là FFH (00H - 1 = FFH). Tuy nhiên, câu hỏi chỉ hỏi giá trị của R0, không phải giá trị của ô nhớ.
Sau lệnh `DEC R0`, giá trị của R0 là 7EH.





