网站大量收购独家精品文档,联系QQ:2885784924

方彦军_第3章_ARM指令系统及程序设计基础.ppt

方彦军_第3章_ARM指令系统及程序设计基础.ppt

  1. 1、本文档共141页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
方彦军_第3章_ARM指令系统及程序设计基础

3.5.3 汇编语言编程实例 PrintLine MOV R4,LR MOV R5,R0 Line LDRB R1,[R5],#1 AND R0,R1,#FF TST R0,#FF MOVEQ PC,R4 BL PutByte B Line PutByte LDR R3,=UARTSTAT0 LDR R2,[R3] TST R2,#40 3.5.3 汇编语言编程实例 BEQ PutByte LDR R3,=UTXBUF0 STR R0,[R3] MOV PC,LR Line1 DCB A,D,******************************************************************,0 Line2 DCB A,D,Chinese Academy of Sciences,Institute of Automation,Complex System Lab.,0 Line3 DCB A,D, ARM Development Board Based on Samsung ARM S3C4510B.,0 Line4 DCB A,D,A,D,A,D,A,D,A,D,A,D,A,D,A,D,A,D,A,D,A,D,A,D,A,D,A,D,A,D,0 END 3.6 汇编语言与C语言混合编程 1. 内嵌汇编 (1)内嵌汇编指令 内嵌汇编指令的语法格式为 __asm(“指令[;指令]”); 如果有多条汇编指令嵌入,则可用“{ }”将它们归为一条语句,格式为 __asm { 指令[;指令] ... [指令] } 3.6 汇编语言与C语言混合编程 内嵌汇编指令主要有以下一些规则限制: 1) 表达式的使用不要过于复杂,以避免和指令中物理寄存器的使用发生冲突。 2) 不能向PC寄存器直接赋值;通常在内嵌汇编指令中不要指定物理寄存器。 3)内嵌汇编指令中,常量前的符号“#”可以省略。 4)只有B指令可以使用C语言程序中的标号。 5)内嵌汇编器不支持汇编语言中用于内存分配的伪操作(ADR和ADRL)。 6)在内嵌的SWI指令和BL指令中,除了正常的操作数域外,还必须增加3个可选的寄存器列表 3.6 汇编语言与C语言混合编程 (2)内嵌汇编注意事项 1)对于寄存器R0~R3、LR和PC的使用要格外小心。 2)不要使用寄存器寻址变量。 3)使用内嵌汇编时,编译器会自动保存和恢复可能用到的寄存器。读物理寄存器(除PSR寄存器之外)之前必须先进行写入。 4)LDM和STM指令的寄存器列表中只允许使用物理寄存器。 5)带“,”的C语言表达式作为操作数时,必须用“( )”括起来归为一个汇编操作数。 3.6 汇编语言与C语言混合编程 (3)内嵌汇编应用举例 例1 字符串复制 #include stdio.h void my_strcpy(char *src,const char *dst) { int ch; __asm { loop: #ifdef _arm //ARM版本 LDRB ch,[src],#1 STRB ch,[dst],#1 #else //Thumb版本 LDRB ch,[src] ADD src,#1 STRB ch,[dst] 3.6 汇编语言与C语言混合编程 ADD dst,#1 #endif CMP ch,#0 BNE loop } } int main(void) { Const char *a=”Hello World!”; Char b[20]; __asm { MOV R0,a //设置入口参数 MOV R1,b BL my_strcpy,{R0,R1} //调用my_strcpy()函数 } 3.6 汇编语言与C语言混合编程

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档