?? asslandat97.dat
字號(hào):
重復(fù)前綴的說明
在串操作指令前加上重復(fù)前綴,可以對(duì)字符串進(jìn)重復(fù)處理。由于加上重復(fù)前綴后,對(duì)應(yīng)的指令代碼是不同的,所以指令的功能便具有重復(fù)處理 的功能,重復(fù)的次數(shù)存放在CX寄存器中。
重復(fù)前綴形式有:REP ;CX<>0,重復(fù)執(zhí)行字符串指令
REPZ/REPE ;CX<>0,且ZF=1重復(fù)執(zhí)行字符串指令
REPNZ/REPNE ;CX<>0,且ZF=0重復(fù)執(zhí)行字符串指令
REP與MOVS或STOS串操作指令相結(jié)合使用,完成一組字符的傳送或建立一組相同數(shù)據(jù)的字符串。
REPZ/REPE常用與CMPS串操作指令結(jié)合使用,可以完成兩組字符串的比較。當(dāng)串未結(jié)束(CX)<>0且當(dāng)對(duì)應(yīng)串元素相同(ZF=1)時(shí),繼續(xù)重復(fù)執(zhí) 行字符串指令。它可用來判定兩字符串是否相同。
REPZ/REPE常與SCAS指令結(jié)合使用,可以完成在一個(gè)字符串中搜索一個(gè)關(guān)鍵字。只要當(dāng)字符串未結(jié)束(CX<>0)且當(dāng)關(guān)鍵字與元素相同(ZF=1) 時(shí),繼續(xù)重復(fù)執(zhí)行串搜索指令,用于在字符串中查找與關(guān)鍵字不相同的數(shù)據(jù)的位置。
REPNZ/REPNE與CMPS指令結(jié)合使用,表示當(dāng)串未結(jié)束(CX=1)且當(dāng)對(duì)應(yīng)串元素不相同(ZF=0)時(shí),繼續(xù)重復(fù)執(zhí)行串比較指令。它可在兩字符串 中查找相同數(shù)據(jù)的位置。
REPNZ/REPNE與SCAS指令結(jié)合使用,表示串未結(jié)束(CX=1)且當(dāng)關(guān)鍵字與串元素不相同(ZF=0)時(shí),繼續(xù)重復(fù)執(zhí)行串搜索指令。它可用來在字 符串中查找關(guān)鍵字相同的的數(shù)據(jù)位置。
重復(fù)前綴應(yīng)用的程序舉例如下:
例1 對(duì)兩個(gè)字符串STR1與STR2進(jìn)行比較
MOV SI,OFFSET STR1
MOV DI,OFFSET STR2
MOV CX,COUNT ;COUNT為串長度
CLD
REPZ CMPSB
JNZ NEQU ;串不相同,送0FFH標(biāo)志
MOV AL,0 ;串相同,送0FFH標(biāo)志
JMP OVR
NEQU:MOV AL,0FFH
OVR:MOV RESULT,AL ;將比較結(jié)果送RESULT
HLT
例2 字符串中搜索關(guān)鍵字,記下搜索的次數(shù)和關(guān)鍵字在串中的位置
CLD
MOV DI,OFFSET BLOCK ;DI為目的串指針
MOV CX,COUNT ;CX為串長度
MOV AL,CHAR ;AL中為搜索的關(guān)鍵字
REPNE SCASB ;重復(fù)搜索關(guān)鍵字
JZ FOUND ;找到,轉(zhuǎn)FOUND
MOV DI,0 ;未找到,退出程序
JMP DONE
FOUND:DEC DI ;DI為關(guān)鍵字的位置
MOV POINTER,DI ;保存關(guān)鍵字的位置
MOV BX,OFFSET BLOCK
SUB DI,BX ;DI中為查找的次數(shù)
MOV POINTER+2,DI ;保存搜索次數(shù)
DONE:HLT
注意:若找到該關(guān)鍵字,由于DI是自增的,這時(shí)DI已經(jīng)指向關(guān)鍵字的下一個(gè)字符,故DI減1才是真正關(guān)鍵字在字符串的位置。當(dāng)前關(guān)鍵字的位 置減去串首址,即得到搜索的次數(shù)。
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -