彙編學習 3

2021-08-28 14:23:14 字數 1834 閱讀 4933

字串處理指令:

lods: 從[esi]傳給累加器,根據df和操作字長調整esi

stos: 從累加器傳給[edi],根據df和操作字長調整edi

movs: 直接從[esi]傳到[edi],,根據df和操作字長調整esi和edi

scas: 累加器與[edi]相減比較,不影響運算元,影響標誌位

cmps: [esi]與[edi]相減比較,不影響運算元,影響標誌位

重複字首:

rep: 若ecx=0,結束重複,否則ecx減1,重複操作

repz/repe: 若ecx=0或zf=0,結束重複,否則ecx減1,重複操作

repnz/repne: 若ecx=0或zf=1,結束重複,否則ecx減1,重複操作

1.字串拼接

char s1[81], s2[81], s3[81];

printf("s1 = ");

scanf("%s", s1);

printf("s2 = ");

scanf("%s", s2);

_asm

printf("s1 + s2 = %s\n", s3);

2.消除字串標點

char s1[81], s2[81];

printf("s = ");

scanf("%s", s1);

_asm

printf("消除標點後s = %s\n", s2);

return;

_asm

note:

32-47 標點1區(32是空格)

58-64 標點2區

91-96 標點3區

123-126 標點4區

48-57 數字

65-90 大寫字母

97-122 小寫字母

0-31 是列印控制

127是刪除

3.求s1中首個出現在s2中的字元的位置

int result;

char s1[81], s2[81];

printf("s1 = ");

scanf("%s", s1);

printf("s2 = ");

scanf("%s", s2);

_asm

printf("s1中首個出現在s2的字元位置為 %d\n", result);

4.求s1首次出現s2的位置

int result;

char s1[81], s2[81];

printf("s1 = ");

scanf("%s", s1);

printf("s2 = ");

scanf("%s", s2);

_asm

printf("s1中首次出現s2位置為 %d\n", result);

5.生成由n個字元c形成的字串

char c;

int n;

char s[81];

printf("ch = ");

scanf("%c", &c);

printf("n = ");

scanf("%d", &n);

_asm

printf("生成的字串為: %s\n", s);

return;

_asm

內聯彙編關鍵字與外部定義的變數重名時,會優先認定為前者

彙編學習(3)x86常用彙編指令學習

剛學習彙編,菜鳥乙個。記下學習筆記 mov指令 mov 目標運算元,源運算元 類似c語言的等於號 拷貝 源運算元 到 目標運算元。例如mov eax,ebx 前後的位數 寬度 必須是相同的,8位對應8位,16對應16,32位對應32位。彙編有三種運算元 暫存器運算元,儲存器運算元,立即數。暫存器運算...

彙編學習(3)暫存器

暫存器 cpu的構成 乙個典型的cpu是由運算器 控制器 暫存器等器件構成,這些器件靠內部匯流排相連。各器件的聯絡 運算器進行資訊處理 暫存器進行資訊儲存 控制器控制各器件進行工作 內部匯流排連線各種器件。通用暫存器 ax bx cx dx這4個暫存器通常用來存放一般性的資料,被稱為通用暫存器。80...

組合語言學習筆記 3

35.棧 先進後出,涉及到入棧 push 和出棧 pop 兩個概念.a push ax 表示將ax中的資料送入棧中 b pop ax 表示從棧頂取出資料送入ax 36.8086cpu的入棧和出棧操作都是以字為單位進行的.那麼如何知道哪一段被當作棧在使用.how.push和pop時,需要知道棧頂元素....