第3章 mcs51指令系统 - 副本

更新时间:2023-06-05 18:11:01 阅读量: 实用文档 文档下载

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

公司

第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)单字节指令:操作码、操作数 同在一个字节中。

公司

(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) 特殊功能寄存器。除了以单元地址的形式外, 还可用寄存器符号的形式给出。例如: MOV A,80H 与 MOV A,P0是等价的。

公司

3. 寄存器间接寻址方式寄存器中存放的是操作数的地址,在寄存器前加前缀 标志“@” 。 访问内部RAM或外部RAM的低256个字节时,只能采用R0 或R1作为间址寄存器。例如:

MOV寻址范围:

A,@Ri

;i=0或1

其中Ri中的内容为40H,把内部RAM40H单元内容送A。 (1)访问内部RAM低128个单元,其通用形式为@Ri (2)对外部内部RAM的64K字节的间接寻址,例如: MOVX A,@DPTR

公司

(3)片外数据存储器的低256字节例如:MOVX (4)堆栈区 A,@Ri

堆栈操作指令PUSH(压栈)和POP(出栈)使用堆 栈指针(SP)作间址寄存器4.立即寻址方式 操作数在指令中直接给出,需在操作数前面加前缀 “#”。例如:

MOV

A,#40H

5.基址寄存器加变址寄存器间址寻址方式 本寻址方式是以DPTR或PC作基址寄存器,以累加器A 作为变址寄存器。

公司

例如:指令 MOVC A,@A+DPTR 其中A的原有内容为05H, DPTR的内容为0400H,该指令执行的结果是把程序存 储器0405H单元的内容传送给A。 说明:(1)本寻址方式是专门针对程序存储器的寻址方式, 寻址范围可达到64KB。 (2)本寻址方式的指令只有3条: MOVC MOVC JMP A,@A+DPTR A,@A+PC @A+DPTR

公司

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.相对寻址方式在 相 对 寻 址 的 转 移 指 令 中 , 给 出 了 地 址 偏 移 量 ,以 “rel”表示,即把PC的当前值加上偏移量就构成了程 序转移的目的地址: 目的地址=转移指令所在的地址 + 转移指令的字节数 + rel 偏移量rel是一带符号的8位二进制数补码数 。

范围是:–128 - +127

公司

向地址增加方向最大可转移(127+转移指令字节)个 单元地址,向地址减少方向最大可转移(128-转移 指令字节)个单元地址。 7种寻址方式及寻址空间,见表3-1(P43)。3.4 MCS-51指令系统分类介绍 111条指令,按功能分类,可分为下面5大类: (1)数据传送类(28条) (2)算术操作类(24条

(3)逻辑运算类(25条)(4)控制转移类(17条) (5)位操作类(17条)

公司

指令中符号的意义:Rn 当前寄存器区的8个工作寄存器R0~R7(n=0~ 7)。 Ri 当前寄存器区中可作间接寻址寄存器的2个寄存 器R0、R1(i=0,1)。

Direct 直接地址,即8位的内部RAM或特殊功能寄存器的地址。 #data 包含在指令中的8位立即数。 包含在指令中的16位立即数。 #data16

rel 相对转移指令中的偏移量,为8位的带符号补

码数。

公司

DPTR 数据指针,可用作16位的数据地址寄存器。bit 内部RAM或特殊功能寄存器中的直接寻址位。

C(或Cy) 进位标志位或位处理机中的累加器。addr11 addr16 11位目的地址 16位目的地址

@ 间接寻址寄存器前缀,如@Ri,@A+DPTR (X) X中的内容。

((X)) 由X寻址的单元中的内容。→ 箭头右边的内容被箭头左边的内容所取代。

公司

3.4.1

数据传送类指令MOV <目的操作数>,<源操作数>

使用最频繁的一类指令,通用格式: 属“复制”性质,而不是“搬家” 数据传送类指令不影响标志位:Cy、Ac和OV,影响奇 偶标志位P。

公司

1.以累加器为目的操作数的指令MOV MOV A,Rn A,@Ri ; (Rn)→A,n=0~7 ; ((Ri))→A,i=0,1

MOVMOV

A,directA,#data A,R6 A,70H

;(direct)→A; #data→A ;(R6)→A,寄存器寻址 ;(70H)→A,直接寻址

例如:MOV MOV

MOVMOV

A,@R0A,#78H

;((R0))→A,间接寻址;78H→A,立即寻址

2. 以Rn为

目的操作数的指令

公司

MOVMOV MOV

Rn,ARn,direct Rn,#dat

; (A)→Rn,n=0~7;(direct)→Rn,n=0~7 ; #data→Rn,n=0~7

功能:是把源操作数的内容送入当前一组工作寄存器区的R0~R7中的某一个寄存器。

3.以直接地址direct为目的操作数的指令MOV MOV direct,A ; (A)→direct direct,Rn;(Rn)→direct, n=0~7

MOVMOV

direct1,direct2;direct,@Ri ; ((Ri))→direct

MOV

direct,#data; #data→direct

公司

功能:把源操作数送入直接地址指出的存储单元。direct指的是内部RAM或SFR的地址。 4.以寄存器间接地址为目的操作数的指令 MOV MOV @Ri,A @Ri,direct ;(A)→((Ri)),i=0,1 ; (direct)→((Ri))

MOVMOV

@Ri,#data

; #data→((Ri)); #data16→DPTR

5.16位数传送指令 DPTR,#data16 唯一的16位数据的传送指令 ,立即数的高8位送入DPH, 立即数的低8位送入DPL。

公司

6.堆栈操作指令 MCS-51内部RAM中可以设定一个后进先出(LIFO-Last In First Out)的区域称作堆栈.

堆栈指针SP指出堆栈的栈顶位置。(1)进栈指令

PUSH

direct

先将栈指针SP加1,然后把direct中的内容送到栈指 针SP指示的内部RAM单元中。 例如: 当(SP)=60H,(A)=30H,(B)=70H时,

公司

执行:

PUSHPUSH

ACCB ;

(SP)+1=61H→SP,(A)→61H (SP)+1=62H→SP,(B)→62H 结果:(61H)=30H,(62H)=70H,(SP)=62H

(2)出栈指令POP direct

SP指示的栈顶(内部RAM单元)内容送入direct字节 单元中,栈指针SP减1。

公司

例如:

当 (SP)=62H,(62H)=70H,(61H)=30H,执行: POP DPH ;((SP))→DPH,(SP)-1→SP

POP

DPL ;((SP))→DPL,(SP)-1→SP

结果:(DPTR)=7030H,(SP)=60H

公司

7.累加器A与外部数据存储器传送指令MOVX MOVX MOVX MOVX A,@DPTR ;((DPTR))→A,读外部RAM/IO A,@Ri ;((Ri))→A,读外部RAM/IO @DPTR,A;(A)→((DPTR)),写外部RAM/IO @Ri,A ;(A)→((Ri)),写外部RAM/IO

功能:读外部RAM存储器或I/O中的一个字节,或把A中 一个字节的数据写到外部RAM存储器或I/O中。

注意:RD*或WR*信号有效。

本文来源:https://www.bwwdw.com/article/9k41.html

Top