第三章-AT89S51指令系统
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PC
PC+1
操作数存在程 序存储器中
操作码
立即数
一般为一字节 一字节或二字节
如:MOV R7, #0F5H MOV DPTR,#1245H
例1:MOV A, #20H;(A)←20H
即把20H这个数据送入累加器A中,即送入特殊 功能寄存器中地址为E0H的单元。 分析
PC PC PC 0111 0100 0010 0000 …… 操作码 立即数 执行
目的操作数提供操作的对象, 并指出一个目 标地址, 表示操作结果存放单元的地址, 它 与操作码之间必须以一个或几个空格分隔。 源操作数指出的是一个源地址(或立即数), 表示操作的对象或操作数来自何处。 它与 目的操作数之间要用“,”号隔开。
注释部分作用: 注释是在编写程序时, 为了增加程 序的可读性, 由用户拟写对该条指令或 该段程序功能的说明。 它以分号“;”开 头, 可以用中文、 英文或某些符号来表 示, 显然它不存入计算机, 只出现在源 程序中。
按字节数分为:
单字节指令:49条 双字节指令:45条 三字节指令:17条
MCS-51单片机汇编语言常用符号:
Rn:工作寄存器中的寄存器R0、R1…R7之一 Ri:工作寄存器中的寄存器R0或R1 #data:8位立即数 #data16:16位立即数 direct:直接寻址方式符号 @间接寻址标识符 bit:片内RAM或SFR的位地址
0 0 0 * * 0 0 0
… RS1 RS0 …
ROM PC PC 11100110 ……
片内RAM …… 00110110 ACC …… 00110110 60H …… 01100000 R0 ……
取指
改变PC
3.2.5 相对寻址
Relative Addressing
将PC中的当前内容与指令第二字节给出
程序存储区
2040H 2041H 指令代码 … 20E0H 93 … … ALU 47 20E0H A 47 E0
DPH DPL
20 00
3.2.7 位寻址
Bit Addressing 当把8位二进制数中的某一位作为操作数看待 时,这个操作数的地址就称为位地址。 对位地址寻址简称为位寻址。 位寻址空间:(共两个区域) 片内RAM的位寻址区20H-2FH,共16个单元 SFR中的位地址空间,共11个可位寻址寄存器
三、指令格式
MCS—51单片机用汇编语言表示的指令格式为: [标号: ] <操作码> [操作数] [; 注释] (3) 操作数- 即指令操作的对象。分为目的操 作数和源操作数两部分,中间用“ ,”分开。 (4)注释-为该条指令做的说明,以便于阅读。
注:方括号[ ]表示该项是可选项, 可有可无。 任何一条指令都必须有操作码, 不得省略!
指令系统:一台计算机所有指令的集合。
注:① 指令系统体现计算机的性能。 ② 指令系统由生产厂家预先定义。
二、指令的表示形式
指令可以用两种语言形式表示:
机器语言:用二进制代码表示,能被主
机直接识别,但不易记忆和阅读。
汇编语言:用助记符表示,可以反映指
令的功能和主要特征,可以方便记忆。
助记符:是一种由英文单词或缩写字母形象表征指令功能 的形式。易为人们识别、读写、记忆、交流,用来程序设计。
例7:MOVC A,@A+PC 设(A)=E0H,(PC)=2040H
程序存储区 2040H 2041H 83 … … 47 45 ALU 2041H +E0H=2121H 指令代码 A 45 E0
当前PC …
2120H 2121H
例8:MOVC A,@A+DPTR 设(DPTR)=2000H,(A)=E0H
例2:MOV A,70H;(A)←(70H) 分析
ROM
PC 1110 0101 操作码
直接地址
执行
PC PC
0111 0000
……
SFR
…… ACC 01100110 …… 70H 01100110 ……
3.2.3 寄存器寻址
Register Addressing 操作数存储在指定寄存器中,通过直接指定 寄存器的方式进行寻址。 指定寄存器包括:寄存器组R0~R7、累加 器A、通用寄存器B、DPTR、累加器C。 当指定寄存器为Rn时,指令操作码的低3位 指明是R0~R7中的哪一个,通过PSW中的 RS1、RS0选择当前寄存器组。 选中A、B、C、DPTR时,其寄存器名隐 含在操作码之中。
如:操作码E5H
三字节指令:
如:操作码75H
四、指令类型
MCS-51汇编语言有111种指令,42种操作码 助记符用来描述33种操作功能。
按运算速度分为:
单周期指令:64条 双周期指令:45条 四周期指令:2条
wenku.baidu.com
按功能分为:
数据传送类:29条 算术运算类:24条 逻辑运算类:24条 控制转移类:17条 位操作类: 17条
ACC(0E0H)
0010 0000
MOV A, #20H执行示意图
3.2.2 直接寻址
Direct Addressing 指令中直接给出参与操作的数据所在内RAM 单元的地址。适用于在内RAM的低128B和特 殊功能寄存器。 注:特殊功能寄存器只能用直接寻址方式! 如: MOV A,00H MOV C,7FH MOV A,0F0H
3.2 寻址方式
寻址方式: 是在指令中给出的寻找操作数地址的方法。 51单片机共有7种寻址方式:
立即寻址 直接寻址 寄存器寻址 寄存器间接寻址 相对寻址 变址寻址 位寻址
3.2.1 立即寻址
Immediate Addressing
指令中直接给出参与操作的数据,这种形式 的操作数称为立即数,用“#”表示。 其指令码形式为:
3.2.6 变址寻址(基址+变址)
是基址寄存器加变址寄存器间接寻址方式的简称 专用于访问程序存储器,常用于查表操作。 以DPTR或PC为基址寄存器,累加器A为变址寄 存器。把两者内容相加,结果作为操作数的地址。 MCS-51有如下两条变址寻址指令:
MOVC A, @A+DPTR MOVC A, @A+PC
3.3 数据传送类指令(29条)
Data Transfer Instruction
MCS-51助记符: MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP 源操作数寻址方式(5种): 立即寻址、直接寻址、寄存器寻址、 寄存器间接寻址、变址寻址。 目的操作数寻址方式(3种): 直接寻址、寄存器寻址、寄存器间接寻址 除了目的操作数为ACC的指令影响奇偶标志P外, 一般不影响标志位。
位地址表示方法:
直接使用物理的位地址。 MOV C, 7FH 采用第几字节单元第几位的表示法。
其中7FH为2FH单元中的最高位D7
上例中7FH的位地址可表示为2FH.7
MOV C, 2FH.7 可位寻址的SFR容许直接采用寄存器 名加位数命名法。 MOV C, ACC.7 经伪指令定义过的字符名称。
的数相加,结果作为跳转指令的转移地址 (转移目的地址)。 PC中的当前内容称为基地址(本指令后 的字节地址) 指令第二字节给出的数据称 为偏移量,1字节带符号数。 常用于跳转指令。
例如位控制转移指令:JC rel
指令码为40 操作码40H
rel
PC+2+rel 若Cy=0,则PC← PC+2
三、指令格式
MCS—51单片机用汇编语言表示的指令格式为: [标号: ] <操作码> [操作数] [; 注释] (1)标号-是用户设定的符号, 标号值代表该指 令所在的地址。 标号必须以字母开头, 其 后跟1~8个字母或数字, 并以“:”结尾。 (2) 操作码- 是由助记符表示的字符串,用来 指定指令的功能。如ADD表示加法操作。
示例1:
SS: MOV A,#4FH ;立即数4FH送A
示例2:
LOOP: ADD A,#10H ;(A)←(A)+10H A表示操作对象是累加器A的内容, 并指出操作 结果又回送A存放;10H为源操作数。
MCS-51单片机用机器语言表示的指令格式为: 单字节指令: 如: 操作码E8H~EFH
双字节指令:
3.2.4 寄存器间接寻址
可用来间接寻址的寄存器有R0、R1、堆栈指 针SP和数据指针DPTR。前面加@表示间接寻址
可访问内部数据存储器或外部数据存储器。
操作数在片内RAM中
如: MOV
A,@R0
操作数在片外RAM中
MOVX A,@R0
MOVX A,@DPTR
操作数在片外RAM中
例4:MOV A, @R0;(A)←((R0))
操作数在程序 存储器中
例6:MOVC A,@ A+PC;(A)←((A)+(PC))
设(A)=88H,(PC)=801FH
取指
ROM PC PC
80A8H
执行 A
PC
1000 0011 …… …… 1000 1010
10001010 10001000
10000000 00100000
ALU
8020+88=80A8H
若Cy=1,则PC←
例5:JC 23H 若C=0,不跳转; C=1,跳转.
假设该指令放在1000H单元中,C=1。
程序存储区 1000H 1001H 1002H 当前PC … 1024H 1025H 40 23 30 … 47 45 指令代码
23H
1002H ALU 1025H
Base-Register-plus-Index-Register-Indirect Addressing
第三章 AT89S51单片机指令系统
3.1 概述 3.2 MCS-51的寻址方式 3.3 数据传送类指令 3.4 算术运算类指令 3.5 逻辑运算类指令 3.6 控制转移类指令 3.7 位操作指令
3.1 概述
一、几个基本概念 指令:主机能直接识别和接受并指挥计算机
执行某种操作的命令。
寻址方式涉及的存储器空间
寻址空间(操作数存放空间) 程序存储器 片内RAM低128字节、SFR 工作寄存器R0~R7,A,B,DPTR 片内RAM:@R0,@R1,SP 寄存器间接寻址 片外RAM:@R0,@R1,@DPTR 程序存储器:@A+PC,@A+DPTR 变址寻址 相对寻址 程序存储器256字节范围内:PC+偏移量 片内RAM的位寻址区(20H~2FH字节地 位寻址 址)及某些可位寻址的SFR 寻址方式 立即寻址 直接寻址 寄存器寻址
片内数据存储器空间分布图
7FH
通用RAM区 . (80B) . . . . . . . .
位地址区 (16B)
寄存器3组 寄存器2组 寄存器1组 寄存器0组
30H 2FH 20H 1FH
位地址区
. . .
00H
D7 D6 D5 D4 D3 D2 D1 D0 7FH 78H 2FH ............ 70H 2EH 77H 68H 2DH 6FH 67H 60H 2CH 5FH 58H 2BH 50H 2AH 57H 48H 29H 4FH 47H 40H 28H 3FH 38H 27H 30H 26H 37H 28H 25H 2FH 27H 20H 24H 1FH 1FH 23H 17H 10H 22H ............ 0FH 08H 21H 07H 06H 05H 04H 03H 02H 01H 00H 20H
addr11:11位目的地址
addr16:16位目的地址
rel: 补码形式的8位地址偏移量 偏移范围为-128~+127
(X):表示X单元中的内容
((X)) :表示以X单元中的内容为地址进行间 接寻址。 →:箭头左边的内容送入箭头右边的单元内
处理器按照一系列步骤来执行每一条指令。
典型步骤如下:
1. 从存储器读取指令; 2. 译码以鉴别它是属于哪一条指令; 3. 从指令中提取指令的操作数(这些操作数 往往存在于寄存器中); 4. 将操作数进行组合以得到结果或存储器地址; 5. 如果需要,则访问存储器以存储数据; 6. 将结果写回到寄存器堆。
寄存器寻址示例:
例3:INC R3;(R3)←(R3)+1
… RS1 RS0 …
0 0 0 * * 0 1 1
片内RAM …… 01000010 01000001 …… 1 ALU
ROM PC PC 0000 1 011 ……
取指
工作寄存器地址分配图
Register Indirect Addressing 把地址放在另外一个寄存器中,根据这个寄存 器中的数值决定该到哪个单元中取数据。 指令指定某一寄存器的内容作为操作数地址。
PC+1
操作数存在程 序存储器中
操作码
立即数
一般为一字节 一字节或二字节
如:MOV R7, #0F5H MOV DPTR,#1245H
例1:MOV A, #20H;(A)←20H
即把20H这个数据送入累加器A中,即送入特殊 功能寄存器中地址为E0H的单元。 分析
PC PC PC 0111 0100 0010 0000 …… 操作码 立即数 执行
目的操作数提供操作的对象, 并指出一个目 标地址, 表示操作结果存放单元的地址, 它 与操作码之间必须以一个或几个空格分隔。 源操作数指出的是一个源地址(或立即数), 表示操作的对象或操作数来自何处。 它与 目的操作数之间要用“,”号隔开。
注释部分作用: 注释是在编写程序时, 为了增加程 序的可读性, 由用户拟写对该条指令或 该段程序功能的说明。 它以分号“;”开 头, 可以用中文、 英文或某些符号来表 示, 显然它不存入计算机, 只出现在源 程序中。
按字节数分为:
单字节指令:49条 双字节指令:45条 三字节指令:17条
MCS-51单片机汇编语言常用符号:
Rn:工作寄存器中的寄存器R0、R1…R7之一 Ri:工作寄存器中的寄存器R0或R1 #data:8位立即数 #data16:16位立即数 direct:直接寻址方式符号 @间接寻址标识符 bit:片内RAM或SFR的位地址
0 0 0 * * 0 0 0
… RS1 RS0 …
ROM PC PC 11100110 ……
片内RAM …… 00110110 ACC …… 00110110 60H …… 01100000 R0 ……
取指
改变PC
3.2.5 相对寻址
Relative Addressing
将PC中的当前内容与指令第二字节给出
程序存储区
2040H 2041H 指令代码 … 20E0H 93 … … ALU 47 20E0H A 47 E0
DPH DPL
20 00
3.2.7 位寻址
Bit Addressing 当把8位二进制数中的某一位作为操作数看待 时,这个操作数的地址就称为位地址。 对位地址寻址简称为位寻址。 位寻址空间:(共两个区域) 片内RAM的位寻址区20H-2FH,共16个单元 SFR中的位地址空间,共11个可位寻址寄存器
三、指令格式
MCS—51单片机用汇编语言表示的指令格式为: [标号: ] <操作码> [操作数] [; 注释] (3) 操作数- 即指令操作的对象。分为目的操 作数和源操作数两部分,中间用“ ,”分开。 (4)注释-为该条指令做的说明,以便于阅读。
注:方括号[ ]表示该项是可选项, 可有可无。 任何一条指令都必须有操作码, 不得省略!
指令系统:一台计算机所有指令的集合。
注:① 指令系统体现计算机的性能。 ② 指令系统由生产厂家预先定义。
二、指令的表示形式
指令可以用两种语言形式表示:
机器语言:用二进制代码表示,能被主
机直接识别,但不易记忆和阅读。
汇编语言:用助记符表示,可以反映指
令的功能和主要特征,可以方便记忆。
助记符:是一种由英文单词或缩写字母形象表征指令功能 的形式。易为人们识别、读写、记忆、交流,用来程序设计。
例7:MOVC A,@A+PC 设(A)=E0H,(PC)=2040H
程序存储区 2040H 2041H 83 … … 47 45 ALU 2041H +E0H=2121H 指令代码 A 45 E0
当前PC …
2120H 2121H
例8:MOVC A,@A+DPTR 设(DPTR)=2000H,(A)=E0H
例2:MOV A,70H;(A)←(70H) 分析
ROM
PC 1110 0101 操作码
直接地址
执行
PC PC
0111 0000
……
SFR
…… ACC 01100110 …… 70H 01100110 ……
3.2.3 寄存器寻址
Register Addressing 操作数存储在指定寄存器中,通过直接指定 寄存器的方式进行寻址。 指定寄存器包括:寄存器组R0~R7、累加 器A、通用寄存器B、DPTR、累加器C。 当指定寄存器为Rn时,指令操作码的低3位 指明是R0~R7中的哪一个,通过PSW中的 RS1、RS0选择当前寄存器组。 选中A、B、C、DPTR时,其寄存器名隐 含在操作码之中。
如:操作码E5H
三字节指令:
如:操作码75H
四、指令类型
MCS-51汇编语言有111种指令,42种操作码 助记符用来描述33种操作功能。
按运算速度分为:
单周期指令:64条 双周期指令:45条 四周期指令:2条
wenku.baidu.com
按功能分为:
数据传送类:29条 算术运算类:24条 逻辑运算类:24条 控制转移类:17条 位操作类: 17条
ACC(0E0H)
0010 0000
MOV A, #20H执行示意图
3.2.2 直接寻址
Direct Addressing 指令中直接给出参与操作的数据所在内RAM 单元的地址。适用于在内RAM的低128B和特 殊功能寄存器。 注:特殊功能寄存器只能用直接寻址方式! 如: MOV A,00H MOV C,7FH MOV A,0F0H
3.2 寻址方式
寻址方式: 是在指令中给出的寻找操作数地址的方法。 51单片机共有7种寻址方式:
立即寻址 直接寻址 寄存器寻址 寄存器间接寻址 相对寻址 变址寻址 位寻址
3.2.1 立即寻址
Immediate Addressing
指令中直接给出参与操作的数据,这种形式 的操作数称为立即数,用“#”表示。 其指令码形式为:
3.2.6 变址寻址(基址+变址)
是基址寄存器加变址寄存器间接寻址方式的简称 专用于访问程序存储器,常用于查表操作。 以DPTR或PC为基址寄存器,累加器A为变址寄 存器。把两者内容相加,结果作为操作数的地址。 MCS-51有如下两条变址寻址指令:
MOVC A, @A+DPTR MOVC A, @A+PC
3.3 数据传送类指令(29条)
Data Transfer Instruction
MCS-51助记符: MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP 源操作数寻址方式(5种): 立即寻址、直接寻址、寄存器寻址、 寄存器间接寻址、变址寻址。 目的操作数寻址方式(3种): 直接寻址、寄存器寻址、寄存器间接寻址 除了目的操作数为ACC的指令影响奇偶标志P外, 一般不影响标志位。
位地址表示方法:
直接使用物理的位地址。 MOV C, 7FH 采用第几字节单元第几位的表示法。
其中7FH为2FH单元中的最高位D7
上例中7FH的位地址可表示为2FH.7
MOV C, 2FH.7 可位寻址的SFR容许直接采用寄存器 名加位数命名法。 MOV C, ACC.7 经伪指令定义过的字符名称。
的数相加,结果作为跳转指令的转移地址 (转移目的地址)。 PC中的当前内容称为基地址(本指令后 的字节地址) 指令第二字节给出的数据称 为偏移量,1字节带符号数。 常用于跳转指令。
例如位控制转移指令:JC rel
指令码为40 操作码40H
rel
PC+2+rel 若Cy=0,则PC← PC+2
三、指令格式
MCS—51单片机用汇编语言表示的指令格式为: [标号: ] <操作码> [操作数] [; 注释] (1)标号-是用户设定的符号, 标号值代表该指 令所在的地址。 标号必须以字母开头, 其 后跟1~8个字母或数字, 并以“:”结尾。 (2) 操作码- 是由助记符表示的字符串,用来 指定指令的功能。如ADD表示加法操作。
示例1:
SS: MOV A,#4FH ;立即数4FH送A
示例2:
LOOP: ADD A,#10H ;(A)←(A)+10H A表示操作对象是累加器A的内容, 并指出操作 结果又回送A存放;10H为源操作数。
MCS-51单片机用机器语言表示的指令格式为: 单字节指令: 如: 操作码E8H~EFH
双字节指令:
3.2.4 寄存器间接寻址
可用来间接寻址的寄存器有R0、R1、堆栈指 针SP和数据指针DPTR。前面加@表示间接寻址
可访问内部数据存储器或外部数据存储器。
操作数在片内RAM中
如: MOV
A,@R0
操作数在片外RAM中
MOVX A,@R0
MOVX A,@DPTR
操作数在片外RAM中
例4:MOV A, @R0;(A)←((R0))
操作数在程序 存储器中
例6:MOVC A,@ A+PC;(A)←((A)+(PC))
设(A)=88H,(PC)=801FH
取指
ROM PC PC
80A8H
执行 A
PC
1000 0011 …… …… 1000 1010
10001010 10001000
10000000 00100000
ALU
8020+88=80A8H
若Cy=1,则PC←
例5:JC 23H 若C=0,不跳转; C=1,跳转.
假设该指令放在1000H单元中,C=1。
程序存储区 1000H 1001H 1002H 当前PC … 1024H 1025H 40 23 30 … 47 45 指令代码
23H
1002H ALU 1025H
Base-Register-plus-Index-Register-Indirect Addressing
第三章 AT89S51单片机指令系统
3.1 概述 3.2 MCS-51的寻址方式 3.3 数据传送类指令 3.4 算术运算类指令 3.5 逻辑运算类指令 3.6 控制转移类指令 3.7 位操作指令
3.1 概述
一、几个基本概念 指令:主机能直接识别和接受并指挥计算机
执行某种操作的命令。
寻址方式涉及的存储器空间
寻址空间(操作数存放空间) 程序存储器 片内RAM低128字节、SFR 工作寄存器R0~R7,A,B,DPTR 片内RAM:@R0,@R1,SP 寄存器间接寻址 片外RAM:@R0,@R1,@DPTR 程序存储器:@A+PC,@A+DPTR 变址寻址 相对寻址 程序存储器256字节范围内:PC+偏移量 片内RAM的位寻址区(20H~2FH字节地 位寻址 址)及某些可位寻址的SFR 寻址方式 立即寻址 直接寻址 寄存器寻址
片内数据存储器空间分布图
7FH
通用RAM区 . (80B) . . . . . . . .
位地址区 (16B)
寄存器3组 寄存器2组 寄存器1组 寄存器0组
30H 2FH 20H 1FH
位地址区
. . .
00H
D7 D6 D5 D4 D3 D2 D1 D0 7FH 78H 2FH ............ 70H 2EH 77H 68H 2DH 6FH 67H 60H 2CH 5FH 58H 2BH 50H 2AH 57H 48H 29H 4FH 47H 40H 28H 3FH 38H 27H 30H 26H 37H 28H 25H 2FH 27H 20H 24H 1FH 1FH 23H 17H 10H 22H ............ 0FH 08H 21H 07H 06H 05H 04H 03H 02H 01H 00H 20H
addr11:11位目的地址
addr16:16位目的地址
rel: 补码形式的8位地址偏移量 偏移范围为-128~+127
(X):表示X单元中的内容
((X)) :表示以X单元中的内容为地址进行间 接寻址。 →:箭头左边的内容送入箭头右边的单元内
处理器按照一系列步骤来执行每一条指令。
典型步骤如下:
1. 从存储器读取指令; 2. 译码以鉴别它是属于哪一条指令; 3. 从指令中提取指令的操作数(这些操作数 往往存在于寄存器中); 4. 将操作数进行组合以得到结果或存储器地址; 5. 如果需要,则访问存储器以存储数据; 6. 将结果写回到寄存器堆。
寄存器寻址示例:
例3:INC R3;(R3)←(R3)+1
… RS1 RS0 …
0 0 0 * * 0 1 1
片内RAM …… 01000010 01000001 …… 1 ALU
ROM PC PC 0000 1 011 ……
取指
工作寄存器地址分配图
Register Indirect Addressing 把地址放在另外一个寄存器中,根据这个寄存 器中的数值决定该到哪个单元中取数据。 指令指定某一寄存器的内容作为操作数地址。