单片机指令系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4、寄存器间接寻址
寄存器间接寻址是指在指令中要到寄存器 的内容所指的地址去取操作数。即寄存器 中放的是操作数的地址。在寄存器的名称 前面加前缀“@”。
只能使用R0或R1。
例如: ANL A,@R1
寄存器间接寻址的范围:
(1)片内RAM低128单元:这里只能使用R0或R1 为 间址寄存器,其通用形式写为@Ri(i=0,1)。
1、立即寻址
例如: MOV A, #3AH
立即数前 面加“#”
MOV DPTR ,#data16
2、直接寻址
直接寻址是指在指令中直接给出操作数单元的
地址。 MOV A ,3AH
片内RAM 地址
直接寻址是访问特殊功能寄存器的唯一方法。
3、寄存器寻址
例如:INC R0 寄存器寻址的寻址范围包括: (1) 四个寄存器组共32 个通用寄存器 (2) 部分特殊功能寄存器
第三部分 80C51的指令系统
§3.1 指令系统简介
MCS-51 的 指 令 系 统 共 有 111 条 指 令 , 按 其 功能可分为五大类:
数据传送类指令(28条) 算术运算类指令(24条) 逻辑运算类指令(25条) 控制转移类指令(17条) 布尔操作(位)类指令(17条)
指令格式
指令的表示方法称为指令格式,其内容包括指令 的长度和指令内部信息的安排等。一条指令通常 由操作码和操作数两部分组成。
操作码 [操作数] ;[注释]
NOP INC R0 MOV R0,R7
指令的长度有单字节、双字节和三字节等。
普通RAM共80个字节 位寻址区(16*8=128位) 寄存器工作组(由RS1、RS0选择)
它的功能是把源字节的内容送到目的字节,而源字 节的内容不变。
一、内部RAM数据传送指令
1、 以累加器A为目的操作数的指令组,共有4条:
MOV A,Rn
; (A) ← (Rn)
MOV A,direct ; (A) ← (direct)
MOV A,@Ri
; (A) ← ((Ri))
wenku.baidu.com
MOV A,#data ; (A) ← #data
SETB 88H.5 ;88H单元的位5
(3)特殊功能寄存器符号加位的表示方法。 SETB PSW.5 PSW寄存器的位5,则表示为PSW.5。
(4)位名称表示方法,特殊功能寄存器中的 一些寻址位是有名称的。 SETB F0 PSW寄存器位5为F0标志位。
操作数寻址方式和有关空间
寻址方式 立即寻址 直接寻址 寄存器寻址 寄存器间接寻址
偏移量
6、变址寻址(基址寄存器+变址寄存器间接寻址)
变址寻址是指以DPTR或PC作基址寄存器,累加器 A作变址寄存器,以两者内容相加形成的16位程序 存储器地址作为操作数地址。又称基址寄存器+变 址寄存器间接寻址。
MOVC A , @A+DPTR
MOVC A , @A+PC
假设 :(A)=E0H,(DPTR)=2000H
变址寻址 相对寻址 位寻址
寻址空间
程序存储器ROM 片内RAM低128B和特殊功能寄存器SFR 工作寄存器R0 ~ R7,A,B,CY,DPTR
片内RAM低128B [ @R0,@R1],片外RAM( @R0, @R1, @DPTR)
程序存储器(@A+PC, @A+DPTR)
程序存储器+127B ~ -128B范围(PC+偏移量)
MOV A,@R0
(2)片外RAM 64KB:使用DPTR作为间址寄存 器,其形式为@DPTR,例如:
MOVX A,@DPTR
(3)片外RAM低256单元:也可使用R0或R1作 间址寄存器。例如:
MOVX A,@R0
5、相对寻址
相对寻址是指在指令中给出的操作数为程序转移的 偏移量。相对寻址是为实现程序的相对转移而设立 的,为相对转移指令所采用。
操作数地址为E0H十2000H=20E0H,若20E0H单 元的内容为47H,则该指令执行的结果是A的内容 为47H。
7、位寻址
位寻址 的范围: (1)片内RAM中的位寻址区 (2)可位寻址的特殊功能寄存器位
寻址位在指令中有四种表示方法: (1)直接使用位地址表示方法。
SETB 8DH (2)单元地址加位的表示方法。
§3.2 寻址方式
Rn 工作寄存器,可以是R0-R7中的任意一个。 #data 8位立即数,在00H~FFH范围内。如 #12H。 direct 片内RAM单元的直接地址。
Ri R0或R1。 #data16 表示16位立即数。如:1234H。 @DPTR 表示以DPTR为数据指针进行间接寻址。用
于对片外地址寻址。 bit 位地址。如 SETB bit。
;(direct) ← (A)
addr16 表示16位地址。 addr11 表示11位地址。 rel 补码形式的表示8位地址偏移量。 $ 表示当前指令的地址。 A 累加器 B B寄存器 C 进位位 @ 间址寄存器的前缀标志
七种寻址方式 :
1、立即寻址 2、直接寻址 3、寄存器寻址 4、寄存器间接寻址 5、相对寻址 6、变址寻址 7、位寻址
目的地址=转移指令所在地址十转移指令字节数十rel
rel是一个带符号的8位二进制补码数,范围是: -128 ~ +127。偏移量为正时,往地址增大的方向, 为负时,向地址减小的方向。
例如: JC 03H ;假设当前PC值为1000H 转移地址为:1000H + 2H +(03H)=1005H
转移指令字节数 JC 03H的机器码为40H、03H
片内RAM的20H ~ 2FH字节地址和部分特殊功能 寄存器SFR
§3.3 数据传送指令
数据传送指令共有28条。按照功能又可分为: 一般传送指令、目的地址传送指令、累加器 传送指令和栈操作传送指令。
一般传送指令格式 MOV <目的字节>,<源字节> MOVX <目的字节>,<源字节> MOVC <目的字节>,<源字节>
2、 以寄存器Rn为目的操作数的指令组,共有3条:
MOV Rn,A
;(Rn) ← (A)
MOV Rn,ditect ; (Rn) ← (direct)
MOV Rn,#data ; (Rn) ← #data
例: MOV R3, #30H
3、以直接地址direct为目的操作数的指令组,共有5条
指令:
MOV direct,A