字符与字符串
Tutorial: C与汇编
Category: C语言
Published: 2026-04-07 13:58:26
Views: 20
Likes: 0
Comments: 0
1. ASCII码
int i = 'A';
putchar(i)
5: int i = 'A';
0040103D mov dword ptr [ebp-10h],41h
2. 打印字符串
printf("Hello World!")
- 汇编
8: printf("Hello World!");
00410684 push offset string "Hello World!" (00426ee8)
00410689 call printf (00410910)
- 内存
00426EE8 48 65 6C 6C 6F 20 57 6F 72 6C 64 Hello World
3. 打印汉字
char buffer1[20] = "Hello World!";
char buffer2[20] = "中国";
8: char buffer1[20] = "Hello World!";
004109BD mov eax,[string "Hello World!" (00427014)]
004109C2 mov dword ptr [ebp-20h],eax
004109C5 mov ecx,dword ptr [string "Hello World!"+4 (00427018)]
004109CB mov dword ptr [ebp-1Ch],ecx
004109CE mov edx,dword ptr [string "Hello World!"+8 (0042701c)]
004109D4 mov dword ptr [ebp-18h],edx
004109D7 mov al,[string "Hello World!"+0Ch (00427020)]
004109DC mov byte ptr [ebp-14h],al
004109DF xor ecx,ecx
004109E1 mov dword ptr [ebp-13h],ecx
004109E4 mov word ptr [ebp-0Fh],cx
004109E8 mov byte ptr [ebp-0Dh],cl
9: char buffer2[20] = "中国";
004109EB mov edx,dword ptr [string "\xd6\xd0\xb9\xfa" (00426eec)]
004109F1 mov dword ptr [ebp-34h],edx
004109F4 mov al,[string "\xd6\xd0\xb9\xfa"+4 (00426ef0)]
004109F9 mov byte ptr [ebp-30h],al
004109FC xor ecx,ecx
004109FE mov dword ptr [ebp-2Fh],ecx
00410A01 mov dword ptr [ebp-2Bh],ecx
00410A04 mov dword ptr [ebp-27h],ecx
00410A07 mov word ptr [ebp-23h],cx
00410A0B mov byte ptr [ebp-21h],cl
-d
00426EEC D6 D0 B9 FA 00 00 00 00 00 00 00 00 中国........
4. 类型转换
char => short => int => float => double
举例:
char x + short y = short z