第3章MCS51的指令糸统 介绍MCS-51汇编语言的指令系统。 3.1指令糸统概述 McS-51的基本指令共111条,按指令所占的字节来分: (1)单字节指令49条; (2)双字节指令45条; (3)三字节指令17条。 按指令的执行时间来分: (1)1个机器周期(12个时钟振荡周期)的指令64 条条 (2)2个机器周期(24个时钟振荡周期)的指令45
第3章 MCS-51的指令系统 介绍MCS-51汇编语言的指令系统。 3.1 指令系统概述 MCS-51的基本指令共111条,按指令所占的字节来分: (1) 单字节指令49条; (2) 双字节指令45条; (3) 三字节指令17条。 按指令的执行时间来分: (1) 1个机器周期(12个时钟振荡周期)的指令64 条; (2) 2个机器周期(24个时钟振荡周期)的指令45 条;
(3)只有乘、除两条指令的执行时间为4个机器周期 (48个时钟振荡周期) 12MHz晶振:机器周期为1μs。 3.2指令格式 两部分组成,即操作码和操作数。 操作码用来规定指令进行什么操作 操作数则是指令操作的对象 有单字节指令、双字节指令、三字节不同长度的指令, 格式不同: (1)单字节指令:指令只有一个字节,操作码和操 作数同在一个字节中
(3) 只有乘、除两条指令的执行时间为4个机器周期 (48个时钟振荡周期)。 12MHz晶振:机器周期为1s。 3.2 指令格式 两部分组成,即操作码和操作数。 操作码用来规定指令进行什么操作 操作数则是指令操作的对象 有单字节指令、双字节指令、三字节不同长度的指令, 格式不同: (1)单字节指令:指令只有一个字节,操作码和操 作数同在一个字节中
(2)双字节指令:一个字节为操作码,另一个字节 是操作数。 (3)三字节指令:操作码占一个字节,操作数占二 个字节。其中操作数既可能是数据,也可能是地址。 3.3指令条统的寻址方式 寻址方式就是在指令中说明操作数所在地址的方法。 共7种寻址方式。 1.寄存器寻址方式 操作数在寄存器中 MOv A Rn: (Rn)A, n=0-7 表示把寄存器Rn的内容传送给累加器A
(2)双字节指令:一个字节为操作码,另一个字节 是操作数。 (3)三字节指令:操作码占一个字节,操作数占二 个字节。其中操作数既可能是数据,也可能是地址。 3.3 指令系统的寻址方式 寻址方式就是在指令中说明操作数所在地址的方法。 共7种寻址方式。 1.寄存器寻址方式 操作数在寄存器中 MOV A,Rn ;(Rn)→A,n=0~7 表示把寄存器Rn的内容传送给累加器A
寻址范围包括: (1)4组通用工作寄存区共32个工作寄存器。 (2)部分特殊功能寄存器,例如A、B以及数据指针 寄存器DPTR等。 2.直接寻址方式 操作数直接以单元地址的形式给出: MOV A 40H 寻址范围: (1)内部RAM的128个单元 (2)特殊功能寄存器。除了以单元地址的形式外, 还可用寄存器符号的形式给出。例如: M0VA,80H与MVA,P0是等价的。 直接寻址方式是访问特殊功能寄存器的唯一寻址方式
寻址范围包括: (1)4组通用工作寄存区共32个工作寄存器。 (2)部分特殊功能寄存器,例如A、B 以及数据指针 寄存器DPTR等。 2.直接寻址方式 操作数直接以单元地址的形式给出: MOV A,40H 寻址范围: (1) 内部RAM的128个单元 (2) 特殊功能寄存器。除了以单元地址的形式外, 还可用寄存器符号的形式给出。例如: MOV A,80H 与 MOV A,P0是等价的。 直接寻址方式是访问特殊功能寄存器的唯一寻址方式
3.寄存器间接寻址方式 寄存器中存放的是操作数的地址 在寄存器的名称前面加前缓标志“@” 访问内部RAM或外部数据存储器的低256个字节时,只 能采用R或R1作为间址寄存器。例如: Mov A, @Ri ;i=0或1 其中R中的内容为40H,把内部RAM中40H单元的内容送 到A 寻址范围: (1)访问内部RAM低128个单元,其通用形式为@Ri (2)对片外数据存储器的64K字节的间接寻址,例如: MOVX A @DPTR
3. 寄存器间接寻址方式 寄存器中存放的是操作数的地址 在寄存器的名称前面加前缀标志“@” 访问内部RAM或外部数据存储器的低256个字节时,只 能采用R0或R1作为间址寄存器。例如: MOV A,@Ri ;i=0或1 其中Ri中的内容为40H,把内部RAM中40H单元的内容送 到A。 寻址范围: (1)访问内部RAM低128个单元,其通用形式为@Ri (2)对片外数据存储器的64K字节的间接寻址,例如: MOVX A,@DPTR
(3)片外数据存储器的低256字节 例如: MOVX A,@Ri (4)堆栈区 堆栈操作指令PUSH(压栈)和P0P(出栈)使用堆 栈指针(SP)作间址寄存器 4.立即寻址方式 操作数在指令中直接给出,需在操作数前面加前缀 标志“#”。例如: MOV A. #40H 5.基址寄存器加变址寄存器间址寻址方式 本寻址方式是以DPTR或P0作基址寄存器,以累加器A 作为变址寄存器
(3)片外数据存储器的低256字节 例如:MOVX A,@Ri (4)堆栈区 堆栈操作指令PUSH(压栈)和POP(出栈)使用堆 栈指针(SP)作间址寄存器 4.立即寻址方式 操作数在指令中直接给出,需在操作数前面加前缀 标志“#”。例如: MOV A,#40H 5.基址寄存器加变址寄存器间址寻址方式 本寻址方式是以DPTR或PC作基址寄存器,以累加器A 作为变址寄存器
例如:指令MVGA,@A+DPTR其中A的原有内容为05H DPTR的内容为0400H,该指令执行的结果是把程序存 储器0405H单元的内容传送给A 说明: (1)本寻址方式是专门针对程序存储器的寻址方式, 寻址范围可达到64KB。 (2)本寻址方式的指令只有3条: MOVC A @A+DPTR MOVc A @A+PC JUMP @A+DPTR
例如:指令 MOVC A,@A+DPTR 其中A的原有内容为05H, DPTR的内容为0400H,该指令执行的结果是把程序存 储器0405H单元的内容传送给A。 说明: (1)本寻址方式是专门针对程序存储器的寻址方式, 寻址范围可达到64KB。 (2)本寻址方式的指令只有3条: MOVC A,@A+DPTR MOVC A,@A+PC JMP @A+DPTR
6.位寻址方式 McS-51有位处理功能,可以对数据位进行操作,例如: MOV C, 40H 是把位40H的值送到进位位c 寻址范围包括: (1)内部RAM中的位寻址区。位有两种表示方法,例如, 40H;另一种是单元地址加上位,例如,(28H).0,指 的是28H单元中的最低位。它们是等价的。 (2)特殊功能寄存器中的可寻址位 可寻址位在指令中有如下4种的表示方法: a.直接使用位地址。例如PSW.5的位地址为0D5H
6.位寻址方式 MCS-51有位处理功能,可以对数据位进行操作,例如: MOV C,40H 是把位40H的值送到进位位C。 寻址范围包括: (1)内部RAM中的位寻址区。位有两种表示方法,例如, 40H;另一种是单元地址加上位,例如,(28H).0,指 的是28H单元中的最低位。它们是等价的。 (2)特殊功能寄存器中的可寻址位 可寻址位在指令中有如下4种的表示方法: a. 直接使用位地址。例如PSW.5的位地址为0D5H
b.位名称的表示方法。例如:PSW.5是F0标志位,可使 用F0表示该位。 c单元地址加位数的表示方法。例如:(0D0H).5。 d特殊功能寄存器符号加位数的表示方法。例如:PSW.5。 7.相对寻址方式 在相对寻址的转移指令中,给出了地址偏移量,以 “re”表示,即把P的当前值加上偏移量就构成了程 序转移的目的地址: 目的地址转移指令所在的地址+转移指令的字节数 t rel 偏移量rel是一带符号的8位二进制数补码数
b.位名称的表示方法。例如:PSW.5是F0标志位,可使 用F0表示该位。 c.单元地址加位数的表示方法。例如 :(0D0H).5。 d.特殊功能寄存器符号加位数的表示方法。例如:PSW.5。 7.相对寻址方式 在相对寻址的转移指令中,给出了地址偏移量,以 “rel”表示,即把PC的当前值加上偏移量就构成了程 序转移的目的地址: 目的地址=转移指令所在的地址 + 转移指令的字节数 + rel 偏移量rel是一带符号的8位二进制数补码数
范围是:-128~+127 向地址增加方向最大可转移(127+转移指令字节)个 单元地址,向地址减少方向最大可转移(128转移 指令字节)个单元地址。 7种寻址方式及寻址空间,见表3-1(P43) 3.4MCS51指令糸统分类介绍 111条指令,按功能分类,可分为下面5大类 (1)数据传送类(28条) (2)算术操作类(24条 (3)逻辑运算类(25条) (4)控制转移类(17条) (5)位操作类(17条)
范围是:–128 ~ +127 向地址增加方向最大可转移(127+转移指令字节)个 单元地址,向地址减少方向最大可转移(128-转移 指令字节)个单元地址。 7种寻址方式及寻址空间,见表3-1(P43)。 3.4 MCS-51指令系统分类介绍 111条指令,按功能分类,可分为下面5大类: (1)数据传送类(28条) (2)算术操作类(24条 (3)逻辑运算类(25条) (4)控制转移类(17条) (5)位操作类(17条)