单片机原理应用与Proteus仿真教学教程兰建军2单元指令系统与汇编语言演示文稿.ppt

单片机原理应用与Proteus仿真教学教程兰建军2单元指令系统与汇编语言演示文稿.ppt

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4、控制转移指令 (1)无条件转移指令 长转移指令 LJMP --可实现在整个程序存储器中的64KB范围内转移 绝对转移指令 AJMP --可实现在程序存储器中的2KB范围内转移 相对转移指令 SJMP --向上跳128个字节或向下跳127个字节,255B内转移 间接转移指令 JMP --只有JMP @A+DPTR 形式,也成为散转指令 说明: 无条件转移指令后面的操作数通常采用两种形式表示: 一是:标号地址的形式(如:LOOP); 二是:绝对地址的形式(如: 0030H); 通常建议采用第一种(标号形式),防止程序修改后,需要重新确定目标地址。 (2)条件转移指令 比较不等转移指令 CJNE A,direct, rel CJNE A,#data, rel CJNE Rn,#data,rel CJNE @Ri,#data,rel 减1不为0转移指令 DJNZ Rn, rel DJNZ direct, rel 累加器A的判零转移指令 JZ rel JNZ rel 例题:编程实现片内RAM的30H~34H单元置初值00H~04H。 MOV R0, #30H ;设定地址指针 MOV R2, #05H ;数据区长度设定 MOV A, #00H ;装初值 LOOP: MOV @R0, A ;送数 INC R0 ;修改地址指针 INC A ;修改待传送的数据 DJNZ R2, LOOP ;送完转LOOP,否则传送结束HERE: SJMP HERE ;踏步 (3)调用子程序及返回指令 长调用指令 LCALL 绝对调用指令 ACALL 子程序返回指令 RET 中断返回指令 RETI 调用指令后面的操作数只能为标号,表示转向目标地址执行程序,执行完后还需要回到原点执行程序。 涉及断点保护的问题,返回指令实现回到断点。 空操作指令 NOP 该指令执行时CPU不进行任何操作,只消耗一个机器周期的时间 例题: 假设堆栈指针SP=42H,并且(42H)=10H,(41H)=23H,执行RETI指令后PC值为多少? 执行RETI指令后,PC=1023H 5、位操作指令 位传送指令 MOV C,bit MOV bit, C 位置“1”、清“0”指令、取反指令 SETB C/bit CLR C/bit CPL C/bit 位逻辑运算指令 ANL C, bit ANL C, /bit ORL C, bit ORL C, /bit 位条件转移指令 JC/JNC rel JB/JNB bit, rel JBC bit, rel 例题:片内RAM的30H单元中存有一个带符号数,试判断该数的正负性,若为正数将6EH位清0;若为负数将6EH位置1。 MOV A, 30H ;30H单元中的数送入A JB AcC.7, LOOP ;为1是负数转移 CLR 6EH ;为0是正数清标志位 RET LOOP: SETB 6EH ;标志位置1 RET 2.5 常用伪指令 伪指令并不生成目标代码,仅仅在汇编过程中起作用,故又称为汇编命令或汇编程序控制命令。 1、设定起始地址ORG 用ORG伪指令规定程序段或数据段存储的起始地址。 如:0RG 0030H 2、汇编结束 END 3、赋值 EQU EQU也可以用“=”来表示 如: TAB1 EQU 1000H 4、定义位地址 BIT Flag BIT 07H 5、定义字节 DB DDSEG: DB 00H,01H,02H 6、定义字DW PFB: DW 1122H,3344H 7、预留存储区 DS TTB: DS 5 例题: ORG 0200H STA: DW 1234H,0A55H DAT: DS 02H STA1: DB 01H,02H 例题:编程实现c=a2+b2,设a、b、c分别存于R0、R1、R2中,a、b都是0~9的正整数。 ORG 0100H START:MOV DPTR, #TAB MOV A, R0 ACALL SQR ;调子程序a2 MOV R2,A ; a2暂存R2中 MOV A,R1 ACALL SQR ;调子程序b2 ADD A,R2 ; A=a2+b2 MOV R2,A ; R2=a2

文档评论(0)

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

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

1亿VIP精品文档

相关文档