单片机第3章MCS-51指令系统 和汇编语言程序设计.pptVIP

  • 8
  • 0
  • 约1.71万字
  • 约 130页
  • 2019-04-10 发布于江西
  • 举报

单片机第3章MCS-51指令系统 和汇编语言程序设计.ppt

指令的结构: 两个基本部分 操作码 + 操作数 操作码:表明指令要执行的操作性质 操作数:说明参与操作的数据或数据所存放的地址 三种格式:单字节指令、双字节指令、三字节指令 单字节指令: 1)8位编码全为操作码:如:NOP 2)8位编码包括操作码和寄存器编码: 如: MOV A,Rn (11101 Rn ) 双字节指令: 指令编码由两个字组成,占用两个存储单元 如: MOV A,#DATA 三字节指令: 第一个字节为操作码,后两个字节为操作数 如: MOV direct,#DATA 立即寻址 寄存器寻址 寄存器间接寻址 直接寻址 变址寻址(基址寄存器加变址寄存器间接寻址) 相对寻址 位寻址 作业: P75 3-1 3-4 3-10 例19 将内部RAM从DATA单元开始的10个无符号数相加,相加结果送SUM单元保存。 设相加结果不超过8位二进制数,则相应的程序如下: MOV R0,#0AH ;设置循环次数 MOV R1,#DATA ;R1作地址指针,指向数据块首地址 CLR A ;A清零 LOOP: ADD A,@R1 ;加一个数 INC R1 ;修改指针,指向下一个数 DJNZ R0,LOOP ;R0减1,不为0循环 MOV SUM,A ;存10个数相加的和 3.7 子程序调用与返回指令 3.7.1 子程序调用指令 子程序调用指令有长调用和绝对调用两条,它们都是双周期指令。 LCALL和ACALL指令类似于转移指令LJMP和AJMP,不同之处在于它们在转移前要把执行完该指令的PC内容自动压入堆栈后,才将子程序入口地址addr16(或addr11)送PC,实现转移。 ACALL与AJMP一样提供11位地址,只能调用与PC在同一2 KB范围内的子程序。由于该指令为2字节指令,所以执行该指令时应执行(PC)←(PC)+2以获得下一条指令地址,并把该地址压入堆栈作为返回地址。该指令机器码的构成也与AJMP类似。 3.7.2 返回指令 返回指令共两条:一条是对应两条调用指令的子程序返回指令RET,另一条是对应从中断服务程序的返回指令RETI。 从上述两条指令的功能操作看,都是从堆栈中弹出返回地址送PC,堆栈指针减2,但它们是两条不同的指令。其有下面两点不同: (1) 从使用上,RET指令必须作子程序的最后一条指令;RETI必须作中断服务程序的最后一条指令。 (2) RETI指令除恢复断点地址外,还恢复CPU响应中断时硬件自动保护的现场信息。执行RETI指令后,将清除中断响应时所置位的优先级状态触发器,使得已申请的同级或低级中断申请可以响应;而RET指令只能恢复返回地址。 3.7.3 空操作指令 NOP ;(PC)←(PC)+1 空操作指令是一条单字节单周期指令。它控制 CPU不做任何操作,仅仅是消耗这条指令执行所需要的一个机器周期的时间,不影响任何标志位,故称为空操作指令。NOP指令在设计延时程序、拼凑精确延时时间及在程序等待或修改程序等场合是很有用的。 3.8 位操作类指令 位操作类指令在单片机指令系统中占有重要地位,这是因为单片机在控制系统中主要用于控制线路通、断,继电器的吸合与释放等。 位操作也称布尔变量操作,它是以位(bit)作为单位来进行运算和操作的。MCS-51单片机内部有一个功能相对独立的布尔处理机,它有借用进位标志CY作为位累加器,有位存储器(即位寻址区中的各位),指令系统中有17条专门进行位处理的指令集。位处理指令可以完成以位为对象的数据转送、运算、控制转移等操作。 在位操作指令中,位地址的表示有以下不同的方法(以下均以程序状态字寄存器PSW的第5位F0标志为例说明): (1) 直接位地址表示,如D5H。 (2) 点表示(说明是什么寄存器的什么位),如PSW.5,说明是PSW的第5位。 (3) 位名称表示,如直接用F0表示。 (4) 用户定义名称表示,如用户定义用FLG这一名称来代替F0,则在指令中允许用FLG表示F0标志位。 表3.6

文档评论(0)

1亿VIP精品文档

相关文档