tc环境下形成exe文件:
main()
{
char * a='a';
char * b="a";
}
debug加载exe文件:
-g 1fa --1fa是main函数的首地址,综合研究讲过。
AX=0000 BX=069C CX=000F DX=4C0E SP=FFEA BP=FFF4 SI=0463 DI=0654
DS=0BCE ES=0BCE SS=0BCE CS=0B77 IP=01FA NV UP EI PL ZR NA PE NC
0B77:01FA 55 PUSH BP
-u 1fa
0B77:01FA 55 PUSH BP
0B77:01FB 8BEC MOV BP,SP
0B77:01FD 83EC04 SUB SP,+04
0B77:0200 C746FC6100 MOV WORD PTR [BP-04],0061 --main函数的局部变量放在栈中([BP-04]),61H是‘a’的ASSIIC码,0194h是字符串“a”的首地址,所以下面用d ds:194能看到字符a。--理解有问题的可以去看汇编语言书最后一部分综合研究。
0B77:0205 C746FE9401 MOV WORD PTR [BP-02],0194
0B77:020A 8BE5 MOV SP,BP
0B77:020C 5D POP BP
0B77:020D C3 RET
0B77:020E C3 RET
0B77:020F 55 PUSH BP
0B77:0210 8BEC MOV BP,SP
0B77:0212 EB0A JMP 021E
0B77:0214 8B1EA001 MOV BX,[01A0]
0B77:0218 D1E3 SHL BX,1
-d ds:194 19f
0BCE:0190 61 00 0E 02-0E 02 0E 02 00 00 00 10 a...........
- |