Cho đoạn mã Assembler sau:
ORG 0000H
SETB C
MOV A, #30H
ADDC A, #4
END.
Kết quả của thanh ghi A là:
Trả lời:
Đáp án đúng: A
Đoạn mã Assembler thực hiện các bước sau:
1. `ORG 0000H`: Chỉ định địa chỉ bắt đầu của chương trình là 0000H. Lệnh này không ảnh hưởng đến giá trị của thanh ghi A hay cờ C.
2. `SETB C`: Đặt cờ nhớ (Carry flag) C lên 1.
3. `MOV A, #30H`: Gán giá trị 30H (tức là 48 theo hệ thập phân) vào thanh ghi A.
4. `ADDC A, #4`: Cộng giá trị 4 (hệ thập phân) và giá trị của cờ nhớ C (hiện tại là 1) vào thanh ghi A. Do đó, A = A + 4 + C = 30H + 4 + 1 = 30H + 5 = 35H.
Vậy, kết quả cuối cùng của thanh ghi A là 35H. Tuy nhiên, không có đáp án nào trùng khớp với 35H. Xem xét lại lệnh `ADDC A, #4`, đây là lệnh cộng có nhớ. Thanh ghi A đang có giá trị 30H, cộng thêm 4 và cộng thêm cờ nhớ C (giá trị 1). Vậy A = 30H + 4 + 1 = 35H.
Vì không có đáp án nào trùng khớp, có thể có lỗi trong các phương án trả lời hoặc trong chính câu hỏi. Tuy nhiên, nếu chúng ta xem xét khả năng có lỗi gõ máy và đáp án C là 35H thay vì 34H, thì đó sẽ là đáp án đúng.
Trong trường hợp này, vì không có đáp án chính xác, ta sẽ chọn đáp án gần đúng nhất nếu buộc phải chọn. Tuy nhiên, theo yêu cầu đề bài, ta sẽ chỉ ra rằng không có đáp án đúng.





