第二章MCS-51指令系统 第一节概述 第二节数据传送指令 第三节算术与逻辑运算指令 第四节控制转移指令 第五节位操作指令 Micro Controller unit
第二章 MCS-51指令系统 第一节 概述 第二节 数据传送指令 第三节 算术与逻辑运算指令 第四节 控制转移指令 第五节 位操作指令
本章要点 指令系统是编写程序的基础,MCS-51 指令系统有数据传送、算术与逻辑运算、 控制转移、位操作等指令共11条,本章 介绍MCS-51指令系统的书写格式、寻址 方式以及各指令的特点与使用场合
本章要点 • 指令系统是编写程序的基础,MCS-51 指令系统有数据传送、算术与逻辑运算、 控制转移、位操作等指令共111条,本章 介绍MCS-51指令系统的书写格式、寻址 方式以及各指令的特点与使用场合
第一节概述 、MCS-51指令书写格式 MCS-51指令的书写格式为每条指令写成一行,每行分成 若干段,第一段总是为操作符,第一段之后为操作数,有的 指令有操作数也有的指令没有操作数,例如: 无操作数指令 RET 有一个操作数指令INCA 有两个操作数指令MOVA,21H 有三个操作数指令CJNE4,#50, TARGET 指令码也称操作符 指令码与操作数操作数与操作数之操作数 间应留一空格 间应用逗号隔开
第一节 概述 一、 MCS-51指令书写格式 MCS-51指令的书写格式为每条指令写成一行,每行分成 若干段,第一段总是为操作符,第一段之后为操作数,有的 指令有操作数也有的指令没有操作数,例如: 无操作数指令 RET 有一个操作数指令 INC A 有两个操作数指令 MOV A,21H 有三个操作数指令 CJNE A,#50H,TARGET 指令码也称操作符 指令码与操作数 间应留一空格 操作数与操作数之 间应用逗号隔开 操作数
二、寻址方式 1.立即寻址 操作数值直接标明在指令上,称为立即数,采 用立即数的寻址方式称为立即寻址。立即数要用 #号打头,例如指令MOVA,#44H(对应机 器码为7444,其中#44即为立即数) 将立即数44送ACC 程序存储器 地址 指令码 74H ACO 2008 44I 44H DB
二、寻址方式 1.立即寻址 将立即数44送ACC 操作数值直接标明在指令上,称为立即数,采 用立即数的寻址方式称为立即寻址。立即数要用 #号打头,例如指令 MOV A,#44H (对应机 器码为74 44,其中#44即为立即数)
2.直接寻址 操作数不是立即数,而是地址值,所需的数从 该地址单元中获得,由于这类指令的地址直接标 注在指令上,所以称为直接寻址。地址值和立即 数的区别是前面是否加#号,例如44H为地址, #44H为立即数。 器嵛 器嵛 画仑訃扯世 龈批 从44H中取 出数据O8H H23|800c :HE a Hp 000S A H80 HAA H80 HCA ad 送给ACC
操作数不是立即数,而是地址值,所需的数从 该地址单元中获得,由于这类指令的地址直接标 注在指令上,所以称为直接寻址。地址值和立即 数的区别是前面是否加 #号,例如44H为地址, #44H为立即数。 从44H中取 出数据08H 送给ACC 2 .直接寻址
3寄存器寻址 操作数不是立即数,也不是地址,而是一个 寄存器名称,则称为寄存器寻址,例如指令 MOVA,R1。其中R1即寄存器名称 从寄存器R1中取数 片内数据存储器 程序存储器 地址|数据 地址指令码]1 R135H ACO 35H 2008 E9H DB 将R中的数据送ACC
操作数不是立即数,也不是地址,而是一个 寄存器名称,则称为寄存器寻址,例如 指令 MOV A,R1。其中R1即寄存器名称。 从寄存器R1中取数 将R1中的数据送ACC 3 .寄存器寻址
4.寄存器间接寻址 这类指令先从指令上所标明的寄存器中找出存放 数据的地址,然后再从所标明的的地址中取数。由 于存储数据的地址不直接标明在指令中,所以称之 为间接寻址。例如指令MOVA,@R0(注意!只有 RO、R1可以间接寻址) 从寄存器中找出 片内数据存储器 存放数据的地址 地址数据 程序存储器 「地址数据 RO 44H 2008H E6H 从该地址 ACO 44H 07H 中取数 07H 将数送ACC
这类指令先从指令上所标明的寄存器中找出存放 数据的地址,然后再从所标明的的地址中取数。由 于存储数据的地址不直接标明在指令中,所以称之 为间接寻址。例如指令MOV A,@R0 (注意!只有 R0、R1可以间接寻址)。 从寄存器中找出 存放数据的地址 从该地址 中取数 将数送ACC 4 .寄存器间接寻址
5变址间接寻址 这种寻址方式是将基址值(包括寄存器PC或DPTR)加上 变址值(只能是A),并以此为地址,从该地址单元中取数 例如指令 MOVC A,@A+DPTR和 MOVC A,@A+DPTR。 程序存储器 1从ACC中 匚地址指令码 )PTR取出 取出变址 2008H93H====1 值20OH 30H ACC DPYR 2040H 27H 30]27 201OH 4求得2010H+30H=2040H 从2040H中取数27H送ACC
这种寻址方式是将基址值(包括寄存器PC或DPTR)加上 变址值(只能是A),并以此为地址,从该地址单元中取数, 例如指令MOVC A,@A+DPTR和MOVC A,@A+DPTR。 1.从ACC中 取出变址 30H 2.从DPTR .取出 基址值2010H 4.求得2010H+30H=2040H 从2040H中取数27H送ACC 5.变址间接寻址
6.相对寻址 相对寻址只限于转移类指令使用,例如 SJMP rel DJNZ Rn, rel 它以PC当前值为基地址,加上指令中的偏移 量rel,求出转移地址值。由于转移地址可能 位于基址之前,也可能位于基址之后,如果位 于基址之后,则实际的转移地址等于基址加偏 移量。如果位于基址之前,则实际的转移地址 等于基址减偏移量。如果指令上的偏移量采用 补码以表示正负,则计算转移地址可以一律使 用加法。 返回本章首页
相对寻址只限于转移类指令使用,例如 SJMP rel DJNZ Rn,rel 它以PC当前值为基地址,加上指令中的偏移 量rel,求出转移地址值。由于转移地址可能 位于基址之前,也可能位于基址之后,如果位 于基址之后,则实际的转移地址等于基址加偏 移量。如果位于基址之前,则实际的转移地址 等于基址减偏移量。如果指令上的偏移量采用 补码以表示正负,则计算转移地址可以一律使 用加法。 6 .相对寻址 返回本章首页
第二节数据传送指令 数据传送指令的功能 数据传送指令的功能是将数据从源送到目 源 目标 源可以是立即数、寄存器、寄存器间接地 址,片外存储器或片外存储器间接地址。 目标可以是寄存器、寄存器间接地址,片 外存储器或片外存储器间接地址
一、数据传送指令的功能 数据传送指令的功能是将数据从源送到目 标 源可以是立即数、寄存器、寄存器间接地 址,片外存储器或片外存储器间接地址。 目标可以是寄存器、寄存器间接地址,片 外存储器或片外存储器间接地址。 第二节 数据传送指令 源 目标