1.字符串传送指令
指令格式:
① MOVS OPD,OPS
② MOVSB
③ MOVSW
④ MOVSD
例:在内存中,一个英文字母表存放在数据段DS,编写程序使之移动到附加数据段ES,并将移动到附加数据段的英文字母显示出来。
data segment ;数据段,提供源串。
src db 'abcdefghijklmnopqrstuvwxyz$'
data ends
edata segment ;附加数据段,提供目的地址。
dest db 27 dup(?)
edata ends
code segment ’code’
assume cs:code,ds:data,es:edata
start: mov ax,data
mov ds,ax
mov ax,edata
mov es,ax
cld ;设置传送方向
mov cx,27 ;设置重复次数
lea si,src
lea di,dest
rep movsb ;重复传送
mov ah,9 ;利用9号中断显示目的串内容
lea dx,dest ;变量名dest的偏移地址→dx
int 21h
mov ah,2 ; 利用2号中断显示回车换行
mov dl,0dh 0dh 回车:
int 21h
mov dl,0ah 0ah 换行:
int 21h
mov ah,4ch
int 21h
code ends
end start
2.字符串比较指令
指令格式:
① CMP OPD,OPS
② CMPSB ;字节串比较
③ CMPSW ;字串比较
④ CMPSD ;双字串比较
3. 字符串搜索指令
指令格式:
① SCAS OPD
② SCASB ;字节串搜索
③ SCASW ;字串搜索
④ SCASD ;双字串搜索
4. 字符串装入指令
指令格式:
① LODS OPS
② LODSB ;从源地址中取字节串
③ LODSW ;从源地址中取字串
④ LODSD ;从源地址中取双字串
5. 字符串存储指令
指令格式:
① STOS OPD
② STOSB ;向目的地址中存字节串
③ STOSW ;向目的地址中存字串
④ STOSD ;向目的地址中存双字串
例:下面的程序是将字符串“Readme”从以SOUR为首地
址的内存单元传送到以DEST为首地址的内存单元。具体作法是用LODS
指令每次从SOUR串中取出一个字符到AL再用STOS指令每次将AL的
值存入目的串DEST中,直到传送完毕。
Data segment
sour db 'readme'
n=$-sour
dest db 6dup(0)
data ends
code segment 'code'
assume cs:code,ds:data,es:data
start:mov ax,data
mov ds,ax
mov es,ax
mov cx,n
lea si,sour ;源串首地址的偏移地址→si
lea di,dest ;目的串首地址的偏移地址→di
cld ;置df=0,增址传送
cycle:lodsb ;从源串取出一个字符到al
stosb ;将al的值存入目的串
loop cycle ;cx←cx-1,如果cx不等于0则转移到cycle
mov ah,4ch
int 21h
code ends
end start
閱讀更多 又將如何存在 的文章