第3章-指令系统与汇编语言程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章 指令系统与汇编语言程序设计
单片机和所有微型计算机一样,要执行某 单片机和所有微型计算机一样, 种操作或运算时,要先向CPU输入操作指 种操作或运算时,要先向CPU输入操作指 MCS51单片机指令系统 单片机指令系统, 令。MCS51单片机指令系统,不但适用于 Intel公司生产的 Intel公司生产的MSC51系列单片机,而且 公司生产的MSC51系列单片机 系列单片机, 也适用于其它公司生产的8051内核单片机 内核单片机。 也适用于其它公司生产的8051内核单片机。 学习指令系统, 学习指令系统,掌握指令的功能和应用是 非常重要的, 非常重要的,这是用汇编语言进行程序设 计的基础。本章将详细介绍MCS51单片机 计的基础。本章将详细介绍MCS51单片机 指令系统及其汇编语言程序设计的方法。 指令系统及其汇编语言程序设计的方法。
Biblioteka Baidu
;80H→A ;2000H→DPTR
3.3.2 直接寻址
指令中直接给出操作数的地址的寻址方式称为直接寻址。 指令中直接给出操作数的地址的寻址方式称为直接寻址。 寻址对象为:(1)内部数据存储器 内部数据存储器, 寻址对象为:(1)内部数据存储器,在指令中以直接地址 表示;(2)特殊功能寄存器SFR,在指令中用寄存器名表示。 特殊功能寄存器SFR 表示;(2)特殊功能寄存器SFR,在指令中用寄存器名表示。 直接寻址的指令码中应有直接地址字节, 直接寻址的指令码中应有直接地址字节,因此多为二字 节或三字节指令。当指令中的两个操作数均为直接地址时, 节或三字节指令。当指令中的两个操作数均为直接地址时, 指令格式为: 目的地址, 指令格式为:操作码 目的地址,源地址 例: MOV MOV MOV
3.1 指令系统简介
计算机通过执行程序完成人们指定的任务,程序是由一条 计算机通过执行程序完成人们指定的任务, 一条指令构成的,能被CPU识别、执行的指令集合就是该CPU CPU识别 一条指令构成的,能被CPU识别、执行的指令集合就是该CPU 的指令系统。 的指令系统。 MCS51单片机的指令系统包括数据传送交换类 单片机的指令系统包括数据传送交换类、 MCS51单片机的指令系统包括数据传送交换类、算术运 算类、逻辑运算与循环类、子程序调用与转移类、 算类、逻辑运算与循环类、子程序调用与转移类、位操作类 以及CPU控制类等指令。它有如下3个主要特点: CPU控制类等指令 以及CPU控制类等指令。它有如下3个主要特点: 指令执行速度快。大多数指令执行时间为1 (1) 指令执行速度快。大多数指令执行时间为1个机器 周期,少数指令(45条 个机器周期,仅有乘、 周期,少数指令(45条)为2个机器周期,仅有乘、除2条指 令为4个机器周期。 令为4个机器周期。 指令短。大多数指令为1 字节,少数为3个字节。 (2) 指令短。大多数指令为1~2字节,少数为3个字节。 具有丰富的位操作指令。 (3) 具有丰富的位操作指令。可对内部数据存储器和特 殊功能寄存器中的可寻址位进行多种形式的位操作。 殊功能寄存器中的可寻址位进行多种形式的位操作。 单片机指令的这些特点使之具有极强的实时控制和数据 运算功能。 运算功能。
3.3 MCS51单片机的寻址方式 MCS51单片机的寻址方式
MCS51单片机有七种寻址方式: MCS51单片机有七种寻址方式: 单片机有七种寻址方式
1、 2、 3、 4、 5、 6、 7、 立即寻址 直接寻址 寄存器寻址 寄存器间接寻址 变址寻址 位寻址 相对寻址
3.3.1 立即寻址
指令中直接给出操作数的寻址方式称为立即寻址。 指令中直接给出操作数的寻址方式称为立即寻址。 MCS51单片机的指令系统中 单片机的指令系统中, 在MCS51单片机的指令系统中,立即数用一个前面 #”号的 位数(#data,如#30H) 16位数 号的8 加“#”号的8位数(#data,如#30H)或16位数 #data16,如#2052H)表示。 (#data16,如#2052H)表示。指令中立即数在操 作码之后, 作码之后,因此立即寻址指令多为二字节或三字 节指令。 节指令。 例: MOV A , # 80H MOV DPTR , # 2000H
以通用寄存器的内容为操作数的寻址方式称为寄 存器寻址。 存器寻址。 通用寄存器包括: DPTR,R0~R7。 通用寄存器包括:A、B、DPTR,R0~R7。其 中B寄存器仅在乘、除法指令中为寄存器寻址,在 寄存器仅在乘、除法指令中为寄存器寻址, 其他指令中为直接寻址。 寄存器可以寄存器寻址, 其他指令中为直接寻址。A寄存器可以寄存器寻址, 也可以直接寻址(此时写作ACC)。直接寻址和寄 ACC)。 也可以直接寻址(此时写作ACC)。直接寻址和寄 存器寻址的区别在于, 存器寻址的区别在于,直接寻址是操作数所在的 字节地址(占一个字节)出现在指令码中, 字节地址(占一个字节)出现在指令码中,寄存 器寻址是寄存器编码出现在指令码中。 器寻址是寄存器编码出现在指令码中。由于使用 寄存器寻址的寄存器少、编码位数少( 寄存器寻址的寄存器少、编码位数少(少于三位 二进制数), ),通常操作码和寄存器编码合用一个 二进制数),通常操作码和寄存器编码合用一个 字节,因此寄存器寻址的指令机器码短,执行快。 字节,因此寄存器寻址的指令机器码短,执行快。 除上面所指出的几个寄存器外, 除上面所指出的几个寄存器外,其他特殊功能寄 存器一律为直接寻址。 存器一律为直接寻址。
3.3.4 寄存器间接寻址
以寄存器中的内容为地址,而该地址中的内 以寄存器中的内容为地址, 容作为操作数的寻址方式称为寄存器间接寻址。 容作为操作数的寻址方式称为寄存器间接寻址。 能够进行寄存器间接寻址的寄存器有:R0、R1、 能够进行寄存器间接寻址的寄存器有:R0、R1、 DPTR,用前面加@表示, @R0、@R1、@DPTR。 DPTR,用前面加@表示,如@R0、@R1、@DPTR。寄 存器间接寻址的存储器空间包括内部数据存储器 和外部数据存储器。由于内部数据存储器共有128 和外部数据存储器。由于内部数据存储器共有128 字节,因此用一字节的R0 R1可间接寻址整个空 R0或 字节,因此用一字节的R0或R1可间接寻址整个空 而外部数据存储器最大可达64K字节, R0或 64K字节 间。而外部数据存储器最大可达64K字节,仅R0或 R1无法寻址整个空间 为此,需由P2 无法寻址整个空间, P2端口提供外 R1无法寻址整个空间,为此,需由P2端口提供外 RAM的高 位地址, R0或R1提供低 位地址, 的高8 提供低8 部RAM的高8位地址,由R0或R1提供低8位地址,由 此共同寻址64K字节的范围。也可用16位的DPTR 64K字节的范围 16位的DPTR寄 此共同寻址64K字节的范围。也可用16位的DPTR寄 存器间接寻址64K字节的存储空间。 64K字节的存储空间 存器间接寻址64K字节的存储空间。
3.2 指令的格式
指令的具体格式依赖于计算机的结构特征,但指 指令的具体格式依赖于计算机的结构特征, 令的组成是一样的, 令的组成是一样的,都包含操作码和操作数两个 部分。指令的一般格式为: 部分。指令的一般格式为:操作码 操作数 操作码用来表示执行什么性质和类型的操作, 操作码用来表示执行什么性质和类型的操作, 如加法、减法等, 如加法、减法等,操作数用以指出参加操作的数 据或数据的存储地址。 据或数据的存储地址。 不同类型的指令,操作数的个数是不一样的。 不同类型的指令,操作数的个数是不一样的。 在具有多个操作数的指令中, 在具有多个操作数的指令中,各操作数分别称为 第一操作数、第二操作数等。例如:加法指令, 第一操作数、第二操作数等。例如:加法指令, 两个数a 相加, 两个数a和b相加,a和b就是参加操作的两个操作 数。对于加法等操作,有些计算机指令还指出存 对于加法等操作, 放操作结果的地址, 放操作结果的地址,另外一些计算机把运算结果 总是存放在某一个寄存器中(称为累加器)。 总是存放在某一个寄存器中(称为累加器)。
3.2 指令的格式
若指令的操作数字段内容就是一个参加操作的数 这种操作数称为立即数。大多数的指令, 据,这种操作数称为立即数。大多数的指令,操 作数存放于寄存器或存储器中( 作数存放于寄存器或存储器中(这部分存储器常 称为数据存储器), ),指令的操作数字段仅指出操 称为数据存储器),指令的操作数字段仅指出操 作数所在的寄存器或存储器地址。 作数所在的寄存器或存储器地址。 MCS51指令系统中 有单字节、 指令系统中, 在MCS51指令系统中,有单字节、双字节和三 字节这些不同长度的指令,指令的长度不同,指 字节这些不同长度的指令,指令的长度不同, 令的格式也就不同。 令的格式也就不同。 单字节指令, 单字节指令,操作码和操作数同在一个字节 双字节指令中操作码占一个字节, 中;双字节指令中操作码占一个字节,操作数占 一个字节;三字节指令中操作码占一个字节、 一个字节;三字节指令中操作码占一个字节、操 作数占两个字节。其中操作数可能是数据, 作数占两个字节。其中操作数可能是数据,也可 能是地址。 能是地址。
3.3 MCS51单片机的寻址方式 MCS51单片机的寻址方式
寻址方式是指令中提供操作数的形式,即 寻址方式是指令中提供操作数的形式, 寻找操作数或操作数所在地址的方式。 寻找操作数或操作数所在地址的方式。 MCS51单片机中 单片机中, MCS51单片机中,存放数据的存储器空间有 内部RAM 特殊功能寄存器SFR RAM、 SFR、 4种:内部RAM、特殊功能寄存器SFR、外部 RAM和程序存储器ROM。其中,除内部RAM 和程序存储器ROM RAM和 RAM和程序存储器ROM。其中,除内部RAM和 SFR统一编址外 外部RAM和程序存储器ROM 统一编址外, RAM和程序存储器 SFR统一编址外,外部RAM和程序存储器ROM 是分开编址的。 是分开编址的。为了区别指令中操作数所 处的地址空间, 处的地址空间,对于不同存贮器中的数据 操作,采用不同的寻址方式,这是MCS51 MCS51单 操作,采用不同的寻址方式,这是MCS51单 片机在寻址方式上的一个显著特点。 片机在寻址方式上的一个显著特点。
A, 25H P0, # 45H 30H, 20H
;内部RAM的(25H)→A 内部RAM的(25H) ;45H→P0,P0为直接寻址的 ;45H→P0,P0为直接寻址的 SFR,其地址为80H SFR,其地址为80H ;内部RAM的(20H) ;内部RAM的(20H)→30H
3.3.3 寄存器寻址
3.3.4 寄存器间接寻址
在指令中,是对内部RAM还是对外部RAM寻址, RAM还是对外部RAM寻址 在指令中,是对内部RAM还是对外部RAM寻址, 区别在于对外部RAM的操作仅有数据传送类指令, RAM的操作仅有数据传送类指令 区别在于对外部RAM的操作仅有数据传送类指令, 并且用MOVX作为操作码助记符。 MOVX作为操作码助记符 并且用MOVX作为操作码助记符。 例: MOV @R0, A ;A→以R0内容为地址的内 ;A→以R0内容为地址的内 部RAM单元 RAM单元 MOVX A, @R1 ;外部RAM(地址为P2 ;外部RAM(地址为P2 R1)的内容→A R1)的内容→ MOVX @DPTR, A ;A→以DPTR内容为地址 ;A→以DPTR内容为地址 的外部RAM单元 的外部RAM单元
3.3.3 寄存器寻址
例: MOV MUL MOV ADD ;R0→A, A、R0均为寄存器寻址 A、R0均为寄存器寻址 ;A * B→BA, A、B为寄存器寻址 ;A A、 ;R0→B,R0为寄存器寻址,B ;R0→B,R0为寄存器寻址,B为 直接寻址 A, ACC ;A为寄存器寻址,ACC为直接寻 ;A为寄存器寻址,ACC为直接寻 址,因为指令只有ADD 址,因为指令只有ADD A,dir 形式,而无ADD 形式,而无ADD A, A形式, A形式, 否则汇编通不过。 A, R0 AB B, R0
相关文档
最新文档