Chuyển một chuỗi MOVSB (MOVe String Byte-by - Byte) Mô tả: MOVSB copy từng byte một từ một địa chỉ nguồn tới địa chỉ đích. Nguồn được trỏ bởi DS:SI đích được trỏ bởi ES:DI. Sau khi copy một byte, SI và DI được tự động tăng/giảm 1 tuỳ thuộc cờ DF là UP/DN. Lệnh MOVSB thường được sử dụng với lệnh REP để copy một dãy CX bytes. | ret Chu_hoa Endp ------------- Chu_thuong mov cmp jb cmp ja add Boqua ret Chu_thuong ------------- Code Ends Proc al si al A Boqua al Z Boqua byte ptr si 32 Endp End Start một chuỗi MOVSB MOVe String Byte-by - Byte Mô tả MOVSB copy từng byte một từ một địa chỉ nguồn tới địa chỉ đích. Nguồn được trỏ bởi DS SI đích được trỏ bởi ES DI. Sau khi copy một byte SI và DI được tự động tăng giảm 1 tuỳ thuộc cờ DF là UP DN. Lệnh MOVSB thường được sử dụng với lệnh REP để copy một dãy CX bytes. Ví dụ REP MOVSB lặp lại lệnh MOVSB CX lần b. Lưu chuỗi Lệnh STOSB STOre Byte in AL at String lưu chuỗi các byte Lệnh này là lệnh copy nội dung của AL vào địa chỉ nhớ do ES DI trỏ tới sau đó DI tăng giảm 1 tuỳ theo cờ DF bằng UP DN. c. Lệnh Duyệt chuỗi Scan String Lệnh SCASB Duyệt một chuỗi các byte Lệnh SCASB lấy AL trừ đi toán hạng đích là byte được trỏ bởi ES DI. Kết quả của phép trừ không được giữ lại chỉ có các cờ được thiết lập. Sau đó DI được giảm Tăng 1 tuỳ theo cờ DF bằng UP DN. Lệnh SCASB thường được sử dụng cùng REPE REPNZ REPZ để lặp lại lệnh SCASB CX lần hoặc lặp tới khi nó phát hiện thấy 2 toán hạng là bằng khác. Tường tự với lệnh SCASB là SCASW khác là thao tác với toán hạng word Sau đây ta xét một ví dụ về Chuẩn hoá xâu Các việc cần làm là - Xử lý các dấu cách nếu dấu có nhiều dấu thì chỉ lấy lấy một dấu cách - Ký tự đầu của xâu thì viết hoa Sau dấu cách thì viết hoa các khác thì viết thường. Chuan hoa xau Code segment assume cs Code ds Code org 100h Start Jmp Begin nguon db Nhap xau vao xuongd db 0ah 0dh ktao db 254 0 254 dup 0 inxau db 254 dup 0 kq db Ket qua sau chuan hoa la Begin Call CLRSCR mov ah 09h mov dx offset nguon int 21h mov ah 0ah mov dx offset ktao int 21h mov ah 09 mov dx offset .