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

单片机原理及基于单片机的嵌入式系统设计 蔡方凯 第4章新.ppt

单片机原理及基于单片机的嵌入式系统设计 蔡方凯 第4章新.ppt

  1. 1、本文档共57页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 汇编语言程序设计 4.1.2 MCS-51单片机的伪指令 1 ORG(汇编起始命令) ORG伪指令称为汇编起始命令,常用于汇编语言源程序或数据块开头。 ORG伪指令的格式: 【标号:】 ORG 16位地址或标号 在ORG伪指令格式中,标号段为任选项,通常省略。 ORG伪指令的功能是将该伪指令后的程序机器码按照ORG伪指令提供的16位地址或标号存入相应的程序存储器中。即规定目标程序在程序存储器中存放的起始地址 2 END(汇编结束命令) 3 EQU(赋值命令) 4 DATA(数据地址赋值命令) 5 DB(定义字节命令) 6 DW(定义字命令) 7 DS 定义存储空间命令 8 BIT ( 位地址符号命令) 4.2 汇编语言程序设计 4.2.1 顺序程序 4.2.2 分支程序 4.2.3 循环结构 4.2.4 子程序设计和子程序调用 子程序设计应注意以下几点(续) 例4-6: 设变量X存放在30H单元中, 函数Y存放在31H单元。 试编程实现下式要求给Y赋值的程序。 【编程思路】 1 由于X为有符号数, 因此可以根据它的符号位来决定其正负。即根据X的最高位是0 还是1决定X的正负, 可利用JB或JNB指令。 2 而判别X是否为 0,可用CJNE指令或累加器判零指令JZ ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV A,30H CJNE A,#00H,NEXT ;将X和0进行比较 MOV 31H,#00H ;当X=0时,将Y赋值为0 LJMP END1 NEXT: JNB ACC.7,NEXT1 ;当X不为0时,判断X的正负 MOV 31H,#81H ;若X0 则A=-1 LJMP END1 NEXT1: MOV 31H,#01H ;若X0 则A=1 END1: SJMP $ 【例4-6源程序】 例4-7:求双字节有符号数的补码,设字节高8位放在30H,低8位放在31H,将补码的高8位放在32H,低8位放在33H。 【编程思路】 1 补码运算的算法思路为对有符号数“取反加1” 2 对MCS-51单片机指令系统而言,提供取反指令CPL,加1指令则采用加法指令即可。 3 由于51单片机只能进行字节运算,对于双字节运算则只能采用低8位和高8位分别运算的方式,对于双字节有符号数的补码运算则需要在低8位取反加1,高8位仅取反即可。 【例4-7源程序】 ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV A,30H JNB ACC.7,NEXT CPL A SETB C MOV ACC.7,C MOV 32H,A MOV A,31H CPL A ADD A,#01H MOV 33H,A MOV A,32H ADDC A,#00H MOV 32H,A LJMP END1 NEXT: MOV 32H,30H MOV 33H,31H END1: SJMP $ 例4-8:试实现16路分支转移程序,程序框图如图4.3所示 试根据R0中的序号 (OOH-0FH), 控制程序转移到不同的分支程序去,设有 16 个分支程序分别为PROG0~PROG15。 图4.3 多分支程序结构 【例4-8源程序】 ORG 0000H LJMP MAIN ORG

您可能关注的文档

文档评论(0)

精品课件 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档