51单片机 第3章

发布时间:2021-06-11

第3章 MCS-51系列单片机的指令系统及 汇编语言程序设计3.1 3.2 3.3 3.4 寻址方式 指令系统 汇编语言程序设计 实用汇编语言程序设计

3.1 寻址方式 3.1.1 立即寻址 3.1.2 直接寻址 3.1.3 寄存器寻址 3.1.4 寄存器间接寻址 3.1.5 变址寻址 3.1.6 相对寻址 3.1.7 位寻址

3.1 寻址方式MCS-51汇编语言指令格式如下: [标号:] 操作码 [操作数] [;注释]

操作码部分指出了指令的功能,操作数部分可 能是操作数本身或操作数所在的地址。 MCS-51的指令系统共使用了7种寻址方式,即: 立即寻址、直接寻址、寄存器寻址、寄存器间接寻 址、变址寻址、相对寻址及位寻址。

符号指令及其注释中常用的符号Rn(n=0~7)--当前选中的工作寄存器组 中的寄存器R0~R7之一; Ri(i=0,1)--当前选中的工作寄存器组中 的寄存器R0或R1; @ ---------------间址寄存器前缀; #data ------------8位立即数; #data16---------16位立即数; direct--------片内低128个RAM单元地址 及SFR地址(可用符号名称表 示);

addr11-----------11位目的地址; addr16-----------16位目的地址; rel-----------------补码形式表示的8位地址偏移 量,值在-128~+127范围内; bit----------------片内RAM位地址、SFR的位地 址(可用符号名称表示); /-------------------位操作数的取反操作前缀; (×)----------- 表示 × 地址单元或寄存器中的 内容; ← ----------------将箭头右边的内容送入箭头左 边的单元中。

3.1.1 立即寻址 操作数直接出现在指令中的寻址方式称为立即 寻址,这样的操作数称为立即数。在指令中立即 数前面加“#”作为标志。例如, MOV R0, #58H

16位立即数的存放顺序是高8位在前(低地址 单元),低8位在后(高地址单元)。例如,MOV DPTR, #1234H

MOV A,#50H00H

74H 50H RAM A 50H SFR ROM

MOV A,#50H

3.1.2 直接寻址 在指令中直接给出操作数所在单元地址的寻址方式称 为直接寻址。直接寻址方式可访问的存储器空间有: 片内数据存储器RAM的低128字节

特殊功能寄存器SFR 位地址空间 程序存储器空间 例如,指令 MOV 81H, #40H

功能是将立即数40H传送给片内RAM地址81H字节单元。MOV C, 18H

功能是将片内RAM区23H单元中的D0位内容进位位C。

MOV A,50H

50H

3AH E5H 50H RAM 3AH SFR A ROM MOV A,50H

3.1.3 寄存器寻址操作数存放在寄存器中的寻址方式称为寄存器寻址。 寄存器包括A、B、C、DPTR和R0~R7。

例如,ADD DEC DEC A, ACC A 0E0H ;累加器A-1→A

A、B既可以是寄存器寻址,也可以是直接寻址。累 加器A写做ACC时是直接寻址。B在乘除法指令中为 寄存器寻址,在其他指令中为直接寻址。

MOV A,R000H 30H R0

E8H RAM 30H SFR A ROM

MOV A,R0

3.1.4 寄存器间接寻址

寄存器中的内

容为地址,从该地址去取 操作数的寻址方式称为寄存器间接寻址 。寻址的存储空间为片内RAM或片外RAM。 片内RAM的数据传送采用“MOV”类指令,间接寻址寄 存器采用寄存器R0或R1(堆栈操作时采用SP); 片外RAM的数据传送采用“MOVX”类指令,这时间 接寻址寄存器有两种选择,一是采用R0和R1作间址寄存 器,这时R0或R1提供低8位地址(外部RAM多于256 字节采用页面方式访问时,可由P2口未使用的I/O引脚 提供高位地址);二是采用DPTR作为间址寄存器。

寄存器间接寻址对应的空间为: 片内RAM(采用@R0,@R1或SP); 片外RAM(采用@R0,@R1或@DPTR)。30H 30H 5AH E6H RAM MOV A,@R0 R0

如: MOV A,@R0 比较 :MOV @R0, A

5AH SFR

A ROM

MOVX @R0, A

3.1.5 变址寻址 变址寻址方式只能用于访问程序存储器,由寄 存器DPTR或PC中的内容与累加器A内容之和 形成操作数在程序存储器中的地址。

MOVC00H

A, @A+DPTR

;(A+DPTR)→A

MOVC A,@A+DPTR RAM DPL DPH A 00H 24H 0FH SFR 2400H+0FH=240FH 240FH

93H

88H ROM

3.1.6 相对寻址相对寻址是以程序计数器PC的当前值(指读出该2字 节或3字节的跳转指令后,PC指向的下条指令的地址)为 基准,加上指令中给出的相对偏移量 rel 形成目标地址的 寻址方式 。 rel 是一个带符号的8位二进制数,取值范围是- 128~+127,以补码形式置于操作码之后存放。00H 1000H 1001H 1002H 40H 75H JC rel

PC值

字节数

1000H+02H=1002H RAM

如:

1002H+75H=1077H当前PC值 偏移量 新PC值

JC rel ; rel=75H

PSW 10000000 SFR

1077H ROM

注意 此例中CY PSW.7)为1

3.1.7 位寻址 对一个字节中的某一位单独进行操作时这个操作数的 地址称为位地址,对位地址寻址简称位寻址。 可以进行位寻址的区域有: 片内RAM的位寻址区:字节地址20H~2FH的16个 RAM单元,相应的位地址为00H~7FH,共128位。 SFR的位寻址区: 16个字节地址能被8整除的SFR均 可位寻址,位地址分布在80H~FFH,共有可寻址位 83位。 例如,

MOVMOV

5AH, C2BH.2, C

;进位标志C→位地址(5AH);进位标志C→字节地址(2BH)的D2位

3.2 指令系统 3.2.1 数据传送类指令 3.2.2 运算和移位指令 3.2.3 控制转移指令 3.2.4位操作指令

3.2 指令系统3.2.1 数据传送类指令 (1) MOV 目的操作数,源操作数 ;内部数据传送 ;外部数据传送 ;程序存储器数据传送

(2) MOVX 目的操作数,源操作数 (3) MOVC A,@A+DPTR/PC

(4) XCH A, Rn 的字节交换 (5) SWAP 换 (6) PUSH A direct

;完成累加器A和内部RAM单元之间 ;累加器A的高半字节与低半字节互 ;压栈操作

POP

direct

;弹栈操作

一般传 送指令 MOV

一、16位传送这条指令的功能是将源操作数data16 (通常是地址常数)送入目的操作数DPTR 中。源操作数的寻址方式为立即寻

址。 例如: 执行指令 MOV DPTR,#1234H 后 (DPH)=12H,(DPL)=34H。

二、8位传送目的字节 A Rn direct @Ri --源字节 A Rn direct @Ri #data

MOV

在5种源字节中,只有#data不能用作目的字 节。所以可以用4种目的字节为基础构造4类指令。 相应的源字节选择依据是: 源字节与目的字节不相同(除direct外); 寄存器寻址与寄存器间接寻址间不相互传送(A 寄存器除外)。

51单片机 第3章.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219