JavaScript is required

Xét đoạn chương trình và cho biết kết quả? DATA M1 DB 'abcd,$' Code …… CLD LEA SI,M1 LODSB

A.

Nạp một byte từ M1 vào AL

B.

Nạp một từ vào M1

C.

Nạp một từ vào AL

D.

Nạp một byte vào M1

Trả lời:

Đáp án đúng: A


Đoạn chương trình trên thực hiện các công việc sau: 1. `DATA M1 DB 'abcd,$'` : Khai báo một vùng nhớ có tên `M1` chứa chuỗi 'abcd,$'. Mỗi ký tự trong chuỗi này chiếm 1 byte. 2. `CLD` : Xóa cờ hướng (Direction Flag). Điều này có nghĩa là sau này khi sử dụng các lệnh xử lý chuỗi, con trỏ sẽ tự động tăng lên. 3. `LEA SI, M1` : Nạp địa chỉ của `M1` vào thanh ghi `SI` (Source Index). Bây giờ `SI` trỏ đến byte đầu tiên của chuỗi 'abcd,$'. 4. `LODSB` : Lệnh này viết tắt của "Load String Byte". Nó thực hiện các thao tác sau: * Nạp byte mà `SI` đang trỏ tới vào thanh ghi `AL` (Accumulator Low byte). * Tăng `SI` lên 1 (do đã xóa cờ hướng). Như vậy, sau khi thực hiện `LODSB`, byte đầu tiên của chuỗi `M1` (tức là ký tự 'a') sẽ được nạp vào thanh ghi `AL`. Do đó, đáp án chính xác là "Nạp một byte từ M1 vào AL".

Câu hỏi liên quan