新版汇编语言程序设计   串操作类指令_第1页
新版汇编语言程序设计   串操作类指令_第2页
新版汇编语言程序设计   串操作类指令_第3页
新版汇编语言程序设计   串操作类指令_第4页
新版汇编语言程序设计   串操作类指令_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

将数据段source指示的100个字节数传送到附加段destination指示的主存区,mov si,offset sourcemov di,offset destinationmov cx,100again:mov al,si mov di,al inc si inc didec cxjnz again;判断传送次数cx是否为0;不为0,则到again位置执行指令;否则,结束,第8讲 串操作类指令,串操作指令是8086指令系统中比较独特的一类指令,采用比较特殊的数据串寻址方式,常用在操作主存连续区域的数据时主要熟悉:MOVS STOS LODSCMPS SCAS REP一般了解:REPZ/REPE REPNZ/REPNE,串数据类型,串操作指令的操作数是主存中连续存放的数据串(String)即在连续的主存区域中,字节或字的序列串操作指令的操作对象是以字(W)为单位的字串,或是以字节(B)为单位的字节串,串寻址方式,源操作数用寄存器SI寻址,默认在数据段DS中,但允许段超越:DS:SI目的操作数用寄存器DI寻址,默认在附加段ES中,不允许段超越:ES:DI每执行一次串操作指令,SI和DI将自动修改:1(对于字节串)或2(对于字串)执行指令CLD后,DF = 0,地址指针增1或2执行指令STD后,DF = 1,地址指针减1或2,串传送MOVS(move string),把字节或字操作数从主存的源地址传送至目的地址,MOVSB;字节串传送:ES:DIDS:SI;SISI1,DIDI1,MOVSW;字串传送:ES:DIDS:SI;SISI2,DIDI2,将数据段source指示的100个字节数传送到附加段destination指示的主存区,mov si,offset sourcemov di,offset destinationmov cx,100;cx传送次数cld;置DF=0,地址增加again:movsb;传送一个字节dec cx;传送次数减1jnz again;判断传送次数cx是否为0;不为0,则到again位置执行指令;否则,结束,例2.52:字串传送,mov si,offset sourcemov di,offset destinationmov cx,50;cx传送次数cld;置DF=0,地址增加again:movsw;传送一个字dec cx;传送次数减1jnz again;判断传送次数cx是否为0;不为0,则到again位置执行指令;否则,结束,串存储STOS(store string),把AL或AX数据传送至目的地址,STOSB;字节串存储:ES:DIAL;DIDI1,STOSW;字串存储:ES:DIAX;DIDI2,将附加段64KB主存区全部设置为0,mov ax,0mov di,0mov cx,8000h;cx传送次数(321024)cld;DF=0,地址增加again:stosw;传送一个字dec cx;传送次数减1jnz again;传送次数cx是否为0,可将CLD改为STD吗? 如何改用STOSB?,串读取LODS(load string),把指定主存单元的数据传送给AL或AX,LODSB;字节串读取:ALDS:SI;SISI1,LODSW;字串读取:AXDS:SI;SISI2,MOVS、STOS、LODS均不影响标志位,示例,数据段DS中有一个数据块,具有count字节,起始地址为block,现在要把其中的正数、负数分开,分别存入同一个段的两个缓冲区,存放正数的起始地址为dplus,存放负数的起始地址为dminus.,mov si,offset blockmov di,offset dplusmov bx,offset dminusmov ax,dsmov es,axmov cx,countcld lodsbtest al,80hjnz minus,stosbjmp againxchg bx,distosbxchg bx,didec cxjnz go_on,go_on:,minus:,again:,串比较CMPS(compare string),将主存中的源操作数减去至目的操作数,以便设置标志,进而比较两操作数之间的关系,CMPSB;字节串比较:DS:SIES:DI;SISI1,DIDI1,CMPSW;字串比较:DS:SIES:DI;SISI2,DIDI2,例2.55:比较数据段中string1字符串和附加段中string2字符串是否相同,相同的将字节变量result置为ffH,不同的话置为0.,mov si,offset string1mov di,offset string2mov cx,countcldcmpsb;比较两个字符jnz unmat;有不同字符,转移dec cxjnz again;进行下一个字符比较mov al,0;字符串相等,设置00hjmp output;转向outputunmat:mov al,0ffh;设置ffhoutput:mov result,al;输出结果标记,again:,串扫描SCAS(scan string),将AL/AX减去至目的操作数,以便设置标志,进而比较AL/AX与操作数之间的关系,SCASB;字节串扫描:ALES:DI;DIDI1,SCASW;字串扫描:AXES:DI;DIDI2,例2.56:在字符串中查找“空格”,mov di,offset stringmov al,20hmov cx,countcldagain:scasb;搜索jz found;为0(ZF=1),发现空格dec cx;不是空格jnz again;搜索下一个字符.;不含空格,则继续执行found:.,重复前缀指令(repeat),串操作指令执行一次,仅对数据串中的一个字节或字量进行操作。但是串操作指令前,都可以加一个重复前缀,实现串操作的重复执行。重复次数隐含在CX寄存器中重复前缀分2类,3条指令:配合不影响标志的MOVS、STOS(和LODS)指令的REP前缀配合影响标志的CMPS和SCAS指令的REPZ和REPNZ前缀,REP重复前缀指令,REP前缀可以理解为:当数据串没有结束(CX0),则继续传送例2.52和例2.53中,程序段的最后3条指令,可以分别替换为:REP MOVSB 和 REP STOSW,REP;每执行一次串指令,CX减1;直到CX0,重复执行结束,重复串传送(例2.52),mov si,offset sourcemov di,offset destinationmov cx,100;cx传送次数cldrep movsb,again:movsb;传送一个字节dec cx;传送次数减1jnz again;判断传送次数cx是否为0;不为0(ZF=0),则转移again位置执行;否则,结束,将数据段source指示的100个字节数传送到附加段destination指示的主存区,重复串存储(例2.53),mov ax,0mov di,0mov cx,8000hcldrep stosw,again:stosw;传送一个字dec cx;传送次数减1jnz again;判断传送次数cx是否为0,将附加段64KB主存区全部设置为0,REPZ重复前缀指令,REPZ/REPE前缀可以理解为:当数据串没有结束(CX0),并且串相等(ZF1),则继续比较,REPZ;每执行一次串指令,CX减1;并判断ZF是否为0,;只要CX0或ZF0,重复执行结束,REPNZ重复前缀指令,REPNZ/REPNE前缀可以理解为:当数据串没有结束(CX0),并且串不相等(ZF0),则继续比较,REPNZ;每执行一次串指令,CX减1;并判断ZF是否为1,;只要CX0或ZF1,重复执行结束,例2.57:比较字符串是否相等,mov si,offset string1mov di,offset string2mov cx,countcldcmpsb;比较两个字符jnz unmat;有不同字符,转移dec cxjnz again;进行下一个字符比较mov al,0;字符串相等,设置00hjmp output;转向outputunmat:mov al,0ffh;设置ffhoutput:mov result,al;输出结果标记,解释,again:,repz cmpsb,重复比较的解释,指令repz cmpsb结束重复执行的情况 ZF0,即出现不相等的字符 CX0,即比较完所有字符:这种情况下,如果ZF0,说明最后一个字符不等;而ZF1表示所有字符比较后都相等,也就是两个字符串相同所以,重复比较结束后,jn

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论