《最新单片机第三次课幻灯片》由会员分享,可在线阅读,更多相关《最新单片机第三次课幻灯片(22页珍藏版)》请在金锄头文库上搜索。
1、单片机第三次课一、汇编语言的语法格式 1 1、汇编语言语句格式、汇编语言语句格式 标号:标号: 指令指令 ;或;或/ 程序调用的过程都伴随着参数的传递,程序调用的过程都伴随着参数的传递,通通常来说,参数的传递有以下几种情况:常来说,参数的传递有以下几种情况:1)1)通过寄存器传递通过寄存器传递;2)2)2) 2) 通过变量传递;通过变量传递; 3)3) 3) 3) 通过堆栈传递。通过堆栈传递。 在在C C 函数与汇编函数的相互调用过程中,主要通过函数与汇编函数的相互调用过程中,主要通过堆栈来传递参数,而在函数返回时则采用寄存器来堆栈来传递参数,而在函数返回时则采用寄存器来传递返回值。在主程序把
2、要传递的参数压入堆栈,传递返回值。在主程序把要传递的参数压入堆栈,然后调用子程序。子程序从堆栈中寻找需要的参数然后调用子程序。子程序从堆栈中寻找需要的参数进行处理。当子程序返回后,主程序需要进行弹栈进行处理。当子程序返回后,主程序需要进行弹栈处理,以恢复参数压入堆栈前的堆栈状态。处理,以恢复参数压入堆栈前的堆栈状态。 堆栈在函数传递方面的应用l堆栈的含义堆栈是在内存RAM区专门开辟出来的按照“先进后出”原则进行数据存取的一种工作方式。l堆栈的作用主要用于子程序调用及返回和中断处理断点的保护及返回。实例分析 lC程序中调用汇编函数 l汇编程序中调用C函数(过程) C和汇编的函数相互调用 l函数调
3、用协议 指不同的子程序代码之间形成的一种握手通讯接口,并完成一个子程序到另外一个子程序的参数传递和控制,以及定义出子程序调用与子程序返回值的规则 函数调用协议 l参数传递 参数以相反的顺序(从右到左)被压入栈中 l堆栈维护及其排列 各参数和局部变量在堆栈中的排列如图 l函数返回值 16 位的返回值存放在寄存器R1 中;32 位的返回值存入寄存器对R1、R2中。其中低字在R1 中,高字在R2 中 C程序中调用汇编函数C语言汇编语言汇编程序中调用C函数(过程).external _addnum.public _main_main:R1=55; /第一个参数R2=20;/第二个参数PUSH R1,R
4、2 TO SP;CALL _addnum;R3=R1;POP R1,R2 FROM SPLOOP:R1=0;JMP LOOPint addnum(int m,int n)int j=0;int i=0;for (i=1;i=m;i+)j=j+n;return(j);lC程序在调用汇编函数时的参数传递是将参数按照从右到左的顺序依次压入堆栈,然后才将PC和SR寄存器的值压入堆栈 l汇编程序调用C函数时的参数传递也是按照从右到左的顺序需要编程者自己在汇编程序里面将参数入栈,最先入栈的参数是C函数最右边的参数,最后入栈的参数才是C函数最左边的参数 三、 SPCE061A IDE 的项目组织结构四、源程序的汇编与链接 .define xxx xxxx.public _main;_main:xxxRxLoop: Jmp loop结束语结束语谢谢大家聆听!谢谢大家聆听!22