– 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ả.