– XỬ LÝ CHUỖI KÝ TỰ - CÓ THỂ THAY THẾ LỆNH REP MOVSB BỞI MỘT SỐ...

Bài 6 – Xử lý chuỗi ký tự

-

Có thể thay thế lệnh REP MOVSB bởi một số lệnh khác hay không? Nếu được thì

hãy thay đổi và sau đó biên dịch, cho chạy chương trình để kiểm chứng lại kết quả.

-

Giả sử ta có nội dung của một biến string1 có tổng số byte >256 byte thì lúc đó

chúng ta phải khai báo lại các biến này như thế nào ?. Lúc này có khó khăn gì xảy

ra không ?. Hãy thử sửa lại, sau đó biên dịch và chạy chương trình để xem kết quả.

-

Có cách nào xác định chiều dài của một biến bất kỳ hay không ?. Hãy cho biết các

cú pháp của lệnh có thể thực hiện

được yêu cầu này. Sau đó thử áp dụng

để xác

định chiều dài của biến string1.

3.3. Tìm ký tự “A” có trong một chuỗi ký tự bất kỳ, nếu có thì in ra câu thông báo là

có ký tự “A” trong chuỗi ký tự và ngược lại.

Soạn thảo như đoạn chương trình mẫu và lưu với tên là BAI_6C.ASM.

write macro bien1

mov

ah,

09h

lea

dx,

bien1

int

21h

endm

dseg segment

string1 db "NGAC NHIEN CHUA ?"

tb1 db "co ky tu A trong chuoi string1 $"

tb2 db "khong ky tu A trong chuoi string1 $"

dseg ends

cseg segment

assume cs:cseg, ds:dseg, es: dseg

begin: mov ax, dseg

mov

ds,

ax

mov

es,

ax

cld

; chonchieu xu ly chuoi

mov cx, 17

; so ky tu can tim

mov al, 'A'

; tim kien ky tu A trong string1

lea di, string1 ; (ES:DI)--> dia chi cua chuoi dich

repne scasb

; lap lai viec tim kiem ky tu cho den

jne intb2

; khi gap duoc hoac den het chuoi

write

tb1

jmp

thoat

intb2: write

tb2

thoat:

mov ah,08h

; dung man hinh de xem ket qua

mov ah, 4ch

; thoat ve Dos

cseg ends

end

begin

-

Biên dịch và cho chạy file BAI_6C.ASM để kiểm tra và xem kết quả.