Tải bản đầy đủ (.pdf) (5 trang)

Quá trình hình thành giáo trình hướng dẫn sử dụng các hàm có sẵn trong win p4 docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (274 KB, 5 trang )

ret
Chu_hoa Endp
;
Chu_thuong Proc
mov al,[si]
cmp al,"A"
jb Boqua
cmp al,"Z"
ja Boqua
add byte ptr [si],32
Boqua:
ret
Chu_thuong Endp
;
Code Ends
End Start

a.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.
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.asm
;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 xuongd
int 21h
mov si,offset ktao+2
mov di,offset inxau
xor cx,cx
mov cl,[si]
For:
mov al,[si]
cmp al,13
je bang_Enter_thi_in_ra
cmp al,' '
jne khac_dau_cach
mov al,[si+1]
cmp al,' '
je Dau_cach_tiep
movsb
jmp For

Dau_cach_tiep:
inc si
jmp For
khac_dau_cach:
mov al,[si-1]
cmp al,' '
je Dau_cach
mov al,[si+1]
jmp Tiep
Dau_cach:
mov al,[si+1]
call Chu_hoa
movsb
jmp For
Tiep:
call Chu_thuong
movsb
jmp For

bang_Enter_thi_in_ra:
mov byte ptr[di],'$'
mov si,offset inxau
mov al,[si]
cmp al,' '
jne Nhay
inc si
Nhay:
call Chu_hoa
mov ah,09
mov dx,offset kq

int 21h
mov ah,09
mov dx,si
int 21h

×