字串賦值,查詢,交換

2021-06-28 22:04:10 字數 2527 閱讀 7029

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 ...