Cho đoạn mã Assembler sau:
ORG 0000H
MOV A, #2EH
INC A
ANL A, #19
MOV R0, #31
MOV @R0, A
END.
Kết quả của ô nhớ có địa chỉ 31H là:
Trả lời:
Đáp án đúng: A
Đầu tiên, A được gán giá trị 2EH (46 trong hệ thập phân).
Sau đó, INC A tăng giá trị của A lên 1, A trở thành 2FH (47 trong hệ thập phân).
Tiếp theo, ANL A, #19H thực hiện phép AND logic giữa A (2FH) và 19H (25 trong hệ thập phân). 2FH (00101111) AND 19H (00011001) = 00001001, tương đương 09H.
R0 được gán giá trị 31H.
Cuối cùng, MOV @R0, A chuyển giá trị của A (09H) vào ô nhớ có địa chỉ được lưu trong R0, tức là ô nhớ có địa chỉ 31H. Do đó, ô nhớ 31H sẽ chứa giá trị 09H. Tuy nhiên không có đáp án nào là 09H. Ta xét các đáp án:
A. 03H
B. 19H
C. 2EH
D. 31H
Vì không có đáp án nào trùng với kết quả tính toán (09H) nên câu hỏi này có lẽ bị sai sót hoặc thiếu thông tin. Tuy nhiên nếu giả sử có một sai sót nhỏ trong đề bài. Giả sử ANL A, #19H thành ANL A, #1FH, thì 2FH (00101111) AND 1FH (00011111) = 00001111, tương đương 0FH. Như vậy vẫn không có đáp án đúng.
Nếu ANL A, #31H thì 2FH (00101111) AND 31H (00110001) = 00100001, tương đương 21H. Như vậy vẫn không có đáp án đúng.
Nếu ANL A, #2EH thì 2FH (00101111) AND 2EH (00101110) = 00101110, tương đương 2EH. Như vậy đáp án C có thể đúng nếu đề bài có sai sót.
Trong trường hợp này, không có đáp án chính xác hoàn toàn dựa trên đoạn mã đã cho.





