第三章 MCS-51单片机的寻址方式和指令系统

更新时间:2023-07-21 15:05:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第3章 MCS-51单片机的寻址方式和指令系统 章 单片机的寻址方式和指令系统3.1 MCS-51指令系统概述 指令系统概述 3.2 寻址方式 3.3 指令系统

第3.1 MCS-51指令概述 指令概述指令是规定计算机进行某种操作的命令。 指令是规定计算机进行某种操作的命令。 指令系统:计算机能够执行的各种指令的集合。 指令系统:计算机能够执行的各种指令的集合。 用助记符形式来表示的机器指令称汇编语言指令。 用助记符形式来表示的机器指令称汇编语言指令。 指令格式: 指令格式: 操作数1] ,操作数2] [,操作数 操作码 [操作数 [,操作数 操作数 ,操作数3]

计算机语言1、机器语言:用二进制代码表示的,能被计算机直接识 、机器语言:用二进制代码表示的, 别和执行的一种机器指令的集合。目标程序。 别和执行的一种机器指令的集合。目标程序。 2、汇编语言:用助记符表示表示操作码,用字符(字母、 、汇编语言:用助记符表示表示操作码,用字符(字母、 数字、符号)表示操作数的指令称汇编指令。 数字、符号)表示操作数的指令称汇编指令。 汇编语言程序占用存储单元较少,执行速度较快, 汇编语言程序占用存储单元较少,执行速度较快,能够准 确掌握执行时间,可实现精细控制, 确掌握执行时间,可实现精细控制,因此特别适用于实时 控制。 控制。 汇编语言是面向机器的语言, 面向机器的语言 汇编语言是面向机器的语言,各种计算机的汇编语言是不 同的。 同的。

计算机语言3、高级语言:高级语言是面向过程的语言。用高级语言 、高级语言:高级语言是面向过程的语言。 面向过程的语言 编程主要着眼于算法, 编程主要着眼于算法,而不必了解计算机的内部结构和指 令系统,因此易学易用。高级语言是独立于机器的, 令系统,因此易学易用。高级语言是独立于机器的,一般 的,同一个程序可在任何种类的机器中使用。高级语言适 同一个程序可在任何种类的机器中使用。 用于科学计算、数据处理等方面。 用于科学计算、数据处理等方面。 将汇编语言翻译成目标程序的过程称为汇编。 将汇编语言翻译成目标程序的过程称为汇编。由人工汇编 汇编 和机器汇编两种。 和机器汇编两种。 高级语言转换成机器语言只能由计算机完成, 高级语言转换成机器语言只能由计算机完成,使用的软件 称为编译程序或解释程序。 称为编译程序或解释程序。

3.2 寻址方式寻址方式:寻找操作数或操作数地址的方法。 寻址方式:寻找操作数或操作数地址的方法。 7种寻址方式: 种寻址方式: 种寻址方式 立即寻址 直接寻址 寄存器寻址

寄存器间接寻址 基址加变址寻址 相对寻址 位寻址。 位寻址。

立即寻址操作数直接出现在指令中。 操作数直接出现在指令中。 立即数前必须加“ ” 立即数可以是8或 位的 位的。 立即数前必须加“#”,立即数可以是 或16位的。 MOV A,#30H , MOV DPTR,#3000H ,

立即寻址主要用来给寄存器或存储单元赋值。

直接寻址指令中直接给出操作数所在单元的有效地址。 指令中直接给出操作数所在单元的有效地址。 MOV A,30H , MOV A,90H(P1) , ( ) LJMP addr16 可以直接寻址的存储区域: 可以直接寻址的存储区域: 单元。 (1)片内 )片内RAM的00H~7FH单元。 的 单元 ( 2)SFR(80H~0FFH), 地址可以以单元地址给 ) ( ) 出,也可以以寄存器符号给出。 也可以以寄存器符号给出。 (3)访问程序存储器。 )访问程序存储器。

寄存器寻址操作数在寄存器中。 操作数在寄存器中。 MOV A,R0 , INC 可以寻址的寄存器: 可以寻址的寄存器: (1)R0~R7。 ) 。 (2)部分专用寄存器。如A,B,DPTR等。 )部分专用寄存器。 , , 等 DPTR

