汇编JNG REPE和REPNE的问题?
REPE和REPNE的问题?
1. Repe和repne都是汇编语言。
2. Repe/repz等于/zero时重复字符串操作
格式:Repe(或repz)string primitive
其中string primitive可以是CMPs或SCAs指令。
要执行的操作:
1)如果(Cx)=0或ZF=0(即比较结果不等于两个操作数)则退出,否则执行下一步
2)(Cx)
3)执行以下字符串指令
4)重复1)~3)
3,repne/repnz在不等于或不为零时重复字符串操作
格式:repne(或repnz)字符串原语
执行与repe相同的操作,但退出条件(Cx=0)或ZF=1除外。
8086汇编语言中如何清空缓冲区里的字符串?
最简单的方法是将一堆零发送到该缓冲区。通常,CX被设置为缓冲区的长度,Al被清除,然后使用重复的字符串操作指令来清除缓冲区:MOV,CX,len,缓冲区的长度(以字节为单位),lea,Di,str。缓冲区的第一个地址被发送到Di寄存器XOR Al,Al Al,reset repz stosb,并重复,直到CX等于0。如果缓冲区很大,可以向它发送字。这样可以加快运行速度:mov BX,len buffer length mov Cl,2 SHR BX,Cl buffer length除以2,将缓冲区的字长mov CX,BX发送到CX计数器lea di,stru。buff string buffer的第一个地址发送到di寄存器XOR ax,ax寄存器reset repz stosw,并重复到CX等于0。有时需要考虑缓冲区是奇数的,也就是说,在缓冲区执行上诉代码之后,仍然有一个字节没有被处理。这时,你需要多加几句话。XOR DX,DX mov BX,len test BX,
1 JZ L1 mov DX,0ffh;标记以指示字符串是奇数L1:mov Cl,
2 SHR BX,将Cl buffer的长度除以2以得到缓冲区mov CX,BX的字长度并将其发送到CX计数器lea Di,strèbuff string buffer的第一个地址发送到Di寄存器XOR ax,ax寄存器重置repz stosw并重复,直到CX等于0 CMP DX,0ffh JNZ退出出口:。。。。。。有许多其他方法,但这是最有效的一种。其他使用循环指令或CMP-CX、0、JNZ-XX的方法速度较慢。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。