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 được cung cấp thực hiện các thao tác sau:
1. `DATA M1 DB ‘abcd,$’`: Khai báo một vùng nhớ `M1` chứa chuỗi 'abcd,$'.
2. `CLD`: Xóa cờ hướng (Direction Flag). Điều này có nghĩa là SI (Source Index) sẽ tự động tăng lên sau mỗi lần truy xuất dữ liệu.
3. `LEA SI,M1`: Nạp địa chỉ của `M1` vào thanh ghi `SI`. Bây giờ, `SI` trỏ đến byte đầu tiên của chuỗi 'abcd,$'.
4. `LODSB`: Lệnh này thực hiện:
* Nạp một byte từ địa chỉ được trỏ bởi `SI` vào thanh ghi `AL` (Accumulator Low byte).
* Tăng `SI` lên 1 (do `CLD` đã xóa cờ hướng).
Vậy, sau khi thực hiện lệnh `LODSB`, thanh ghi `AL` sẽ chứa byte đầu tiên của chuỗi 'abcd,$', tức là ký tự 'a'. Do đó, `LODSB` có chức năng nạp một byte từ `M1` vào `AL`.
Vì vậy, đáp án đúng là:
A. Nạp một byte từ M1 vào AL





