第3章80C51的指令系统 《单片机原理及应用技术》 本章分为七节,主要介绍: 3.1指令格式及常用符号 3.280C51的寻址方式 3.3数据传送类指令(29条) 3.4算术运算类指令(24条) 3.5逻辑运算与循环类指令(24条) 3.6控制转移类指令(17条) 3.7位操作类指令(17条) I
3.1 指令格式及常用符号 本章分为七节,主要介绍: 3.2 80C51的寻址方式 3.3 数据传送类指令(29条) 3.4 算术运算类指令(24条) 3.5 逻辑运算与循环类指令(24条) 3.6 控制转移类指令(17条) 3.7 位操作类指令(17条)
第3章80C51的指令系统 《单片机原理及应用技术》 3.1指令格式及常用符号 3.1.1机器指令的编码格式 一、单字节指令 1、8位编码仅为操作码: 位号e 76543210 字节 opcode 注:opcode表示操作码。e 如:INCA。该指令的编码为:00000100B, 其十六进制表示为04H,累加器A隐含在操作码 中。指令的功能是累加器A的内容加1。 注意:在指令中用“A表示累加器,而用 “ACC表示累加器对应的地址(E0H)
3.1 指令格式及常用符号 3.1.1 机器指令的编码格式 一、单字节指令 1、8位编码仅为操作码: 如:INC A。该指令的编码为:0000 0100B, 其十六进制表示为04H,累加器A隐含在操作码 中。指令的功能是累加器A的内容加1。 注意:在指令中用“A”表示累加器,而用 “ACC”表示累加器对应的地址(E0H)
第3章80C51的指令系统 《单片机原理及应用技术》 2.8位编码含有操作码和寄存器编码 位号 76543210 字节。 opcode frfe 注:rrr表示寄存器编码。 高5位为操作码,低3位为存放操作数的寄存器 编码。如:MOVA,R0 编码为11101000B,其十六进制表示为E8H (低3位000为寄存器R0的编码)。功能是将当前 工作寄存器R0中的数据传送到累加器A中。 ④I
高5位为操作码,低3位为存放操作数的寄存器 编码。如:MOV A,R0 编码为1110 1000B,其十六进制表示为E8H (低3位000为寄存器R0的编码)。功能是将当前 工作寄存器R0中的数据传送到累加器A中。 2.8位编码含有操作码和寄存器编码
第3章80C51的指令系统 《单片机原理及应用技术》 二、双字节指令 位号 76543210. 字节 opcode data或direct 注:data和direct表示操作数或其地址。 第一字节表示操作码,第二个字节表示参 与操作的数据或数据存放的地址。 如:MOVA,#50H 编码为01110100B,01010000B。其十 六进制表示为74H,50H。功能是将立即数 “50H'传送到累加器A中。 ④☒以
二、双字节指令 第一字节表示操作码,第二个字节表示参 与操作的数据或数据存放的地址。 如:MOV A,#50H 编码为0111 0100B,0101 0000B。其十 六进制表示为74H,50H。功能是将立即数 “50H”传送到累加器A中
第3章80C51的指令系统 《单片机原理及应用技术》 三、三字节指令 位号 76543210 字节知 opcode data或direct data或direct 指令的第一字节表示该指令的操作码,后 两个字节表示参与操作的数据或数据存放的 地址。如:M0V20H,#50H 编码为01110101B,0010 0000B,0101 0000B。其十六进制表示为75H,20H,50H。 功能是将立即数“50H”传送到内部RAM的 20H单元中
三、三字节指令 指令的第一字节表示该指令的操作码,后 两个字节表示参与操作的数据或数据存放的 地址。如:MOV 20H,#50H 编码为0111 0101B,0010 0000B,0101 0000B。其十六进制表示为75H,20H,50H。 功能是将立即数“50H”传送到内部RAM 的 20H单元中
第3章80C51的指令系统 《单片机原理及应用技术》 3.1.2符号指令的格式 一般格式为: 操作助记符[目的操作数[,源操作数][;注释] 多数指令为两操作数指令;当指令操作数隐含在 操作助记符中时,在形式上这种指令无操作数;另 有一些指令为单操作数指令或三操作数指令。指令 的一般格式中使用了可选择符号“[]”,包含的内 容因指令的不同可以有或无。 在两个操作数的指令中,通常目的操作数写在 左边,源操作数写在右边
3.1.2 符号指令的格式 一般格式为: 操作助记符 [目的操作数][,源操作数][;注释] 多数指令为两操作数指令;当指令操作数隐含在 操作助记符中时,在形式上这种指令无操作数;另 有一些指令为单操作数指令或三操作数指令。指令 的一般格式中使用了可选择符号“[ ]”,包含的内 容因指令的不同可以有或无。 在两个操作数的指令中,通常目的操作数写在 左边,源操作数写在右边
第3章80C51的指令系统 《单片机原理及应用技术》 如:ANLA,#40H 功能是将立即数“40H同累加器A中的数 进行“与”操作,结果送回累加器 。 ANL为“与”操作的助记符,立即数 “40H为源操作数,累加器A为目的操作数。 注:在指令中,多数情况下累加器用“A” 表示,仅在直接寻址方式中,用“ACC”表 示累加器在SFR区的具体地址EOH。 试比较,指令MOVA,#30H的机器码为 74H、30H;而指令MOV ACC,#30H的机 器码为75H、E0H、30H
如:ANL A,#40H 功能是将立即数“40H”同累加器A中的数 进行“与”操作,结果送回累加器。 ANL为“与”操作的助记符,立即数 “40H”为源操作数,累加器A为目的操作数。 注:在指令中,多数情况下累加器用“A” 表示,仅在直接寻址方式中,用“ACC”表 示累加器在SFR区的具体地址E0H。 试比较,指令MOV A,#30H的机器码为 74H、30H;而指令MOV ACC,#30H的机 器码为75H、E0H、30H
第3章80C51的指令系统 《单片机原理及应用技术》 3.1.3 符号指令及其注释中常用的符 Rn(n=0-7)-前选中的工作寄存器组中的 寄存器R0~R7之一; Ri(=0,1)-当前选中的工作寄存器组中的 寄存器R0或R1; 间址寄存器前缀; #data=-=-8位立即数; #data16----16位立即数; direct-=-片内低128个RAM单元地址及SFR 地址(可用符号名称表示);
3.1.3 符号指令及其注释中常用的符 Rn(n=0~7)--当前选中的工作寄存器组中的 号 寄存器R0~R7之一; Ri(i=0,1)--当前选中的工作寄存器组中的 寄存器R0或R1; @ ---------------间址寄存器前缀; #data ------------8位立即数; #data16---------16位立即数; direct--------片内低128个RAM单元地址及SFR 地址(可用符号名称表示);
第3章80C51的指令系统 《单片机原理及应用技术》 addr11-=-=-=-11位目的地址; addr16--=---16位目的地址; rel---------------- 补码形式表示的8位地址偏移量,值 在一128~十127范围内; bit--片内RAM位地址、 SFR的位地址(可 用符号名称表示); 位操作数的取反操作前缀; (X) 表示义地址单元或寄存器中的内容; 将箭头右边的内容送入箭头左边的单 元中。 ④☒I
addr11-----------11位目的地址; addr16-----------16位目的地址; rel-----------------补码形式表示的8位地址偏移量,值 在-128~+127范围内; bit----------------片内RAM位地址、SFR的位地址(可 用符号名称表示); /-------------------位操作数的取反操作前缀; (×)----------- 表示 × 地址单元或寄存器中的内容; ← ----------------将箭头右边的内容送入箭头左边的单 元中
第3章80C51的指令系统 《单片机原理及应用技术》 3.2 80C51的寻址方式 是寻找操作数或指令的地址的方式。 80C51的寻址方式有七种。即:寄存器寻 址、直接寻址、寄存器间接寻址、立即寻 址、基址寄存器加变址寄存器变址寻址、 相对寻址和位寻址。 若不特别声明,我们后面提到的寻址方式 均指源操作数的寻址方式
3.2 80C51的寻址方式 • 是寻找操作数或指令的地址的方式。 • 80C51的寻址方式有七种。即:寄存器寻 址、直接寻址、寄存器间接寻址、立即寻 址、基址寄存器加变址寄存器变址寻址、 相对寻址和位寻址。 若不特别声明,我们后面提到的寻址方式 均指源操作数的寻址方式