Bài giảng Cấu trúc máy tính: Chương 13 do Ngô Phước Nguyên biên soạn nhằm mục đích phục vụ cho việc giảng dạy. Nội dung bài giảng gồm: Giới thiệu, cờ hướng DF, các lệnh thiết lập và xóa cờ hướng, các lệnh thao tác trên chuỗi, một số thí dụ minh họa, thư viện liên quan đến chuỗi.
Chương 13 :LẬP TRÌNH XỬ LÝ MẢNG & CHUỔI • GiỚI THIỆU • CỜ HƯỚNG DF • CÁC LỆNH THIẾT LẬP VÀ XĨA CỜ HƯỚNG • CÁC LỆNH THAO TÁC TRÊN CHUỔI • MỘT SỐ THÍ DỤ MINH HỌA •THƯ ViỆN LIÊN QUAN ĐẾN CHUỔI Chương 13 Lập trình XL Chuỗi GiỚI THIỆU CHUỖI Trong ASM 8086 khái niệm chuỗi nhớ hay chuỗi mảng byte hay word Các lệnh thao tác với chuỗi thiết kế cho thao tác với mảng Chương 14 Lập trình XL Chuỗi Cờ hướng DF Cờ định hướng (Direction Flag) : xác định hướng cho thao tác chuỗi DF=0 chuỗi xử lý theo chiều tăng tức địa vùng nhớ chứa chuỗi tăng dần (chuỗi xử lý từ trái qua phải) DF=1 chuỗi xử lý theo chiều tăng tức địa vùng nhớ chứa chuỗi giảm dần (chuỗi xử lý từ phải qua trái) Trong DEBUG DF=0 ký hiệu UP DF=1 ký hiệu DN Chương 14 Lập trình XL Chuỗi LỆNH LIÊN QUAN ĐẾN CỜ HƯỚNG CLD (CLEAR DIRECTION FLAG) XÓA CỜ HƯỚNG DF =0 STD (SET DIRECTION FLAG) THIẾT LẬP CỜ HƯỚNG DF=1 Chương 14 Lập trình XL Chuỗi Chương 14 Lập trình XL Chuỗi Trước sử dụng lệnh xử lý chuỗi, ta phải xác định hướng xử lý chuỗi cách set hay clear cờ hướng Lệnh đặt cờ hướng : CLD : xóa cờ hướng, chuổi xử lý từ trái phải STD : đặt cờ hướng, chuổi xử lý từ phải trái CON TRỎ CHUỖI Chứa địa chuỗi nguồn DS:SI ES:DI Chứa địa chuỗi đích Chương 14 Lập trình XL Chuỗi CÁC THAO TÁC XỬ LÝ CHUỖI NHẬP CHUỔI Input : AH = 0AH, ngắt 21H DS:DX = địa buffer, buffer[0] kích thước tối đa chuỗi, buffer[1] kích thước liệu nhập Output : Chuỗi buffer chứa nội dung nhập vào từ buffer[2] trở Yêu cầu xem thêm chức AH = 3FH AH = 40H ngắt 21H Chương 14 Lập trình XL Chuỗi Chương 14 Lập trình XL Chuỗi NHẬP CHUỖI Chương 14 Lập trình XL Chuỗi NHẬP CHUỔI Ta có thễ dùng hàm INT 21h đọc ký tự từ bàn phím để nhập chuỗi cách dùng vòng lặp lưu chuổi lệnh STOSB STOSB (STORE STRING BYTE) CHUYỂN NỘI DUNG AL ĐẾN BYTE ĐƯỢC TRỎ BỞI ES:DI SAU KHI LỆNH ĐƯỢC THỰC HiỆN DI TĂNG NẾU DF=0 HoẶC GiẢM NẾU DF =1 LƯU CHUỖI CÁC BYTES Chương 14 Lập trình XL Chuỗi 10 Chương 14 Lập trình XL Chuỗi 32 Chương 14 Lập trình XL Chuỗi 33 REP Khởi tạo CX với số byte cần chuyển Sau thực lệnh REP MOVSB Sau lệnh MOVSB, CX giảm =0 hết chuỗi Chương 14 Lập trình XL Chuỗi 34 THÍ DỤ MINH HỌA DATA STRING1 DB ‘HELLO’ STRING2 DB DUP(?) … CLD LEA SI, STRING1 LEA DI, STRING2 MOV CX, REP MOVSB ……… Bài tập : Viết đoạn chương trình chép chuỗi STRING1 thí dụ trước vào chuỗi STRING2 theo thứ tự ngược lại Chương 14 Lập trình XL Chuỗi 35 THÍ DỤ MINH HỌA Cho mảng sau ARR DW 10,20,40,50,60,? Viết lệnh để chèn 30 vào 20 40 ( giả sử DS ES chứa địa đoạn liệu) 10,20, ,40,50,60 30 Dời 40,50,60 sau vị trí Sau chèn 30 vào Chương 14 Lập trình XL Chuỗi 36 STD LEA SI, ARR+8H LEA DI, ARR+AH MOV CX, REP MOVSW MOV WORD PTR[DI],30 Chương 14 Lập trình XL Chuỗi 37 MẢNG CHIỀU Một dãy phần tử có kiểu liệu, có tên gọi Khai báo MKT DB ‘abcdef’ ; mảng ký tự MNB Dw 10h,20h,30h,40h,50h,60h ; mảng số ArrA DB 100 DUP(0) ; khai báo mảng có 100 phần tử có giá trị khởi tạo Chương 14 Lập trình XL Chuỗi 38 Chương 14 Lập trình XL Chuỗi 39 Chương 14 Lập trình XL Chuỗi 40 BÀI TẬP Bài : Viết chương trình nhập số từ 1-12, in tên tháng tương ứng Bài : Viết chương trình nhập số từ 1-7, in tên thứ tương ứng Chương 14 Lập trình XL Chuỗi 41 MỘT SỐ BÀI TẬP MINH HỌA LẬP TRÌNH XỬ LÝ CHUỖI Nhập chuỗi dài tối đa 255 ký tự từ bàn phím Cho phép dùng phím BackSpace để sửa nhập sai kết thúc nhập gỏ phím Enter Hướng dẫn : Dùng hàm 0AH INT 21H để nhập chuổi DS:DX địa buffer đệm lưu chuỗi Byte : số byte tối đa nhập Byte : chứa giá trị Byte trở : để trống (lưu ký tự nhập) Để nhập chuỗi ký tự vào Buffer đệm ta khai báo sau : DATA BUFFERN DB 80,0,80 DUP(?) Chương 14 Lập trình XL Chuỗi 42 B1 Viết chương trình nhập vào từ, sau in ký tự từ theo chiều dọc Thí dụ Nhập CONG Xuất : C O N G B2 Viết chương trình nhập vào chuỗi, sau đổi tất chuỗi thành chữ hoa in chuỗi hình dịng kế B3.Viết chương trình nhập hai chuỗi ký tự , kiểm tra xem chuỗi thứ hai có xuất chuỗi thứ hay khơng Ví dụ : Nhập chuỗi thứ : computer information Nhập chuỗi thứ hai : compute Xuất: Chuỗi thứ hai có xuất chuỗi thứ Chương 14 Lập trình XL Chuỗi 43 B4 Viết chương trình nhập chuỗi ký tự viết hoa ký tự nguyên âm, viết thường ký tự phụ âm Ví dụ : Nhập chuỗi : “aBcdE” Xuất chuỗi: “AbCdE” B5 Viết chương trình nhập vào chuỗi ký tự s1, s2 số nguyên dương n Chèn chuỗi s2 vào chuỗi s1 vị trí ký tự thứ n chuỗi s1 Ví dụ : Nhập chuỗi s1 : “abcde” Nhập chuỗi s2 : “fgh” Nhập n = Xuất kết : “abcfghde” B6 Viết chương trình nhập vào từ bàn phím chuỗi tính số lần xuất nguyên âm (a,e,i,o,u, y), cac phu am, cac khoang trang, chuỗi tương ứng Ví dụ : Nhập chuỗi : “dai hoc khoa hoc tu nhien ho chi minh” Xuất : Số lần xuất nguyên âm : 14 , phu am la: 24, khoang trang la: Chương 14 Lập trình XL Chuỗi 44 B7 Viết chương trình nhập vào từ bàn phím chuỗi gồm ký tự bảng chữ Đếm xem chuỗi có từ Ví dụ : Nhập chuỗi : “ hO Chi mINh ” Xuất : chuỗi gồm có từ B8 Viết chương trình nhập vào từ bàn phím số Xuất hình số theo thứ tự tăng dần Ví dụ : Nhập : 14 26 11 Xuất : 11 14 26 B9 Viết chương trình nhập vào từ bàn phím số sau xuất số lớn nhỏ hình Ví dụ : Nhập : 13 21 49 Xuất : Số lớn : 49 Số nhỏ : Chương 14 Lập trình XL Chuỗi 45 Chương 14 Lập trình XL Chuỗi 46 ... khởi tạo Chương 14 Lập trình XL Chuỗi 38 Chương 14 Lập trình XL Chuỗi 39 Chương 14 Lập trình XL Chuỗi 40 BÀI TẬP Bài : Viết chương trình nhập số từ 1-1 2, in tên tháng tương ứng Bài : Viết chương. .. Chuỗi 25 Chương 14 Lập trình XL Chuỗi 26 STOSB (LƯU CHUỖI BYTE) Chương 14 Lập trình XL Chuỗi 27 STOSW (LƯU CHUỖI WORD) Chương 14 Lập trình XL Chuỗi 28 Chương 14 Lập trình XL Chuỗi 29 Chương 14... chuỗi thứ Chương 14 Lập trình XL Chuỗi 43 B4 Viết chương trình nhập chuỗi ký tự viết hoa ký tự nguyên âm, viết thường ký tự phụ âm Ví dụ : Nhập chuỗi : “aBcdE” Xuất chuỗi: “AbCdE” B5 Viết chương