字串處理指令:lods: 從[esi]傳給累加器,根據df和操作字長調整esi
stos: 從累加器傳給[edi],根據df和操作字長調整edi
movs: 直接從[esi]傳到[edi],,根據df和操作字長調整esi和edi
scas: 累加器與[edi]相減比較,不影響運算元,影響標誌位
cmps: [esi]與[edi]相減比較,不影響運算元,影響標誌位
重複字首:1.字串拼接rep: 若ecx=0,結束重複,否則ecx減1,重複操作
repz/repe: 若ecx=0或zf=0,結束重複,否則ecx減1,重複操作
repnz/repne: 若ecx=0或zf=1,結束重複,否則ecx減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:3.求s1中首個出現在s2中的字元的位置32-47 標點1區(32是空格)
58-64 標點2區
91-96 標點3區
123-126 標點4區
48-57 數字
65-90 大寫字母
97-122 小寫字母
0-31 是列印控制
127是刪除
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時,需要知道棧頂元素....