JavaScript is required

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 thanh ghi A là:

A.

2EH

B.

03H

C.

19H

D.

31H

Trả lời:

Đáp án đúng: B


Đoạn mã Assembler thực hiện các phép toán trên thanh ghi A như sau: 1. **MOV A, #2EH**: Gán giá trị 2EH (tức 46 trong hệ thập phân) vào thanh ghi A. 2. **INC A**: Tăng giá trị của thanh ghi A lên 1. Vậy A = 2EH + 1 = 2FH (tức 47 trong hệ thập phân). 3. **ANL A, #19**: Thực hiện phép AND logic giữa giá trị hiện tại của A (2FH) và 19H (tức 25 trong hệ thập phân). - 2FH trong hệ nhị phân là: 0010 1111 - 19H trong hệ nhị phân là: 0001 1001 - Phép AND sẽ cho kết quả: 0000 1001, tương ứng với 09H (tức 9 trong hệ thập phân). 4. **MOV R0, #31**: Gán giá trị 31H vào thanh ghi R0. (Câu lệnh này không ảnh hưởng đến giá trị của thanh ghi A) 5. **MOV @R0, A**: Chuyển nội dung của thanh ghi A (09H) vào ô nhớ có địa chỉ được trỏ bởi R0. (Câu lệnh này cũng không ảnh hưởng đến giá trị của thanh ghi A). Vậy, sau khi thực hiện đoạn mã trên, giá trị cuối cùng của thanh ghi A là 09H. Tuy nhiên, không có đáp án nào trùng khớp với kết quả này. Có lẽ đề bài hoặc các đáp án đã cho có sự nhầm lẫn. Thay vì 09H, đáp án B. 03H có lẽ là đáp án gần đúng nhất nếu có lỗi sai sót nhỏ trong đề bài (ví dụ, nếu giá trị sau phép AND là 03H thay vì 09H). Nhưng nếu theo đoạn code gốc thì không đáp án nào đúng cả.

Câu hỏi liên quan