嵌入式系统编程题汇编.docx

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
-- - 嵌入式系统 编程题汇编 (带答案 ) .一。从一数到十 COUNT EQU 0;定义变量 COUNT 的基地址 AREA Example1,CODE,READONL Y; 声明代码段 Example1 为只读 ENTRY ;标识程序入口 CODE32 ;声明 32 位 ARM 指令 START LDR R1,=COUNT ;将 0赋给 R1 MOV R0,#0 ; 执行 R0=0 STR R0,[R1] ;存储 R0 寄存器的数据到 R1 指向的存 储单元 LOOP LDR R1,=COUNT ;将 0赋给 R1 LDR R0,[R1] ;将 R1 中的数值作为地址, 取出此地址中的数据保存 R0 中 ADD R0,R0,#1 ;执行 R0=R0+1 CMP R0,#10 ;将 R0 与 10 进行比较 MOVHS R0,#0 ;若 R0 大于等于 10,则 R0=0 STR R0,[R1] ;存储 R0 寄存器的数据到 R1 指向的地 址单元 B LOOP ;跳转到 LOOP END ;汇编文件结束 二, 9 的 8 次幂 X EQU 9 ;初始化 X 为 9 n EQU 8 ; 初始化 N 为 8 AREA Example3,CODE,READONL Y ; 生明代码段 Example3 为只读 ENTRY ; 标识程序入口路 CODE32 ;声明 32 位 ARM 指令 START LDR S P,=0x30003F00 ;把 0x30003F00 赋给 SP R13) LDR R0,=X ;把 9 赋给 R0 LDR R1,=n ;把 8 赋给 R1 BL POW ;跳转到 POW ,并把下一条指令地址存入到 R14 中 1 HALT B HALT ;等待跳转 POW STMFD SP!,{R1-R12,LR} ; 将 R1-R12 入栈,满递减堆栈 MOVS R2,R1 ;将 R1 赋给 R2,并影响标志位 MOVEQ R0,#1 ;若 Z=1, 则 R0=1 BEQ POW_END ;若 Z=1, 跳转到 POW_END MOV R1,R0 ;将 R0 中值赋给 R1 SUB R2,R2,#1 ;将 R2-1 的只赋给 R2 POW_L1 BL DO_MUL ;跳转到 DO-MUL ,并把下一条指令地址存入 R14 中 SUBS R2,R2,#1 ;将 R2-1 的值赋给 R2,并影响标志 位 BNE POW_L1 ; 若 Z=0, 跳转到 POW_L1 POW_END LDMFD SP!,{R1-R12,PC} ;数据出栈,存入到 R1-R12,PC 中 DO_MUL MUL R0,R1,R0 ;把 R1*R0 的值赋给 R0 MOV PC,LR ;LR 中的值赋给 PC END ;汇编结束 三:从一一直加到一百 程序清单(一) C 语言实验参考程序 #define uint8 unsigned char ;定义一个无符号字符常量 uint8 #define uint32 unsigned int ;定义一个无符号整形常量 unint32 #define N 100 ;定义一个常量 N=100( 宏定义, 100用N 代替 ) uint32 sum; ; 定义 sum为无符号整型常量(声明一个 unsigned int 型的变量 sum) void Main (void ) ;主函数 {uint32 i; ; 定义无符号整型常量 i(声明一个 unsigned int 型的变量 i ) sum=0; ;sum初始值为 0 for( i=0;i=N;i++ ) ;i 在 N内自增加 1( i从 0开始, i=N 时循环成立) {sum+=i;} ;把 sum+i赋给 sum while ( 1) ; ; 为真循环 } 程序清单(二) 简单的启动代码 IMPORT |Image$$RO$$Limit | ;R0 输出段存储区域界限 IMPORT |Image$$RW$$Base | ;RW 输出段运行时起始地址 IMPORT |Image$$ZI$$Base | ;ZI 输出段运行时起始地址 IMPORT |Image$$ZI$$Limit | ;ZI 输出段存储区域界限 IMPORT Main ;主函数 2 AREA Start,CODE,READONL Y ;声明代码段 start,为只读 ENTRY ;程序入口 CODE32 ;声明 32位ARM 指令 Reset LDR SP,=0x40003f00 ; 将 0x40003f00 赋给 SP LDR R0,=|Image$$RO$$Limit| ; 将 R0

文档评论(0)

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

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

1亿VIP精品文档

相关文档