Làm việc với sâu ký tự
Số trang: 2
Loại file: doc
Dung lượng: 60.50 KB
Lượt xem: 13
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài thực hành số 5Là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
Nội dung trích xuất từ tài liệu:
Làm việc với sâu ký tự 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 STD ; định hướng xử lí giảm MOV CX, 5 move : MOVSB ADD DI,2 ; + 2 do DI bị giảm ; 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 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 end_while1: ; thoát khỏi vòng lặp 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ập1. 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: 42. 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 khang3. 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à: 34. 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, r5. 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 ...
Nội dung trích xuất từ tài liệu:
Làm việc với sâu ký tự 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 STD ; định hướng xử lí giảm MOV CX, 5 move : MOVSB ADD DI,2 ; + 2 do DI bị giảm ; 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 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 end_while1: ; thoát khỏi vòng lặp 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ập1. 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: 42. 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 khang3. 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à: 34. 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, r5. 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 ...
Tìm kiếm theo từ khóa liên quan:
Kỹ thuật lập trình công nghệ thông tin tin hoc văn phòng quản trị mạng hệ điều hànhGợi ý tài liệu liên quan:
-
Giáo trình Lý thuyết hệ điều hành: Phần 1 - Nguyễn Kim Tuấn
110 trang 453 0 0 -
52 trang 431 1 0
-
73 trang 427 2 0
-
24 trang 357 1 0
-
Nhập môn Tin học căn bản: Phần 1
106 trang 331 0 0 -
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 317 0 0 -
Giáo trình Tin học văn phòng: Phần 2 - Bùi Thế Tâm
65 trang 316 0 0 -
74 trang 302 0 0
-
96 trang 294 0 0
-
Báo cáo thực tập thực tế: Nghiên cứu và xây dựng website bằng Wordpress
24 trang 289 0 0