寄存器间接寻址寄存器中存放的是操作数的地址, 寄存器中存放的是操作数的地址,而不是操作数本 身。寄存器前加“@”。 寄存器前加“ ” 可以间接寻址的寄存器: 、 、 可以间接寻址的寄存器:R0、R1、DPTR MOV A, @ R0 , MOVX A, @ DPTR , 可以寻址的存储区域: 可以寻址的存储区域: 的低128B。 @R0、 @R1 (1)内部 )内部RAM的低 的低 。 、 的高128B。 @R0、 @R1 (2)内部 )内部RAM的高 的高 。 、 (3)外部 )外部RAM。 @DPTR、 @R0、 @R1 。 、 、 (4)堆栈操作(SP) )堆栈操作( )

基址加变址寻址作为基址寄存器, 以DPTR或PC作为基址寄存器,累加器 作为变址 或 作为基址寄存器 累加器A作为变址 中寄存器,并以两者内容相加形成 位地址作为操作 中寄存器,并以两者内容相加形成16位地址作为操作 数的地址。常用于查表操作。前加“ ” 数的地址。常用于查表操作。前加“@”。 MOVC A, @ A+DPTR , MOVC A, @ A+PC , JMP @ A+DPTR 特点: 特点:(1)只能对程序存储器寻址。 )只能对程序存储器寻址。 (2) 只有 条。 ) 只有3条 (3)都是单字节指令。 )都是单字节指令。

相对寻址方式PC的当前值加上偏移量 作为目标地址,rel为带 的当前值加上偏移量rel作为目标地址 的当前值加上偏移量 作为目标地址, 为带 符号的8位二进制数,其表示范围为 符号的 位二进制数,其表示范围为-128~127。 位二进制数 。

JC rel 偏移地址通常以标号表示。 偏移地址通常以标号表示。

位寻址方式对位操作区域进行位寻址时的寻址方式, 对位

操作区域进行位寻址时的寻址方式,使用位累 加器C。操作数是直接给出该位的地址。 加器 。操作数是直接给出该位的地址。 MOV A,30H , MOV C,30H , 位寻址的寻址范围: 位寻址的寻址范围: 中的位寻址区, (1)内部 ) 内部RAM中的位寻址区, 字节地址 中的位寻址区 字节地址20H~2FH 对应的位地址00H~7FH的位地址区间。 的位地址区间。 对应的位地址 的位地址区间 中地址可以被8整除的位地址区 (2)SFR中地址可以被 整除的位地址区。 ) 中地址可以被 整除的位地址区。

位名称表示方法的第6位 来说明 以PSW的第 位AC来说明 的第 (1)直接使用位地址 )直接使用位地址D6H (2)位名称表示方法 )位名称表示方法AC (3)单元地址加位的表示方法 )单元地址加位的表示方法D0H.6 (4)专用寄存器符号加位的表示方法 )专用寄存器符号加位的表示方法PSW.6

寻址方式可寻址的存储空间寻址方式 立即寻址 直接寻址 寄存器寻址 寄存器间接寻址 基址加变址寻址 相对寻址 位寻址 寻址空间 对寄存器或存储单元赋值 内部RAM,SFR,ROM 低128B内部 内部 , , R0~R7以及部分专用寄存器 以及部分专用寄存器 内部RAM、外部RAM、SP 、外部 内部 、 ROM ROM 位地址空间

存储空间寻址方式可采用的内部RAM 直接寻址,@R0、 @R1 直接寻址, 内部 、 00H~7FH 内部RAM @R0、 @R1 内部 、 80H~FFH SFR 直接寻址(唯一方式) 直接寻址(唯一方式) 80H~FFH 外部RAM @DPTR(地址大于 外部 (地址大于256B) ) @R0、 @R1(地址小于 、 (地址小于256B) ) ROM 直接寻址、基址加变址寻址、 直接寻址、基址加变址寻址、相对寻址

