欢迎来到天天文库
浏览记录
ID:33507107
大小:500.17 KB
页数:16页
时间:2019-02-26
《80x86汇编语言串处理指令(3)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、六串处理指令用途串处理指令主要用于串的插入搬迁比较扫描或查找数据段附加段低地址SI®¬DISI®¬DI高地址操作数类型操作数为存储器中的数据串可以是字节字或双字386及后继机型—白燕—串操作指令的基本组成重复前缀操作+串原语操作例REPMOVSB重复前缀串原语语句串原语语句可以单独出现在程序中仅完成一次操作与重复前缀联用可以完成一串数据的操作串原语语句有如下形式MOVS串传送CMPS串比较SCAS串扫描LODS从串取STOS存入串INS串输入OUTS串输出—白燕—1串传送原语操作格式MOVSDSTSRC据操作数的类型确定MOVSB字节字节字或双字
2、操作MOVSW字MOVSD双字(386及后继机型指令)所有的串操作操作数是已经约定好的即16位操作数源:DS[SI]目的ES[DI]32位操作数源:DS[ESI]目的ES[EDI]例MOVSB实际上完成MOVSESBYTEPTR[DI]DS[SI]其作用只是供汇编程序作类型检查串原语不允许其它寻址方式—白燕—数据段DS附加段ES低地址SI®¬DISI®¬DI高地址—白燕—1串传送原语操作操作源操作数送入目的操作数根据方向标志DF修改地址指针DF=0指针增加DF=1指针减少指针的增减量与操作数的类型有关具体如下字节源地址指针源地址指针1目的地址指针
3、目的地址指针1字地址指针2双字地址指针4—白燕—假设有指令如下MOVSBMOVSW指令执行前SI=0100HDI=0200HDF=0DS和ES已经赋好值数据段DS附加段ESSI=0100H®05H¬DI08H09HSI=0103H®¬DI指令执行后SI=0101HDI=0201HSI=0103HDI=0203H—白燕—串原语操作要求源串段值在DS中目的串在ES中但可以通过使用段跨越前缀修改源串所使用的段寄存器例MOVSESBYTEPTR[DI]ES[SI]LODSSRC2取串原语操作LODSBLODSW操作LODSD(386及后继机型指令)字节:
4、AL源操作数字AX源操作数源操作数在哪里双字:EAX源操作数字节源地址指针源地址指针1字地址指针2双字地址指针4—白燕—例写出与LODSW等价的指令序列解DF=0时MOVAX[SI]INCSIINCSIDF=1时MOVAX[SI]DECSIDECSI—白燕—3存串原语操作STOSDSTSTOSBSTOSWSTOSD(386及后继机型指令)操作字节:AL目的操作数字AX目的操作数双字:EAX目的操作数字节目的地址指针目的地址指针1字地址指针2双字地址指针4放入输入/输出4串输入原语操作INS程序设计中讲解5串输出原语操作OUTS以上指令均不影响条件
5、码—白燕—例阅读如下程序段试分析该程序完成什么功能CLDCF=0PUSHDSPOPESMOVSI1000HMOVDI2000HMOVCX100NEXTLODSBMOVSBSTOSBLOOPNEXTLODSBSTOSB执行100次该程序段将当前数据段中偏移1000H开始的100个字节的数据传送到从偏移2000H开始的单元中—白燕—6串比较原语操作CMPSSRCDSTCMPSBCMPSWCMPSD(386及后继机型指令)该指令所完成的第一步操作与串传送指令不同:据源操作数和目的操作数之差设置标志寄存器的值.7串扫描原语操作SCASDST这两条指令SC
6、ASB影响条件码SCASWSCASD(386及后继机型指令)该指令所完成的第一步操作是据AL或AX或EAX与目的操作数的差值设置标志寄存器的值.—白燕—串操作指令的基本组成重复前缀操作+串原语操作°重复前缀操作REPREPE/REPZREPNE/REPNZ作用与串原语操作一起使用控制执行串操作的结束条件格式结束条件REP串原语操作计数寄存器=0REPE/Z串原语操作计数寄存器=0或ZF=0REPNE/NZ串原语操作计数寄存器=0或ZF=1操作判断结束条件满足否满足则退出否则计数寄存器计数寄存器1执行其后的串原语指令重复—白燕—数据段DS附加段ES
7、低地址¬DISI®SI®¬DI高地址串原语操作和重复前缀操作合用可以完成一串数据的操作—白燕—计数寄存器隐含在CX或ECX中计数寄存器在使用16位地址偏移指针的情况下以CX为计数器在采用32位地址偏移的扩展情况下以ECX为计数器由于在实方式下通常采用16位指针所以一般仍以CX为计数器CLDCF=0PUSHDSPOPESMOVSI1000HMOVDI2000HMOVCX100NEXTLODSBSTOSBREPMOVSBLOOPNEXTLODSBSTOSB执行100次—白燕—°重复前缀的使用规则REP与MOVSSTOSLODSINSOUTS合用REP
8、E/REPZREPNE/REPNZ与CMPSSCAS合用°使用串操作的步骤把存放于数据段中的源串首址若反方向则是末地址放入源变址寄存器中
此文档下载收益归作者所有