00401000 > ba 90204000 mov edx, 00402090 ;源位址
0040100e b9 01000000 mov ecx, 0x1 :迴圈次數為1
00401013 f3:a4 rep movs byte ptr es:[edi], byte ptr [esi] :位元組為單位傳遞
00401015 8036 00 xor byte ptr [esi], 0x0 ;如果為0就是字串結尾
00401018 ^ 75 f4 jnz short 0040100e ;判斷是否繼續傳送字串
0040101a 90 nop
指標a的內容存放到指標b下
mov esi,a //存放指標a的首位址
mov edi,b //存放指標b的首位址
mov ecx,1 //迴圈次數
rep movs byte ptr es:[edi],byte ptr [esi] ;以位元組問單位傳遞
xor byte ptr [esi],0 ;如果源位址為0就跳出迴圈,不傳送
jnz cycle
指標a的內容存放到指標b下
mov esi,a
mov edi,b
mov ecx,5
rep movs byte ptr es:[edi],byte ptr [esi]
源位址傳送目的位址
00401000 > b9 05000000 mov ecx, 0x5 ;次數
00401005 be 00104000 mov esi, 00401000 ;源位址
0040100f fc cld
00401010 f3:a4 rep movs byte ptr es:[edi], byte ptr [esi]
00401012 90 nop
00401000 > b8 02000000 mov eax, 0x2 ;內容
00401005 90 nop
00401006 90 nop
00401007 bf 00204000 mov edi,0040200 ;目的位址
0040100c b9 06000000 mov ecx, 0x6 ;次數
00401011 fc cld
00401012 f3:aa rep stos byte ptr es:[edi]
查詢字元:
00401000 > b9 00001000 mov ecx, 100000 ; 需要查詢字元的長度
00401005 b0 8b mov al, 8b ; 查詢的字元
00401007 bf 10204000 mov edi, 00402010 ; 需要查詢字元的首位址
0040100c f2:ae repne scas byte ptr es:[edi] ; 迴圈查詢字元
0040100e ^ 75 f0 jnz short ; 找不到返回繼續查詢
00401010 be 00001000 mov esi, 100000 ; 總長度
00401015 2bf1 sub esi, ecx ; 總長度減去剩下的數字就是偏移量+首位址了-1
00401017 90 nop
00401018 90 nop
指標a開始的size大小記憶體移動到b處
mov esi,a
mov edi,b
mov ecx,size
cldrep movsb //rep movs byte ptr es:[edi], byte ptr [esi]
指標a開始的size大小的記憶體填充eax的值
xor eax,eax
mov edi,a
mov ecx,size
cldrep stosb //rep stos byte ptr es:[edi]
交換字串
include include using namespace std void swap char a,char b 傳指標引用,傳入的是實參而不是形參,所以能夠實現交換 intmain 寫這個還發現乙個鬼畜的事情,vs2017不支援 char ap hey 這種寫法,看其他博主也遇到了這個問題,...
字串的賦值
字串表示方法 char str 20 char ch 賦值操作 1 定義的時候賦值 char str 20 what pity char ch how are you 2 用字串複製函式 strcpy str,what pity 但是對於用指標表示的字串變數用複製函式賦值會出現問題,需要先申請記憶體...
查詢指定檔案中特定字串賦值
include include include include include include include include static unsigned long get file size const char path return 1 static unsigned int print ...