第四章汇编语言程序设计20120320.ppt

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
多分支结构例题2说明 此程序要求128个转移目的地址(ROUT00~ROUT7F)必须驻留在与绝对转移指令AJMP相同的一个2 KB存储区内。 RL指令对变址部分乘以 2,因为每条AJMP指令占两个字节。如改用LJMP指令。目的地址可以任意安排在64KB的程序存储器空间内,但程序应作较大的修改。 4.4 循环结构 循环程序的结构一般包括下面几个部分: 置循环初值 循环体(循环工作部分) 修改控制变量 常见的是计数循环,在单片机中,一般用一个工作寄存器Rn作为计数器。 循环控制部分 根据循环结束条件,判断是否结束循环。 8051可采用DJNZ指令来自动修改控制变量并能结束循环。 循环结构 循环结构实例 例:编写4字节数据加法程序:(33H-30H)+(43H-40H) →(33H-30H) 分析: 多字节加法首先从低字节开始,一个字节一个字节的相加; 高字节相加时必须考虑低字节相加时的进位,故用带进位的加法指令ADDC; 初始化 R0——被加数的首地址30H R1——加数的首地址40H R2——加数与被加数的字节数,即循环次数4。 循环结构实例 循环结构实例 ORG 2000H MOV R0 ,#30H ;循环初始化:地址指针赋初值(R0) ←30H MOV R1 ,#40H ; (R1) ←40H MOV R2,#04H ;计数器赋初值(R2) ←4H CLR C ;将CY清零 LOOP: MOV A,@ R0 ;循环体:做两个字节的带进位加法(A) ←((R0) ) ADDC A ,@R1 ; MOV @R0,A ;将和由累加器送回内存单元,((R0)) ← (A) INC R0 ;循环修改:地址指针R0加1 INC R1 ;R1 加1 DJNZ R2 ,LOOP;计数器R2减1,若R2非零继续循环相加 LOP: SJMP LOP ;R2为零循环结束 查表程序 所谓查表是根据存放在ROM中数据表格的项数来查找和它对应的表中值。 特别适用于复杂参数,特别是非线性参数的运算。 例如:查y=x2(设x为0~9)的平方表 查表程序 MCS-51有两条专门的查表指令: MOVC A, @A+DPTR MOVC A, @A+PC 查表程序主要用于代码转换、代码显示、实时值查表计算和按命令号实现转移等。 查表程序 MOVC A,@A+DPTR DPTR存放数据表格的起始地址DTAB,所查表的项数送入累加器A。 使用MOVC A,@A+DPTR指令完成查表。查表过程比较简单。 查表范围64K,称为长查表指令。 查表程序 MOVC A,@A+PC PC存放数据表格的起始地址DTAB,所查表的项数送入累加器A。 使用MOVC A,@A+PC指令完成查表。 查表范围256B,称为短查表或页内查表指令。 由于PC的值为当前指令的地址+2,所以每次需计算变址调整值,故比较麻烦。 不影响DPTR的值,程序比较灵活,故也常用。 例 已知R0低4位有一个16进制数(0~F中一个),请编出能把它转换成相应ASCII码并送人R0的程序。 计算求解1 :由ASCII码字符表可知0~9的ASCII码为30H ~39H,A ~F的ASCII码为41H ~46H。 求解的思路:若R0≤9,则R0内容需加30H;若R0 ﹥9,则R0需加37 H。 查表指令例题 ORG 0400H MOV A,R0 ;取转换值到A ANL A, # 0FH ;屏蔽高4位 CJNE A,#10,NEXT;A和10比较 NEXT: JNZ NEXTT ;若A9,则转NEXTT ADD A,#30H ;若A10,则A+30H ? A

文档评论(0)

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

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

1亿VIP精品文档

相关文档