- 1、本文档共31页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编语言程序常用的有3种结构形式,即顺序结构、分支结构、循环结构。 汇编语言程序的基本结构 语句 3 语句 2 顺序结构 入口 语句 1 出口 分支结构 入口 条件满足否? 分支 1 出口 Y N 分支 2 循环结构 入口 处理 修改条件 条件满足否? Y 出口 N 这种程序中既无分支、循环,也不调用子程序,程序按顺序一条一条地执行指令。?? 4.2.1顺序程序 例1 :将片内RAM 20H单元的内容拆成两段,每段四位。并将它们分别存入21H与22H单元中。 开始 (20H)送A 交换高低位 屏蔽高位后送22H (20H)送A 屏蔽高位后送21H 结束 例1 :拆字。将片内RAM 20H单元的内容拆成两段,每段四位。并将它们分别存入21H与22H单元中。 解: ORG 2000H MOV R0,#21H ;21H→R0 MOV A,20H ;(20H)→A ANL A,#0FH ;A∧#0FH→A MOV @R0,A ;(A)→(R0) INC R0 ;(R0)+1→R0 MOV A,20H ;(20H)→A SWAP A, ;A0~3 ← →A4~7 ANL A,#0FH ;A∧#0FH→A MOV @R0,A ;(A)→(R0) SJMP $ 开始 (20H)送A 交换高低位 屏蔽高位后送22H (20H)送A 屏蔽高位后送21H 结束 * 例2:将20H单元的压缩(Packed )BCD码拆成两个ACSII码存入21H、22H单元。 BCD 0 1 2 ... 9 ASCII 30H 31H 32H ... 39H * 方法1 (20H)?A 10H?B A/B,A中为高4位BCD码, B中为低4位BCD码 B+30H?B B?(21H) A+30H?A A?(22H) 开始 结束 * 源程序 ORG 2000H MOV A,20H MOV B,#10H DIV AB ORL B,#30H MOV 21H,B ORL A,#30H MOV 22H,A END ;除以10H ;高4位BCD码转换位ASCII码 ;低4位BCD码转换位ASCII码 * 0? (21H) (20H)?A A与(21H)的低4位交换 (21H)+30H?(21H) A的高低半字节交换 A+30H?A A?(22H) 开始 结束 方法2: * ORG 2000H MOV R0,#21H MOV @R0,#0 MOV A,20H XCHD A,@R0 ORL 21H,#30H SWAP A ORL A,#30H MOV 22H,A END ;清21H单元 ;低4位BCD码送21H单元, ;低4位BCD码转换位ASCII码 ;高4位BCD码转换位ASCII码 源程序 (二)分支程序 程序分支是通过条件转移指令实现的,即根据条件对程序的执行进行判断,满足条件则进行程序转移,不满足条件就顺序执行程序。 * 4.2.2 分支程序 分支程序可根据要求无条件或条件地改变程序执行流向。编写分支程序主要在于正确使用转移指令。分支程序有:单分支结构、双分支结构、多分支结构(散转) 条件成立? 下条指令 程序段A 单分支结构 Y N 条件成立? 程序段A Y N 程序段A 双分支结构 * 4.2.2 分支程序 分支程序可根据要求无条件或条件地改变程序执行流向。编写分支程序主要在于正确使用转移指令。分支程序有:单分支结构、双分支结构、多分支结构(散转) K=? 程序段n n 0 程序段1 多分支结构 程序段0 1 * 例1:设变量x以补码形式存放在片内RAM 30H单元中,变量y与x的关系是: 编程根据x的值求y值并放回原单元。 * A=? y=x+5 0 0 y=20H y=x 0 取x 即(30h) A 开始 存y 即y 20h 结束 * ORG 1000H START:MOV A,30H JZ NEXT ;x=0,转移 ANL A,#80H ;保留符号位 JZ ED ;x0,转移 MOV A,#05H ;x0,不转移 ADD A,30H MOV 30H,A SJMP ED NEXT:MOV 30H,#20H ED:SJMP $ 例2:例:在内部RAM 40H、41H中存放了两个无符号数,试比较它们的大小,把大的数放入50H单元,小的数放入51H单元,相等则任意存放。
文档评论(0)