Rn (n=0~7):当前寄存器组的 个通用寄存器 ~R7之一; 个通用寄存器R0~ 之一 之一; = ~ :当前寄存器组的8个通用寄存器 Ri (i=0,1):可用作间接寻址的寄存器,只能是 ,R1两 = , :可用作间接寻址的寄存器,只能是R0, 两 个寄存器之一; 个寄存器之一; direct:内部 位单元地址。 :内部RAM的8位单元地址。既可以是内部 的 位单元地址 既可以是内部RAM的 的 个单元地址, 低128个单元地址,也可以是专用寄存器的单元地址或符号; 个单元地址 也可以是专用寄存器的单元地址或符号; A:累加器(直接寻址方式下的累加器表示为 :累加器 直接寻址方式下的累加器表示为ACC); ; 直接寻址方式下的累加器表示为 B:B寄存器 : 寄存器 DPTR:数据指针; :数据指针; C:进位标志位 ,它是布尔处理机的累加器,也称之 :进位标志位CY,它是布尔处理机的累加器, 为累加位; 为累加位; 位立即数; #data:8位立即数; : 位立即数 位立即数; #datal6:16位立即数;

: 位立即数

汇编语言中常用符号的说明

汇编语言中常用符号的说明addr16:16位目的地址,只限于在 : 位目的地址 只限于在LCALL和LJMP指令中 位目的地址, 和 指令中 使用; 使用; addr11:11位目的地址,只限于在 位目的地址, : 位目的地址 只限于在ACALL和AJMP指令中 和 指令中 使用; 使用; rel:相对转移指令中的偏移量,为8位带符号补码数; 位带符号补码数; :相对转移指令中的偏移量, 位带符号补码数 bit:内部RAM(包括专用寄存器 中的直接寻址位; :内部 包括专用寄存器)中的直接寻址位; 包括专用寄存器 中的直接寻址位 @:间址寄存器的前缀标志 间址寄存器的前缀标志; @:间址寄存器的前缀标志; /:加在位地址的前面 表示对该位状态取反; 加在位地址的前面, /:加在位地址的前面,表示对该位状态取反; (X):某寄存器或某单元的内容; :某寄存器或某单元的内容; ((X)):由X间接寻址的单元中的内容; 间接寻址的单元中的内容; : 间接寻址的单元中的内容 ← : 箭头左边的内容被箭头右边的内容所取代; 箭头左边的内容被箭头右边的内容所取代; ←→:交换箭头左右的数据; :交换箭头左右的数据; $:当前指令的地址。 :当前指令的地址。

3.3 指令系统5大类: 大类: 大类 数据传送类指令、 数据传送类指令、 算术运算类指令、 算术运算类指令、 逻辑运算类指令、 逻辑运算类指令、 控制转移类指令 位操作类指令。 位操作类指令。 共计111条指令 条指令 共计

3.3.1 数据传送类指令(29条) 数据传送类指令( 条指令功能: 指令功能:一般是把源操作数传输到目的操 作数, 指令执行后, 源操作数不变, 作数 , 指令执行后 , 源操作数不变 , 而目的 操作数修改为源操作数。 操作数修改为源操作数。 数据传送可在3个区间进行 个区间进行: 数据传送可在 个区间进行: (1)芯片内部各单元之间。 )芯片内部各单元之间。 与外部RAM之间。 之间。 (2)累加器 与外部 )累加器A与外部 之间 (3)累加器 与程序存储器之间 )累加器A与程序存储器之间

(1)内部 数据传送指令(16条) ) 数据传送指令( 条单片机芯片内部数据传送范围:寄存器、累加器、 单片机芯片内部数据传送范围 : 寄存器 、 累加器 、 专用 寄存器以及RAM单元。 单元。 寄存器以及 单元 为目的操作数的指令: (1) 以累加器 为目的操作数的指令: ) 以累加器A为目的操作数的指令 MOV A,Rn , ;A←(Rn), Rn=R0~R7 ( ) = ~ MOV A,direct ;A←(direct) ( ) , MOV A,@Ri ((Ri)) , ;A←(( )), Ri=R0,R1 (( )

), = , MOV A,#data ;A← data , 功能:将源操作数所指定的内容送入累加器A。 功能:将源操作数所指定的内容送入累加器 。

为目的操作数的指令: (2) 以寄存器 为目的操作数的指令: ) 以寄存器Rn为目的操作数的指令

MOV Rn,A , MOV Rn,direct , MOV Rn,#data ,

;Rn←(A), Rn=R0~R7 ( ), = ~ ;Rn←(direct) ( ) ;Rn←data

功能:将源操作数所指定的内容送到当前工作寄存器组 ~ 功能:将源操作数所指定的内容送到当前工作寄存器组R0~ R7中的某个寄存器中。 中的某个寄存器中。 中的某个寄存器中

本文来源:https://www.bwwdw.com/article/58ym.html

Top