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