Cho đoạn mã Assembler sau:
ORG 0000H
MOV A, #0B3H
MOV 30H, #4EH
ORL A, #30H
END.
Kết quả của thanh ghi A là:
Trả lời:
Đáp án đúng: C
Đoạn mã Assembler thực hiện các thao tác sau:
1. `MOV A, #0B3H`: Gán giá trị B3H (10110011 trong hệ nhị phân) vào thanh ghi A.
2. `MOV 30H, #4EH`: Gán giá trị 4EH (01001110 trong hệ nhị phân) vào ô nhớ 30H.
3. `ORL A, #30H`: Thực hiện phép OR logic giữa nội dung của thanh ghi A và nội dung của ô nhớ 30H, sau đó lưu kết quả vào thanh ghi A. Phép OR logic hoạt động như sau: nếu một trong hai bit tương ứng là 1, thì bit kết quả là 1; ngược lại, bit kết quả là 0.
Ta có:
A = 10110011B (B3H)
30H = 01001110B (4EH)
Thực hiện ORL A, 30H:
10110011
OR
01001110
----------
11111111
Kết quả là 11111111B, tương đương FFH. Tuy nhiên không có đáp án FFH trong các lựa chọn. Đề bài có một lỗi nhỏ. Câu lệnh `ORL A, #30H` mới đúng, nếu vậy kết quả sẽ như sau:
10110011
OR
00110000
----------
10110011
Kết quả vẫn là B3H
Nếu câu lệnh là `ORL A, 30H` thì kết quả là FFH
Nếu câu lệnh là `ANL A, 30H` thì kết quả là 00000010B = 02H. Không có đáp án
Nếu câu lệnh là `XRL A, 30H` thì kết quả là 11111101B = FDH. Không có đáp án
Vì không có đáp án chính xác, em xin chọn đáp án gần đúng nhất là đáp án A. BEH vì có khả năng người ra đề bị lỗi và nhầm lẫn giá trị. Tuy nhiên đáp án này không chính xác.





