2.Repe/repz等于/zero時重復(fù)字符串操作
成都創(chuàng)新互聯(lián)公司為企業(yè)級客戶提高一站式互聯(lián)網(wǎng)+設(shè)計服務(wù),主要包括成都網(wǎng)站制作、成都做網(wǎng)站、成都App定制開發(fā)、微信小程序、宣傳片制作、LOGO設(shè)計等,幫助客戶快速提升營銷能力和企業(yè)形象,創(chuàng)新互聯(lián)各部門都有經(jīng)驗豐富的經(jīng)驗,可以確保每一個作品的質(zhì)量和創(chuàng)作周期,同時每年都有很多新員工加入,為我們帶來大量新的創(chuàng)意。格式:Repe(或repz)stringprimitive
其中stringprimitive可以是CMPs或SCAs指令。
要執(zhí)行的操作:
1)如果(Cx)=0或ZF=0(即比較結(jié)果不等于兩個操作數(shù))則退出,否則執(zhí)行下一步
2)(Cx)
3)執(zhí)行以下字符串指令
4)重復(fù)1)~3)
3,repne/repnz在不等于或不為零時重復(fù)字符串操作
格式:repne(或repnz)字符串原語
執(zhí)行與repe相同的操作,但退出條件(Cx=0)或ZF=1除外。
8086匯編語言中如何清空緩沖區(qū)里的字符串?最簡單的方法是將一堆零發(fā)送到該緩沖區(qū)。通常,CX被設(shè)置為緩沖區(qū)的長度,Al被清除,然后使用重復(fù)的字符串操作指令來清除緩沖區(qū):MOV,CX,len,緩沖區(qū)的長度(以字節(jié)為單位),lea,Di,str。緩沖區(qū)的第一個地址被發(fā)送到Di寄存器XORAl,AlAl,resetrepzstosb,并重復(fù),直到CX等于0。如果緩沖區(qū)很大,可以向它發(fā)送字。這樣可以加快運行速度:movBX,lenbufferlengthmovCl,2SHRBX,Clbufferlength除以2,將緩沖區(qū)的字長movCX,BX發(fā)送到CX計數(shù)器leadi,stru。buffstringbuffer的第一個地址發(fā)送到di寄存器XORax,ax寄存器resetrepzstosw,并重復(fù)到CX等于0。有時需要考慮緩沖區(qū)是奇數(shù)的,也就是說,在緩沖區(qū)執(zhí)行上訴代碼之后,仍然有一個字節(jié)沒有被處理。這時,你需要多加幾句話。XORDX,DXmovBX,lentestBX,
1JZL1movDX,0ffh;標(biāo)記以指示字符串是奇數(shù)L1:movCl,
2SHRBX,將Clbuffer的長度除以2以得到緩沖區(qū)movCX,BX的字長度并將其發(fā)送到CX計數(shù)器leaDi,strèbuffstringbuffer的第一個地址發(fā)送到Di寄存器XORax,ax寄存器重置repzstosw并重復(fù),直到CX等于0CMPDX,0ffhJNZ退出出口:。。。。。。有許多其他方法,但這是最有效的一種。其他使用循環(huán)指令或CMP-CX、0、JNZ-XX的方法速度較慢。