资源描述:
《串操作类指令.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、3.3.4串操作类指令1.串操作指令特点用一条指令实现对一串数据的操作;源操作数和目标操作数都在存储器中;共同点:源操作数由DS:SI指定;目标操作数由ES:DI指定。串长:CX自动修改地址指针:SI和DI重复操作前缀无条件REP;CX≠0重复有条件REPE/REPZ;CX≠0且ZF=1重复REPNE/REPNZ;CX≠0且ZF=0重复加重复操作前缀后串操作执行动作:1.执行规定动作2.修改SI、DI3.CX-14.根据ZF,决定是否重复执行1.串传送指令格式1:MOVSB操作:(ES:DI)←(DS:SI)字节传送每执行一次串传送操作
2、,SI±1,DI±1。DF=0时+1,DF=1时-1。格式2:MOVSW操作:(ES:DI)←(DS:SI)字传送每执行一次串传送操作,SI±2,DI±2。DF=0时+2,DF=1时-2。1.串传送指令REPMOVSBREPMOVSW字符或数据的个数预先放在CX寄存器中;每执行一次操作,CX自动减1,直到CX=0串操作自动停止。1、串传送指令DS:SIES:DIDS:SIES:DIDS:SIES:DI1.串传送指令例如:将源串STAR中的100个字节数据传送到目标串NEXT中。LEASI,STARLEADI,NEXTMOVCX,100C
3、LDMOVSBMOVSB……MOVSBLEASI,STARLEADI,NEXTMOVCX,100CLDREPMOVSB例1.将2000H:1200H地址开始的100字节传送到6000H:0000H开始的内存单元去MOVAX,2000HMOVDS,AXMOXAX,6000HMOVES,AXMOVSI,1200HMOVDI,0000HMOVCX,100CLDREPMOVSBHLT格式1:CMPSB操作:(ES:DI)-(DS:SI)字节比较每执行一次串比较操作,SI±1,DI±1。DF=0时+1,DF=1时-1。比较后影响标志ZF。2.串比
4、较指令格式2:CMPSW操作:(ES:DI)-(DS:SI)字比较每执行一次串比较操作,SI±2,DI±2。DF=0时+2,DF=1时-2。[REPZ/REPNE]CMPSB[REPNZ/REPE]CMPSWREPE相等时继续寻找,直到寻找到第一个不相等的字符或寻找完所有的字符(CX=0)。REPNE不相等时继续寻找,直到寻找到第一个相等的字符或寻找完所有的字符(CX=0)。CX是否为零不影响ZF状态例2.比较两个字符串是否相同,并找出其中第一个字符不相等的地址,将该地址送BX,不相等的字符送AL,两个字符串的长度均为200个字节,M1
5、为源串首地址,M2为目标串地址。LEASI,M1LEADI,M2MOVCX,200CLDREPECMPSBJZSTOPDECSIMOVBX,SIMOVAL,[SI]STOP:HLT3.串装入指令格式:LODSBAL←(DS:SI)LODSWAX←(DS:SI)功能:将位于DS段SI所指的存储单元的内容取到AL或AX中。用LODSB时,每次取一个字节,取完后,地址自动加1或减1;用LODSW时,每次取一个字,取完后,地址自动加2或减2。3.串装入指令该指令一般不用重复前缀,否则,AL或AX中的内容会被后一次操作覆盖,最后只能得到内存中字符
6、串的最后一个字节或字。ALLODSBDS:SIDS:SIDS:SIDS:SI4.串存储指令格式:[REP]STOSB(ES:DI)←AL[REP]STOSW(ES:DI)←AX功能:把AL或AX中的数据存放到位于ES段DI所指的存储单元中,并自动修改地址指针。例如:要对附加段中从MESS2开始的50个连续的内存字节单元进行清0操作,可用下列程序段实现:LEADI,MESS2MOVAL,00HMOVCX,50REPSTOSB把6000H:1200H单元开始的100个字存储单元内容清零。MOVAX,6000HMOVES,AXMOVAX,12
7、00HMOVDI,AXMOVCX,100CLDMOVAX,0REPSTOSWHLT5.串扫描指令格式:[REPZ/REPNZ]SCASB操作:AL-(ES:DI)格式:[REPE/REPNE]SCASW操作:AX-(ES:DI)将AL或AX的数据与位于ES段DI指针所指的内存单元的数据相比较;比较结果不改变目标操作数,只影响标志位。在ES段中从2000H单元开始存放了10个字符,寻找其中有无字符“A”,若有则记下搜索次数(次数放在DATA1单元),并记下存放“A”的地址(地址放在DATA2单元)。MOVDI,2000HMOVBX,DIM
8、OVCX,0AHMOVAL,’A’CLDREPNZSCASBJZFOUNDMOVDI,0JMPDONEFOUND:DECDIMOVDATA2,DIINCDISUBDI,BXDONE:MOVDATA1,DI