- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(免费)第4章4.6节
假设目标存储器配置如下: 程序存储器: EPROM E000H~EFFFH(片外) VECS FF80H~FFFFH 数据存储器: SPRAM 0060H~007FH(片内) DARAM 0080H~017FH(片内) SECTIONS { .text: EPROM PAGE0 .data: EPROM PAGE0 .bss: SPRAM PAGE1 STACK : DARAM PAGE1 .vectors: VECS PAGE0 } 4.6.1 程序的控制与转移 分支转移 循环控制 子程序操作 第二组: 三类各选一,不能同类选二 BC new,TC,C,BIO BC new,TC,C,NC 单条指令中的多个条件是“与”的关系; 多条指令中的条件是“或”的关系; 例2: BC new,AGT BC new,AOV 【例4.12】 计算 .bss x, 5 .bss y, 1 STM #x, AR1 STM #4, AR2 LD #0, A loop: ADD *AR1+, A BANZ loop, *AR2- STL A, *(y) 2. 调用与返回程序 两种形式: 无条件调用与返回,有条件调用与返回。 常用指令: CALL[D]、CALA[D]、RET[D]、CC[D]、RC[D] 堆栈: 16位堆栈指针(SP)寻址的软件堆栈 先进后出 压入数据时,堆栈从高地址向低地址增长 堆栈用法: 压入操作:SP先减1,然后再将数据压入栈顶。 弹出操作:数据弹出后,再将SP加1。 3. 重复操作( 3条指令) RPT(重复下条指令)、 RPTZ(累加器清0并重复下条指令) RPTB(块重复指令)。 (1) 重复执行单条指令 含义:RPT或RPTZ允许重复执行紧随其后的那一条指令。 重复次数:如重复执行n次,则重复指令中计数值为n-1。 【例4.13】 对数组进行初始化。x[5]={0,0,0,0,0} 主要程序(部分)如下: .bss x, 5 STM #x, AR1 LD #0, A RPT #4 STL A, *AR1+ 或者 .bss x, 5 STM #x, AR1 RPTZ A, #4 STL A, *AR1+ (2) 块程序重复操作RPTB 含义:RPTB将重复操作的范围扩大到任意长度的循环回路。 重复次数:先加载到块重复计数器(BRC)。 循环开始地址(RSA):是RPTB指令的下一行; 结束地址(REA):由RPTB指令的操作数规定。 【例4.14】 对数组x[5]中的每个元素加1。 .bss x, 5 begin: LD #1, 16, B STM #4,BRC ;BRC赋值为4 STM #x,AR4 RPTB next-1 ;next-1为循环结束地址 ADD *AR4,16,B,A STH A,*AR4+ next: LD #0, B … 4.6.2 数据块传送程序 共有4种类型(10条指令): 程序存储器←→数据存储器(MVPD,MVDP)。 数据存储器←→数据存储器(MVDK,MVKD,MVDD)。 数据存储器←→MMR(MVMD、MVDM,MVMM) 程序存储器(由ACC寻址)←→数据存储器(READA,WRITA) 4.6.3 算术运算类程序 单字运算(16位) 长字运算(32位) 小数运算 浮点运算 双操作数乘法 * * 计算y=x1+x2+x3+x4+x5 .title
文档评论(0)