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
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".





