Lệnh nào trong số các lệnh sau đây là lệnh sai:
Trả lời:
Đáp án đúng: A
Câu hỏi này kiểm tra kiến thức về các lệnh MOV trong vi điều khiển 8051. Lệnh MOV dùng để di chuyển dữ liệu từ một nguồn đến một đích. Trong các lệnh được đưa ra:
* **MOV A, ACC**: Lệnh này có vẻ dư thừa vì nó di chuyển nội dung của thanh ghi A vào chính thanh ghi A. Tuy nhiên, về mặt cú pháp, lệnh này **hợp lệ**. (ACC là viết tắt của Accumulator, tức thanh ghi A).
* **MOV A, PSW**: Lệnh này di chuyển nội dung của thanh ghi PSW (Program Status Word) vào thanh ghi A. Lệnh này **hợp lệ**.
* **MOV A, TH0**: Lệnh này di chuyển nội dung của thanh ghi TH0 (Timer/Counter High Byte 0) vào thanh ghi A. Lệnh này **hợp lệ**.
* **MOV A, SBUF**: Lệnh này di chuyển nội dung của thanh ghi SBUF (Serial Port Buffer) vào thanh ghi A. Lệnh này **hợp lệ**.
Tuy nhiên, cần chú ý rằng các lệnh trên đều hợp lệ về mặt cú pháp, nhưng lệnh `MOV A, ACC` là một lệnh vô nghĩa, không có tác dụng thực tế vì nó chỉ đơn giản là ghi lại giá trị của thanh ghi A vào chính nó. Do đó, mặc dù không sai về mặt cú pháp, nhưng nó sai về mặt logic và mục đích sử dụng thông thường trong lập trình. Trong ngữ cảnh câu hỏi này, có lẽ người ra đề muốn nhấn mạnh vào tính hữu dụng của lệnh, do đó, `MOV A, ACC` có thể được xem là "sai" nhất trong các lựa chọn.
Vì vậy, đáp án phù hợp nhất là A.





