字符与字符串

Tutorial: C与汇编 Category: C语言 Published: 2026-04-07 13:58:26 Views: 20 Likes: 0 Comments: 0
1. ASCII码
int i = 'A'; // char 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