Khái niệm chuỗi trong máy tính không giới hạn ở chuỗi ký tự, mà là khái niệm mãng gồm nhiều phần tử, kiểu dữ liệu của phần tử là byte hay word. Các phần tử có thể chứa ký tự hay số liệu. Do đó, các lệnh thao tác trên chuỗi cho phép thao tác trên các mãng hay bất kỳ vùng đệm dữ liệu nào.
Chuỗi lưu trữ trong bộ nhớ có địa chỉ đầu và địa chỉ cuối chính là địa chỉ của phần tửđầu tiên và phần tử cuối trong chuỗi. Như vậy, thông số của 1 chuỗi trong bộ
nhớ bao gồm: Địa chỉđầu, địa chỉ cuối, số phần tử của chuỗi phải thỏa mãn công thức sau:
(Số byte của phần tử x số phần tử) = ĐC cuối - ĐC đầu + 1
Trong đó: (Số byte của phần tử x số phần tử) = Số byte của chuỗi
Hình 7.1 mô tả chuỗi gồm 14 phần tử, mỗi phần tử là 1 byte được lưu trữ trong bộ nhớ bắt đầu tại địa chỉ 12h. Đầu chuỗi ↓ 14 phần tử (14 byte nhớ) Cuối chuỗ↓i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 12h 13h 14h 15h 16h 17h 18h 19h 1Ah 1Bh 1Ch 1Dh 1Eh 1Fh Hình 7.1: Chuỗi trong bộ nhớ
Intel-8086 cung cấp nhiều lệnh xử lý chuỗi để thực hiện các thao tác như: chuyển chuỗi, so sánh chuỗi, dò tìm trong chuỗi …. Khi sử dụng những lệnh này thì việc viết chương trình sẽ ngắn hơn và thi hành nhanh hơn là sử dụng các lệnh MOV, CMP … trong các thao tác chuỗi. Các lệnh xử lý chuỗi gồm 3 nhóm trong bảng 7.1.
Các lệnh xử lý chuỗi không có toán hạng trên dòng lệnh, nên việc sử dụng các toán hạng mặc nhiên phải tuân thủ qui định của từng lệnh.
LỆNH Ý NGHĨA
Nhóm di chuyển chuỗi
MOVSB MOVSW
Di chuyển chuỗi từng byte (Move String Byte) Di chuyển chuỗi từng word (Move String Word) LODSB
LODSW
Nạp chuỗi từng byte (Load String Byte) Nạp chuỗi từng word (Load String Word) STOSB
STOSW Ghi chuGhi chuỗỗi ti từừng byte (Store String Byte) ng word (Store String Word)
Nhóm so sánh chuỗi
CMPSB
CMPSW So sánh chuSo sánh chuỗỗi ti từừng byte (Compare String Byte) ng word (Compare String Word)
Nhóm dò tìm giá trị trong chuỗi
SCASB
SCASW Do tìm trong chuDo tìm trong chuỗỗi ti từừng byte (Scan String Byte) ng word (Scan String Word)
Bảng 7.1: Lệnh xử lý chuỗi