1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài thực hành số 5: Làm việc với xâu kí tự

2 1,5K 7
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Làm việc với xâu kí tự
Thể loại Bài thực hành
Định dạng
Số trang 2
Dung lượng 60,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Khi DF = 0 dùng lệnh CLD chuỗi được xử lí tăng dần, ngược lại DF = 1 lệnh STD chuỗi được xử lí giảm dần.. MOVSB MOVSW : chuyển nội dung của byte word được định bởi DS:SI đến byte word đư

Trang 1

Bài thực hành số 5

Làm việc với xâu kí tự

Mục đích

 Biết sử dụng các phép toán trên chuỗi

 Biết làm một số thao tác với xâu kí tự (tìm kiếm, đếm từ, chuyển hoa / thường … )

Tóm tắt lý thuyết

 Cờ hướng DF (Direction Flag) : xác định hướng xử lí chuỗi Khi DF = 0 (dùng lệnh CLD) chuỗi được xử lí tăng dần, ngược lại DF = 1 (lệnh STD) chuỗi được xử lí giảm dần

 Con trỏ chuỗi: DS:SI – địa chỉ nguồn và ES:DI – địa chỉ đích

 Các lệnh trên chuỗi :

1 MOVSB (MOVSW) : chuyển nội dung của byte (word) được định bởi DS:SI đến

byte (word) được chỉ bởi ES: DI Sau đó SI và DI tự động tăng lên 1 (hoặc 2) nếu

cờ DF = 0 hay giảm 1 (hoặc 2) nếu DF = 1

Ví dụ: giả sử cần chép nội dung chuỗi thứ nhất : ‘HELLO’ vào chuỗi

thứ hai theo thứ tự ngược lại ta làm như sau :

.DATA

STR1 DB ‘HELLO’

STR2 DB 5 DUP(‘?’) CODE

MOV AX, @DATA MOV DS, AX MOV ES, AX LEA SI, STR1+4 ; cuối STR1 LEA DI, STR2 ; đầu STR2

MOV CX, 5 move :

MOVSB

; 1 sau lệnh MOVSB

LOOP move

2 STOSB (STOSW): chuyển nội dung của thanh ghi AL (AX) đến byte

(word) được định bởi ES:DI Sau đó DI tự động tăng lên 1 (hoặc 2) nếu

cờ DF = 0 hay giảm 1 (hoặc 2) nếu DF = 1

Ví dụ: Đọc và lưu một chuỗi kí tự bằng chức năng AH = 1, ngắt 21H

NhapChuoi PROC

;Vào: DI = chứa offset của chuỗi

;Ra: DI = nội dung chuỗi vừa nhập

; BX = kích thước chuỗi CLD ; đặt cờ DF theo hướng tăng

XOR BX, BX ; gán BX = 0 MOV AH, 1

Trang 2

INT 21H while1 :

CMP AL, 13 ; nếu gõ ENTER

JE end_while1 ; kết thúc nhập CMP AL, 8 ; nếu gõ BS

JNE else1 ;không phải lưu chuỗi DEC DI ;ngược lại lùi 1 kí tự DEC BX ;giảm kích thước chuỗi JMP read ; đọc kí tự khác

else1:

STOSB

INC BX

read:

INT 21H

JMP while1

4 LODSB (LODSW) : chuyển nội dung của byte (word) được định bởi

DS:SI vào AL (hoặc AX) sau đó tăng (hoặc giảm) SI 1 (hoặc 2) đơn vị

5 SCASB (SCASW): tìm nội dung chứa trong AL (hoặc AX) có trong chuỗi

định bởi ES:DI hay không Nếu tìm thấy thì cờ ZF sẽ được bật Sau mỗi

lần thực hiện con trỏ DI sẽ tăng hoặc giảm 1 (hoặc 2) đơn vị

6 CMPSB (CMPSW) : so sánh byte tại DS:SI và byte tại ES:DI, sau đó tăng

(hoặc giảm) SI và DI 1 (hoặc 2) đơn vị

Bài tập

1 VCT nhập một chuỗi kí tự và in ra chuỗi theo thứ tự ngược lại In chiều dài chuỗi

Ví dụ : Nhập chuỗi : abcd Chuỗi kết quả: dcba Chiều dài chuỗi: 4

2 VCT nhập họ tên Sau đó biến tất cả thành chữ hoa rồi in ra Biến tất cả thành chữ thường rồi in ra

Ví dụ: Nhập vào chuỗi : Thanh cHi khanG Chuỗi Hoa : THANH CHI KHANG

Chuỗi kết quả thường: thanh chi khang

3 Nhập một chuỗi kí tự tính tần số xuất hiện của các nguyên âm

Ví dụ : Nhập chuỗi : Thanh Chi Khang Số lần xuất hiện của các nguyên âm là: 3

4 VCT nhập hai chuỗi, liệt kê các kí tự có mặt trong hai chuỗi

Ví dụ: Nhập chuỗi: computer và chuỗi : informatic

Các kí tự có mặt trong hai chuỗi : o, m, t, r

5 Nhập vào hai chuỗi kí tự, so sánh hai chuỗi (= > < )

Ví dụ: Chuỗi thứ nhất: forn Chuỗi thứ hai : form

Kết quả : Chuỗi thứ nhất > chuỗi thứ hai

6 Nhập vào hai chuỗi kí tự, kiểm tra chuỗi thứ nhất là chuỗi con chuỗi tthứ hai không, không phân biệt hoa thường

Ví dụ: Chuỗi thứ nhất : form Chuỗi thứ hai: inFoRMatic

Kết quả : Chuỗi thứ nhất là con chuỗi thư hai

Ngày đăng: 24/10/2013, 19:15

TỪ KHÓA LIÊN QUAN

w