tc2.0环境下的C语言研究-变量与参数返回值

本文通过分析tc2.0环境下C语言程序的汇编代码,探讨了全局变量、局部变量、参数及函数返回值的存储位置和生命周期。全局变量存储于数据段,局部变量和参数存储于栈段,返回值存储于AX寄存器。同时,文章解释了静态变量、栈变量和堆变量的存储特点和生命周期。
摘要由CSDN通过智能技术生成

 用debug对以下程序编译、连接后的代码进行研究,回答相关问题。
unsigned int n;
void f1();
int f2(int,int);
void far f3();
main(){n=0;f1();n=f2(1,2);f3();}
void f1(){n=1;}
int f2(int a,int b){int c;c=a+b;return c;}
void far f3(){n=10;}
汇编代码如下:

-u cs:1fa
0CBC:01FA C706A6010000 MOV WORD PTR [01A6],0000
0CBC:0200 E81600 CALL 0219          //0218处ret返回值后的语句即为全局变量n赋值为1;
0CBC:0203 B80200 MOV AX,0002    //n=f2(1,2);参数从右向左依次入栈
0CBC:0206 50 PUSH AX
0CBC:0207 B80100 MOV AX,0001
0CBC:020A 50 PUSH AX
0CBC:020B E81200 CALL 0220
0CBC:020E 59 POP CX
0CBC:020F 59 POP CX
0CBC:0210 A3A601 MOV [01A6],AX
0CBC:0213 9A3102BC0C CALL 0CBC:0231  //far标志调用函数时会显示段地址,常用于段间转移
0CBC:0218 C3 RET
0CBC:0219 C706A6010100 MOV WORD PTR [01A6],0001

函数f2的汇编代码如下:

-u
0CBC:0220 55            PUSH    BP
0CBC:0221 8BEC         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值