C51和汇编混合编程.ppt

C51和汇编混合编程.ppt

ID:56527425

大小:182.50 KB

页数:13页

时间:2020-06-27

C51和汇编混合编程.ppt_第1页
C51和汇编混合编程.ppt_第2页
C51和汇编混合编程.ppt_第3页
C51和汇编混合编程.ppt_第4页
C51和汇编混合编程.ppt_第5页
C51和汇编混合编程.ppt_第6页
C51和汇编混合编程.ppt_第7页
C51和汇编混合编程.ppt_第8页
C51和汇编混合编程.ppt_第9页
C51和汇编混合编程.ppt_第10页
资源描述:

《C51和汇编混合编程.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C51和汇编混合编程2021/7/271C语言中嵌入汇编1、在C文件中要嵌入汇编代码片以如下方式加入汇编代码:#pragmaASM;AssemblerCodeHere#pragmaENDASM2、在Project窗口中包含汇编代码的C文件上右键,选择“Optionsfor...”,点击右边的“GenerateAssemblerSRCFile”和“AssembleSRCFile”,使检查框由灰色变成黑色(有效)状态;3、根据选择的编译模式,把相应的库文件(如Small模式时,是KeilC51LibC51S.Lib)加入工程中,该文件必须作为工程的最后文件

2、;2021/7/27C51S.LIB-没有浮点运算的Smallmodel C51C.LIB-没有浮点运算的Compactmodel C51L.LIB-没有浮点运算的Largemodel C51FPS.LIB-带浮点运算的Smallmodel C51FPC.LIB-带浮点运算的Compactmodel C51FPL.LIB-带浮点运算的Largemodel若未添加此库文件,则会提示”UNRESOLVEDEXTERNALSYMBOL”警告。2021/7/27示例#includevoidmain(void){P2=1;#pragmaasmMOVR

3、7,#10DEL:MOVR6,#20DJNZR6,$DJNZR7,DEL#pragmaendasmP2=0;}2021/7/27Voidreset_data(void){Asmmovr0,#0dfhAsmdo_resetdata;Asmmov@r0,#00hAsmdjnzr0,do_resetdatareturn}Voidreset_data(void){asm{movr0,#0dfhdo_resetdata;mov@r0,#00hdjnzr0,do_resetdata}return}2无参数传递的函数调用***********************exa

4、mple.c*********************externvoiddelay100();main(){delay100;}***********************example.a51*******************?PR?DELAY100SEGMENTCODE;//在程序存储区中定义段PUBLICDELAY100;     //声明函数RSEG?PR?DELAY100;   //函数可被连接器放置在任何地方DELAY100:MOVR7,#10DEL:MOVR6,#20DJNZR6,$DJNZR7,DELRETEND2021/7/27?P

5、R?DELAY100SEGMENTCODE;作用是在程序存储区中定义段,DELAY100为段名,?PR?表示段位于程序存储区内PUBLICDELAY100;作用是声明函数为公共函数RSEG?PR?DELAY100;表示函数可被连接器放置在任何地方,RSEG是段名的属性段名的开头为PR,是为了和C51内部命名转换兼容,命名转换规律如下:CODE-?PR?XDATA-?XDDATA-?DTBIT-?BIPDATA-?PD2021/7/273有参数传递的函数调用****************************main.c******************

6、*********externvoidDELAY(unsignedchari,unsignedintj);main(){DELAY(10,1000);while(1);}**********************DELAY.A51****************************?PR?_DELAY?DELAY    SEGMENTCODEPUBLIC _DELAYRSEG ?PR?_DELAY?DELAY_DELAY:DJNZR4,$DJNZR5,$DJNZR7,$RETEND2021/7/27不同类型的数据及其传递参数的寄存器表参数类型chari

7、ntlong/float通用指针第1个R7R6&R7R4-R7R1-R3第2个R5R4&R5R4-R7R1-R3第3个R3R2&R3--R1-R32021/7/274函数的返回值传递参数**************main.c******************unsignedintexample(unsignedchari){return(i*i);}main(){example(80);#pragmaasmDJNZR7,$DJNZR6,$#pragmaendasmwhile(1);}2021/7/27函数返回值所用的寄存器返回值类型寄存器说明BitC由具

8、体标志位返回char/unsignedchar/1b

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。