GIÁO TRÌNH CẤU TRÚC MÁY TÍNH LẬP TRÌNH HỢP NGỮ_CHƯƠNG 13
Số trang: 46
Loại file: pdf
Dung lượng: 971.10 KB
Lượt xem: 10
Lượt tải: 0
Xem trước 5 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Tham khảo tài liệu giáo trình cấu trúc máy tính lập trình hợp ngữ_chương 13, công nghệ thông tin, phần cứng phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Nội dung trích xuất từ tài liệu:
GIÁO TRÌNH CẤU TRÚC MÁY TÍNH LẬP TRÌNH HỢP NGỮ_CHƯƠNG 13Chươ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 14 Lập trình XL Chuỗi 1 GiỚI THIỆU CHUỖITrong ASM 8086 khái niệm chuỗi bộ nhớ hay chuỗilà 1 mảng các byte hay word. Các lệnh thao tác với chuỗi cũng được thiết kế cho các thao tác với mảng. Chương 14 Lập trình XL Chuỗi 2 Cờ hướng DF Cờ định hướng (Direction Flag) : xác định hướng cho các thao tác chuỗi.DF=0 chuỗi được xử lý theo chiều tăng tức địa chỉ vùng nhớ chứachuỗi tăng dần.(chuỗi được xử lý từ trái qua phải).DF=1 chuỗi được xử lý theo chiều tăng tức địa chỉ vùng nhớ chứachuỗi giảm dần.(chuỗi được xử lý từ phải qua trái). Trong DEBUG DF=0 ký hiệu là UP DF=1 ký hiệu là DN Chương 14 Lập trình XL Chuỗi 3LỆNH LIÊN QUAN ĐẾN CỜ HƯỚNGCLD (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 4Chương 14 Lập trình XL Chuỗi 5 Trước khi sử dụng các lệnh xử lý chuỗi, ta phải xác định hướng xử lý chuỗi bằng cách set hay clear cờ hướng. Lệnh đặt cờ hướng : CLD : xóa cờ hướng, chuổi được xử lý từ trái phải STD : đặt cờ hướng, chuổi được xử lý từ phải tráiCON TRỎ CHUỖI Chứa địa chỉ chuỗi nguồn DS:SI ES:DI Chứa địa chỉ chuỗi đích Chương 14 Lập trình XL Chuỗi 6CÁC THAO TÁC XỬ LÝ CHUỖI NHẬP CHUỔI Input : AH = 0AH, ngắt 21H DS:DX = địa chỉ của buffer, trong đó buffer[0] là kích thước tối đa của chuỗi, buffer[1] sẽ là kích thước dữ liệu nhập. Output : Chuỗi buffer chứa nội dung nhập vào từ buffer[2] trở điYêu cầu xem thêm các chức năng AH = 3FH và AH = 40H của ngắt 21H. Chương 14 Lập trình XL Chuỗi 7Chương 14 Lập trình XL Chuỗi 8NHẬP CHUỖI Chương 14 Lập trình XL Chuỗi 9 NHẬP CHUỔI Ta cũng có thễ dùng hàm 1 INT 21h đọc 1 ký tự từ bàn phím để nhập 1 chuỗi bằng cách dùng vòng lặp và lưu chuổi bằng lệnh STOSB. STOSB (STORE STRING BYTE)CHUYỂN NỘI DUNG ALĐẾN BYTE ĐƯỢC TRỎ LƯU CHUỖI CÁC BYTESBỞI ES:DI.SAU KHI LỆNH ĐƯỢC THỰCHiỆN DI TĂNG 1 NẾU DF=0HoẶC GiẢM 1 NẾU DF =1 Chương 14 Lập trình XL Chuỗi 10 NHẬP CHUỔI Ta cũng có thễ dùng hàm 1 Int 21h đọc 1 ký tự từ bàn phím để nhập 1 chuỗi bằng cách dùng vòng lặp và lưu chuổi bằng lệnh STOSW. STOSW (STORE STRING WORD)CHUYỂN NỘI DUNG AXĐẾN WORD ĐƯỢC TRỎ LƯU CHUỖI CÁC WORDBỞI ES:DI.SAU KHI LỆNH ĐƯỢC THỰCHiỆN DI TĂNG HAY GiẢM 2TÙY VÀO DF. Chương 14 Lập trình XL Chuỗi 11 THÍ DỤ.MODEL SMALL.STACK 100H.DATA STRING1 DB HELLO .CODE MAIN PROC MOV AX,@DATA MOV ES,AX LEA DI, STRING1 ; khởi tạo ES CLD ; xử lý từ trái phải MOV AL,A STOSB ; AL chứa ký tự cần lưu STOSB ; lưu ký tự ‘A’MOV AH,4CH ; lưu ký tự thứ 2INT 21HMAIN ENDPEND MAIN Chương 14 Lập trình XL Chuỗi 12 THÍ DỤ .READSTR PROC ELSE1 : Giải thích : STOSB DI chứa offset của chuỗiPUSH AX INC BX BX chứa số ký tự nhậpPUSH DI READ : 8H mã ASCII của BackspaceCLD INT 21H không lưu nó vào chuỗiXOR BX,BX JMP LAP tăng số ký tự lên 1MOV AH,1 ENDLAP : Đúng lùi con trỏ DIINT 21H POP DI giảm số ký tự nhập đượcLAP: POP AX RET CMP AL,0DH READSTR ENDP JE ENDLAP CMP AL,8H JNE ELSE1 DEC DI DEC BX JMP READ Chương 14 Lập trình XL Chuỗi 13NHẬP XUẤT CHUỖI HiỂN THỊ CHUỖI AH = 09, ngắt 21HVào : DX = địa chỉ offset của chuỗi.Chuỗi phải kết thúc bằng kí tự ‘$’.Chú ý : thay vì dùng lệnh MOVOFFSET ta có thể dùng lệnh LEA. ...
Nội dung trích xuất từ tài liệu:
GIÁO TRÌNH CẤU TRÚC MÁY TÍNH LẬP TRÌNH HỢP NGỮ_CHƯƠNG 13Chươ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 14 Lập trình XL Chuỗi 1 GiỚI THIỆU CHUỖITrong ASM 8086 khái niệm chuỗi bộ nhớ hay chuỗilà 1 mảng các byte hay word. Các lệnh thao tác với chuỗi cũng được thiết kế cho các thao tác với mảng. Chương 14 Lập trình XL Chuỗi 2 Cờ hướng DF Cờ định hướng (Direction Flag) : xác định hướng cho các thao tác chuỗi.DF=0 chuỗi được xử lý theo chiều tăng tức địa chỉ vùng nhớ chứachuỗi tăng dần.(chuỗi được xử lý từ trái qua phải).DF=1 chuỗi được xử lý theo chiều tăng tức địa chỉ vùng nhớ chứachuỗi giảm dần.(chuỗi được xử lý từ phải qua trái). Trong DEBUG DF=0 ký hiệu là UP DF=1 ký hiệu là DN Chương 14 Lập trình XL Chuỗi 3LỆNH LIÊN QUAN ĐẾN CỜ HƯỚNGCLD (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 4Chương 14 Lập trình XL Chuỗi 5 Trước khi sử dụng các lệnh xử lý chuỗi, ta phải xác định hướng xử lý chuỗi bằng cách set hay clear cờ hướng. Lệnh đặt cờ hướng : CLD : xóa cờ hướng, chuổi được xử lý từ trái phải STD : đặt cờ hướng, chuổi được xử lý từ phải tráiCON TRỎ CHUỖI Chứa địa chỉ chuỗi nguồn DS:SI ES:DI Chứa địa chỉ chuỗi đích Chương 14 Lập trình XL Chuỗi 6CÁC THAO TÁC XỬ LÝ CHUỖI NHẬP CHUỔI Input : AH = 0AH, ngắt 21H DS:DX = địa chỉ của buffer, trong đó buffer[0] là kích thước tối đa của chuỗi, buffer[1] sẽ là kích thước dữ liệu nhập. Output : Chuỗi buffer chứa nội dung nhập vào từ buffer[2] trở điYêu cầu xem thêm các chức năng AH = 3FH và AH = 40H của ngắt 21H. Chương 14 Lập trình XL Chuỗi 7Chương 14 Lập trình XL Chuỗi 8NHẬP CHUỖI Chương 14 Lập trình XL Chuỗi 9 NHẬP CHUỔI Ta cũng có thễ dùng hàm 1 INT 21h đọc 1 ký tự từ bàn phím để nhập 1 chuỗi bằng cách dùng vòng lặp và lưu chuổi bằng lệnh STOSB. STOSB (STORE STRING BYTE)CHUYỂN NỘI DUNG ALĐẾN BYTE ĐƯỢC TRỎ LƯU CHUỖI CÁC BYTESBỞI ES:DI.SAU KHI LỆNH ĐƯỢC THỰCHiỆN DI TĂNG 1 NẾU DF=0HoẶC GiẢM 1 NẾU DF =1 Chương 14 Lập trình XL Chuỗi 10 NHẬP CHUỔI Ta cũng có thễ dùng hàm 1 Int 21h đọc 1 ký tự từ bàn phím để nhập 1 chuỗi bằng cách dùng vòng lặp và lưu chuổi bằng lệnh STOSW. STOSW (STORE STRING WORD)CHUYỂN NỘI DUNG AXĐẾN WORD ĐƯỢC TRỎ LƯU CHUỖI CÁC WORDBỞI ES:DI.SAU KHI LỆNH ĐƯỢC THỰCHiỆN DI TĂNG HAY GiẢM 2TÙY VÀO DF. Chương 14 Lập trình XL Chuỗi 11 THÍ DỤ.MODEL SMALL.STACK 100H.DATA STRING1 DB HELLO .CODE MAIN PROC MOV AX,@DATA MOV ES,AX LEA DI, STRING1 ; khởi tạo ES CLD ; xử lý từ trái phải MOV AL,A STOSB ; AL chứa ký tự cần lưu STOSB ; lưu ký tự ‘A’MOV AH,4CH ; lưu ký tự thứ 2INT 21HMAIN ENDPEND MAIN Chương 14 Lập trình XL Chuỗi 12 THÍ DỤ .READSTR PROC ELSE1 : Giải thích : STOSB DI chứa offset của chuỗiPUSH AX INC BX BX chứa số ký tự nhậpPUSH DI READ : 8H mã ASCII của BackspaceCLD INT 21H không lưu nó vào chuỗiXOR BX,BX JMP LAP tăng số ký tự lên 1MOV AH,1 ENDLAP : Đúng lùi con trỏ DIINT 21H POP DI giảm số ký tự nhập đượcLAP: POP AX RET CMP AL,0DH READSTR ENDP JE ENDLAP CMP AL,8H JNE ELSE1 DEC DI DEC BX JMP READ Chương 14 Lập trình XL Chuỗi 13NHẬP XUẤT CHUỖI HiỂN THỊ CHUỖI AH = 09, ngắt 21HVào : DX = địa chỉ offset của chuỗi.Chuỗi phải kết thúc bằng kí tự ‘$’.Chú ý : thay vì dùng lệnh MOVOFFSET ta có thể dùng lệnh LEA. ...
Tìm kiếm theo từ khóa liên quan:
Cấu trúc máy tính kỹ thuật máy tính thủ thuật máy tính giáo trình tin học kỹ thuật công nghệGợi ý tài liệu liên quan:
-
50 trang 496 0 0
-
Giáo trình Tin học (Trình độ: Trung cấp nghề) - Trường Trung cấp nghề Củ Chi
268 trang 331 4 0 -
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 312 0 0 -
67 trang 299 1 0
-
Làm việc với Read Only Domain Controllers
20 trang 299 0 0 -
122 trang 212 0 0
-
Sửa lỗi các chức năng quan trọng của Win với ReEnable 2.0 Portable Edition
5 trang 211 0 0 -
Giáo trình Bảo trì hệ thống và cài đặt phần mềm
68 trang 205 0 0 -
Giáo trình Cấu trúc máy tính toàn tập
130 trang 203 0 0 -
UltraISO chương trình ghi đĩa, tạo ổ đĩa ảo nhỏ gọn
10 trang 203 0 0