JavaScript is required

Đoạn lệnh sau sai ở câu lệnh nào?

A.

A. MOV AX, 3

B.

B. MUL BX

C.

C. IMUL BX

D.

D. MOV BX,-1

Trả lời:

Đáp án đúng: B


Câu hỏi này kiểm tra kiến thức về các lệnh hợp ngữ (assembly) cơ bản, đặc biệt là lệnh nhân (MUL, IMUL) và lệnh MOV. * **MOV AX, 3**: Lệnh này gán giá trị 3 vào thanh ghi AX. Lệnh này hợp lệ. * **MUL BX**: Lệnh này nhân không dấu thanh ghi AX với thanh ghi BX. Kết quả được lưu trữ trong AX (nếu kết quả vừa đủ) hoặc DX:AX (nếu kết quả lớn hơn kích thước của AX). Lệnh này hợp lệ. * **IMUL BX**: Lệnh này nhân có dấu thanh ghi AX với thanh ghi BX. Cách lưu trữ kết quả tương tự như MUL BX. Lệnh này hợp lệ. * **MOV BX, -1**: Lệnh này gán giá trị -1 vào thanh ghi BX. Trong kiến trúc x86, việc gán giá trị âm trực tiếp vào thanh ghi là hợp lệ. Tuy nhiên, khi sử dụng MUL (nhân không dấu), nếu BX chứa giá trị âm (-1), kết quả sẽ không chính xác theo ý nghĩa nhân không dấu thông thường. Dù lệnh MOV BX, -1 hợp lệ về mặt cú pháp, việc sử dụng giá trị âm này trong phép nhân không dấu MUL BX có thể dẫn đến kết quả không mong muốn. Các lệnh còn lại đều thực hiện đúng chức năng của nó. Vì vậy, theo nghĩa rộng hơn, việc sử dụng giá trị âm trong MUL BX là không nên, và câu D tạo ra tình huống đó. Vậy câu lệnh sai là D vì nó gán một giá trị âm cho BX, có thể gây ra lỗi khi sử dụng MUL BX (mặc dù MOV BX, -1 bản thân nó là hợp lệ).

Câu hỏi liên quan