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

 用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         

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值