MCS-51系列单片机指令系统共有111条指令,其中有49条单字节指令、45条双字节指令和17条三字节指令。
单片机指令系统ppt课件
加减指令
操作
操作数
Rn @Ri direct #data A
ADD *
*
*
*
X
ADDC *
*
*
*
X
SUBB *
*
*
*
X
INC *
*
*
X
*
DEC *
*
*
X
*
其他算术运算指令
16位寄存器加一指令 INC DPTR
十进制调整指令
DA A
乘法指令 MUL AB
(A) X (B) = BA
Cy = 0
若乘积>0FFH 则 OV=1
A #data
ANL *
*
ORL *
*
XRL *
*
控制转移类指令
控制转移类指令有17条,分为:
无条件转移指令 判零转移指令 比较转移指令 循环转移指令 调用返回指令
无条件转移指令
短转移指令 AJMP addr11
PC高5位与指令中给出的11位地址相加,可在2K 范围内转移
长转移指令 LJMP addr16
例: MOV 90H,A
MOV P1,A
寄存器寻址方式
寄存器寻址方式指令中给出寄存器编号 寄存器编号为 R0 -- R7 其对应单元位置由 RS1、RS0 决定 例
INC R0 ADD A,R2
寄存器间接寻址方式
寄存器间接寻址在指令中给出存放操作数 地址的寄存器 可用于间接寻址方式的寄存器有
R0、R1 用于寻址内部128字节RAM DPTR 用于寻址外扩数据存储器( R0、R1)
寻址外扩数据存储器,只能用寄存器间接寻 址方式 例: MOV A,@R0 MOVX @DPTR,A
MCS51单片机指令系统
第一条指令为远查表指令,可以在64K的程序存储器空间寻 址。基地址寄存器为DPTR,其意思为,DPTR里面存放的是 程序存储器中数据表格的首地址,A为数据地址的偏移量。
这条指令执行以后,以 (A)+(DPTR)的数值为地址数 据就送进A里面来了,也就是从表格首地址开始以后的第(A) 个数据被送进A了。(举例子说明)
编写好的程序都放在程序存储器中,由于一个存储地址所 指示的存储单元只能存放一字节的数据。所以,在存放指令时, 必须将指令拆分成一个一个字节进行连续存放。
比如: 实现“累加器加10H”这条指令,其机器语言为 0111010000010000, 占用了两个字节,就必须拆成两个字节 进行连续存储。
但是,用二进制来表示比较麻烦,因此,也常用十六进制来 表示如:74H 10H来表示以上这条机器语言。可见,用十六进 制表示指令比较简单,但是,指令系统有上百条指令,不易记 住。所以,一般采用容易记住的一些缩写符号来表示机器语言,
2. 在指令中直接给出操作数的地址, 这种寻址方式就属
于直接寻址方式。在这种方式中, 指令的操作数部分直接 是操作数的地址。
比如:MOV A,30H;将30H里面的数送到A里面 MOV 21H,30H;将30H里面的数存放到21H里面 在MCS -51 单片机指令系统中, 直接寻址方式中可
以访问 3 种存储器空间: (1) 内部数据存储器的低 128 个字节单元(00H~
7. 位寻址 指按照位进行的寻址操作,(前面讲的都是按字节进
行的寻址操作)。该种寻址方式中, 操作数是内部RAM单元 中20H到2FH的128个位地址以及SFR中的11个可进行 位寻址的寄存器中的位地址寻址。
比如:MOV C,20H;就是将RAM中位寻址区中20H位地 址中的内容送给C。区别与MOV A,20H;这个是将内部 RAM中20H单元的内容送给A。
MCS-51单片机指令系统包括111条指令
30H
Eg:MOV A,30H
A XX A
结果 结果
A 33H 30H 10H
Copyright 2006
33H
Eg:MOV A,#10H
10H
XX
E.g.: MOV A,R2
R2 33H
A XX
A 33H
E.g. : MOV A,@R0
地址
R0 55H
55H
取出
A 78H
78H
注意:在使用 进行间址寻址时 只能够使用R0和 。 进行间址寻址时, 注意:在使用Ri进行间址寻址时,只能够使用 和R1。
Copyright 2006
以通用寄存器Rn为目的的传送指令: 条 以通用寄存器 为目的的传送指令:( 3条) 为目的的传送指令
Copyright 2006
2.2.1
数据传送和交换类指令
常用助记符: 常用助记符: MOV 单片机内部RAM中的数据传递 MOVX 累加器和单片机外部数据存储器间数据传递 MOVC 累加器和程序存储器之间的数据传递 XCH 累加器和某个内部RAM单元进行数据交换 XCHD 累加器和某个内部RAM单元进行低半字节数据交换 PUSH 将某个内部RAM单元的数据压入堆栈 POP 将堆栈内的数据弹出
Copyright 2006
六、字节交换指令
字节交换指令指内部RAM中的某个单元和累加器 之间进行 中的某个单元和累加器A之间进行 字节交换指令指内部 中的某个单元和累加器 数据交换,可以是整个字节,也可以是半个字节。包含3种交换 数据交换,可以是整个字节,也可以是半个字节。包含 种交换 方式: 方式: 1、整字节交换指令: 、整字节交换指令: XCH A, Rn ; (A) ← →(Rn) , XCH A, direct ; (A) ← →(direct) XCH A, @Ri ; (A) ← →((Ri))
MCS-51单片机指令系统教程(2)
片外数据 存储器 64KB
1,访问片内RAM20H存储单元; MOV A,20H
2,访问片外RAM存储单元; MOV R0,#20H MOVX A,@R0
0000H
3,尽管片内与片外的RAM单元 的00H-FFH地址相重叠但由 于指令的不同不会发生地址
混乱。
片外数据存储器 64KB个字节
返回
2.2.5 变址寻址
由操作码和操作数(或操作数地址)构成指令的结构。
举例:MOV A,#0FFH
ADD A,R0
返回
2.1.2 指令的三种表示形式:
指令的表示形式是识别指令的标志。
1,二进制的表示形式:(以“累加器的内容+08H”为例) 00100100B 操作码 OP (加法) 00001000B 操作数DATA(08H)
乘法指令 16位寄存器DPTR加一
从表中可见,指令的字节数与指令周期不是对等的关系 返回
2.1.4 指令的分类
MCS-51单片机的指令如果按功能划分可以分为五类: 1,数据传送类指令:完成数据在单片机内部之间的传送。
分为8位数和16位两种。除了奇偶位外,指令的执行对 PSW无影响。
2,算术运算指令:用于操作数之间的加、减、乘除运算。 【特点】:多数情况下:操作数之一在累加器A中,结果 也保留在A中,运算结果要影响PSW(进位标志、奇偶和 溢出标志等)。
“机器码”后才能为CPU所识别和执行。 3,三种不同的表示方法适用于不同的场合。
返回
本章内容都以汇编的形式介绍指令系统。
2.1.3 指令的字节数
在MCS-51单片机的指令系统中,因指令操作码和操作数 的不同,指令(在存储器中)长度也各不相同。
分为单字节、双字节和三字节。
第3章 MCS-51指令系统
16
MCS-51单片机指令系统
MCS-51单片机指令系统包括111条指令 按功能可以划分为以下5类:
1. 数据传送和交换指令(29条)
2. 算术运算指令(24条) 3. 逻辑运算指令(24条) 4. 控制转移指令(17条) 5. 位操作指令(17条)
17
数据传送和交换类指令主要有以下几种:
1. 2. 3.
30H
Eg:MOV 30H,#33H 33H
30H
XX 30H
33H
30H
31H
Eg:MOV 30H,31H
55H
XX
55H
25
A
30H XX
地址
30H 33H
Eg:MOV 30H, A
33H
R0
Eg:MOV 30H,@R0
55H
取出
30H 78H 30H
55H
R3
78H
30H XX
55H
MOV A , 30H
XX 55H
30H
A
6
3、寄存器寻址
寄存器寻址是指将操作数存放于寄存器中,寄存器包括工作寄 存器R0~R7、累加器A、通用寄存器B、地址寄存器DPTR等。 数据存放在R0~R7中的某个通用寄存器内,或者放在某个专用 寄存器中。 e.g.: MOV A,R7 ADD A,R0
DPTR
2000H
DPTR 2000H
XXXX
Eg:将数据指针DPTR指向存于ROM中的表格首地址。
MOV DPTR,#TABLE
27
三、片外数据传递指令
使用DPTR和Ri进行间接寻址 MOVX A, @DPTR ;A ←((DPTR))片外 MOVX A,@Ri ;A ←((Ri))片外 MOVX @DPTR,A ;(DPTR)片外←(A) MOVX @Ri,A ;(Ri)片外←(A) 注意: 该指令用于在单片机和外部RAM、扩展I/O的数据传送; 使用Ri时,只能访问低8位地址为00H~FFH地址段; 使用DPTR时,能访问0000H ~ FFFFH地址段。
MCS-51系列单片机的指令系统
51系列单片机指令系统包含5种功能类型的指令,7 种寻址方式,共有111条指令。
addr16 16位目标地址,片外数据存储器或程序存储器以及外 部芯片的地址,用于LCALL和LJMP指令中;
addr11 11位目标地址,片内数据存储器或程序存储器的地址, 用于ACALL和AJMP指令中;
rel 相关地址,8位带符号偏移量,一般是程序存储器字节地址, 通常在跳转类指令中使用,其对应的十进制范围为-128~+127;
立即寻址就是直接给出操作数。
取指令时,即可由程序存储器中直接取得操作数据。51单 片机中除了一条指令(MOV DPTR,#data16)是16位长 的立即数外,其余都是8位的立即数。
例如:MOV A,#30H;无论执行之前A中的内容是多少, 则执行后A=30H。
值得注意的一点是:在立即数寻址中立即数前面必须要加 上一个“#”号,“#”表示其后面内容为立即数而不是一个 字节单元地址。
bit 位地址,针对片内数据存储器中的可位寻址的位使用; DPTR 数据指针,可用做16位的地址寄存器; (X) X指寄存器或十六进制数,则(X)为指向以X寄存器中的内
容为目标地址的单元或以十六进制数据为目标地址的单元; ← 数据传送的方向,将左边的内容送入右边; A 累加器; ACC 直接寻址方式的累加器; B 寄存器B; C 进位标志位,是布尔处理机的累加器,也称为位累加器。
任何一种处理器都必须经过设计人员对
51单片机111条指令
51单片机111条指令一览表指令字节周期动作说明算数运算指令1.ADD A,Rn 1 1 将累加器与寄存器的内容相加,结果存回累加器2.ADD A,direct 2 1 将累加器与直接地址的内容相加,结果存回累加器3.ADD A,@Ri 1 1 将累加器与间接地址的内容相加,结果存回累加器4.ADD A,#data 2 1 将累加器与常数相加,结果存回累加器5.ADDC A,Rn 1 1 将累加器与寄存器的内容及进位C相加,结果存回累加器6.ADDC A,direct 2 1 将累加器与直接地址的内容及进位C相加,结果存回累加器7.ADDC A,@Ri 1 1 将累加器与间接地址的内容及进位C相加,结果存回累加器8.ADDC A,#data 2 1 将累加器与常数及进位C相加,结果存回累加器9.SUBB A,Rn 1 1 将累加器的值减去寄存器的值减借位C,结果存回累加器10.SUBB A,direct 2 1 将累加器的值减直接地址的值减借位C,结果存回累加器11.SUBB A,@Ri 1 1 将累加器的值减间接地址的值减借位C,结果存回累加器12.SUBB A,#data 2 1 将累加器的值减常数值减借位C,结果存回累加器13.INC A 1 1 将累加器的值加114.INC Rn 1 1 将寄存器的值加l15.INC direct 2 1 将直接地址的内容加116.INC @Ri 1 1 将间接地址的内容加117.INC DPTR 1 1 数据指针寄存器值加1说明:将16位的DPTR加1,当DPTR的低字节(DPL)从FFH溢出至00H时,会使高字节(DPH)加1,不影响任何标志位18.DEC A 1 1 将累加器的值减119.DEC Rn 1 1 将寄存器的值减120.DEC direct 2 1 将直接地址的内容减121.DEC @Ri 1 1 将间接地址的内容减122.MUL AB 1 4 将累加器的值与B寄存器的值相乘,乘积的低位字节存回累加器,高位字节存回B寄存器说明:将累加器A和寄存器B内的无符号整数相乘,产生16位的积,低位字节存入A,高位字节存入B寄存器。
《单片机》判断题题库答案
《单片机原理及应用》判断题题库答案三、判断正误(请在你认为正确的题后括号中填入“√”,否则填入“×”。
每题2分)1、堆栈指针SP当前的内容为50H,当执行完PUSH ACC指令后其内容变为4FH。
(×)2、为了读入P1口引脚电平的高低,需要先向P1口写入0FFH。
(√)3、当T0做为定时器使用时其对单片机内部的脉冲进行计数。
(√)4、单片机是在一片硅片上集成了中央处理器和各种输入输出接口。
(×)5、MCS-51单片机其外部中断1(INT1)的中断服务程序入口地址是0003H。
(×)6、堆栈指针SP当前的内容为60H,当执行完PUSH DPH指令后其内容变为61H。
(√)7、在MCS-51单片机中变址寻址方式用于寻址数据存储器地址空间。
(×)8、MCS-51单片机共有111条指令,其中需要4个机器周期执行时间的有2条。
(√)9、在MCS-51单片机中定时/计数器T1有四种工作方式。
(×)10、MCS-51单片机的P0口做为I/O口时,需要外接上拉电阻才能驱动MOS电路。
(√)11、当执行MOV P1,#0FFH和MOV A,P1指令后,累加器A里的内容一定是0FFH。
(×)12、在允许串口中断的情况下,当CPU响应串口的中断请求后自动将RI标志复位。
(×)13、当PSW的值为88H时,8031片内工作寄存器R0-R7相对应的片内RAM的地址为08H-0FH。
(√)14、MCS-51系列单片机采用的是哈佛结构。
(×)15、8031单片机在访问外部数据存储器时,ALE信号在两个机器周期中只出现一次。
(√)16、8031单片机外部可配置ROM的最大空间是64k字节。
(√)17、堆栈指针SP的内容是50H,当执行完指令POP ACC后其内容变为51H。
(√)18、寄存器寻址方式也可以用来访问外部数据存储器。
(×)19、MCS-51系列单片机的内部定时/计数器T1具有四种工作方式。
第三章MCS-51指令系统
3.1 概述
3.2
3.3
寻址方式
MCS-51的指令系统
3.4
伪指令
3.1
概述
指令:使计算机完成某种操作的命令。 指令系统 :计算机能够执行的全部操作所对应的指 令集合。 机器语言: 采用二进制编码表示指令,是计算机能够直 接识别和执行的语言。 汇编语言: 采用助记符 、符号、数字来表示指令的程序 语言,它与机器语言指令时一一对应的。
如果我们分别向DPH,DPL送数,则结果也一样。
如下面两条指令: 则就相当于执行了 MOV DPH,#35H MOV DPTR,#3512H。 MOV DPL,#12H。
(6) 累加器A与片外RAM之间的数据传递类指令(4条)
MOVX A,@Ri MOVX @Ri,A MOVX A,@DPTR MOVX @DPTR,A 说明: 1.在51中,与外部存储器RAM打交道的只可以是A累加器。所 有需要送入外部RAM的数据必需要通过A送去,而所有要读入的外 部RAM中的数据也必需通过A读入。 在此我们可以看出内外部RAM的区别了,内部RAM间可以直接 进行数据的传递,而外部则不行。 比如,要将外部RAM中某一单元(设为0100H单元的数据)送 入另一个单元(设为0200H单元),也必须先将0100H单元中的内 容读入A,然后再送到0200H单元中去。
MOV B,R0
PUSH ACC
;R0→B,R0为寄存器寻 址,B为直接寻址。
;A的内容压入堆栈
3.2.4
寄存器间接寻址
例:MOV A, @R0
• 以寄存器中内容为地址,以该地址中内容为操作数的
寻址方式。间接寻址的存储器空间包括内部RAM和
外部RAM。 • 能用于寄存器间接寻址的寄存器有R0,R1,DPTR, SP。其中R0、R1必须是工作寄存器组中的寄存器。 SP仅用于堆栈操作。
单片机习题及答案1
一、选择题1、第一块单片机是由( A )公司设计的。
A、美国仙童公司B、摩托罗拉公司C、PHILIPS公司D、Intel公司2、单片机的核心部件称为(C )。
A、RAMB、ROMC、CPUD、I/O3、为了要寻址64KB数据存储器,设置数据指针DPTR为(B )位。
A、8B、16C、24 D、324、8031单片机有(C )个引脚,其中有( )个I/O口。
A、40 16B、32 24C、40 32 D、50 325、8031单片机的(A)口是一个漏极开路的8位准双向I/O口,驱动能力最强,能驱动8个LSTTL负载。
A、P0B、P1C、P2D、P36、8051有( D)个中断源,可编程为( )个优先级。
A、5 1B、6 2C、8 3 D、5 27、MCS-51指令系统的指令格式中,必不可少的部分为(B)。
A、标号B、操作码C、操作数D、注释8、下列指令中,影响标志位的指令为( BC)。
A、RLB、RLCC、DEC AD、AJMP9、设当前PC的值为0900H,则执行无条件转移指令AJMP 03FFH指令后,程序转移的目的地址为(D)。
A、02FFHB、03FFHC、04FFHD、0BFFH10、在程序设计过程中,若要在某个地址开始保留一定数量的存储区,使用的伪指令为(C)。
A、DWB、DBC、DS D、XDATA11、8051单片机的定时器/计数器的启动和停止是通过对下列的( A )寄存器编程设定的。
A、TCONB、TMODC、TH0D、SCON12、若要利用定时器T1产生串口通信的波特率,则T1工作在( C )方式下。
A、方式0B、方式1C、方式2D、方式313、若要用定时器T0设计一个时间长度为100ms的定时时间,则T0应选择的工作方式为( B )。
A、方式0B、方式1C、方式2D、方式314、若定时器T1受外部输入引脚电平(高电平起作用)的影响,则要启动定时器T1运行软件,必须满足( C )。
单片机原理与应用(曹立军)章 (3)
个字母或数字,并以冒号“:”结尾。
第三章 MCS-51指令系统
操作码部分规定了指令的操作功能,即说明了指令的操作 性质。操作码是指令中唯一不能缺少的部分。上例中的操作码 是MOV,表示指令进行的送数操作。操作码一般由2~5个英文 字母表示,例如ADD、JB、LCALL等。
第三章 MCS-51指令系统
这里,用MOV A,#01H代替74 01H。其中,74H是80C51的 指令码,表示一个数据送到累加器A的操作,用指令助记符MOV A来表示;01H是要传送的数据。同样,ADD A,#02H代替24 02H,24H是指令码,表示累加器和数据的加法操作,用指令助 记符ADD A表示;02H是要加的数据。
第三章 MCS-51指令系统
R1前面加“@”,则表示R0、R1中存放地址;若不加“@”则表 示存放数据。同样,若DPTR前面加“@”则表示数据指针寄存 器存放16位地址,否则表示存放16位数据。
应注意一条指令必须占用一行,不要在一行中写两条以上 指令。
第三章 MCS-51指令系统
8051单片机是MCS-51单片机系列中最早的一个成员,但它 和MCS-51系列的其它成员一样,都使用MCS-51指令系统。MCS5l指令系统共有111条指令,根据指令所占字节多少划分,单 字节指令49条,双字节指令45条,三字节指令17条;根据每条 指令执行所需时间划分,单机器周期指令64条,双机器周期指 令45条,四机器周期指令2条(乘、除法指令)。这样,根据指 令所占字节及执行所需时间不同,MCS-51指令系统共有6种情 况:单周期单字节、单周期双字节、双周期单字节、双周期双 字节、双周期三字节、四周期单字节。
1解:8051的指令系统由111条指令组成如果按字节数分类
1001.解:8051的指令系统由111条指令组成。
如果按字节数分类,有49条单字节指令46条双字节指令和16条三字节指令,以单字节指令为主;如果按照指令执行时间分类,有64条单周期指令、45条双周期指令和2条四周期指令,以单周期指令为主。
8051的指令系统具有以下特点:(1)存储效率高、执行速度快,可以进行直接地址到直接地址的数据传送,能把一个并行I/O 口中的内容传送到内部RAM 单元中而不必经过累加器A 或工作寄存器Rn 。
这样可以大大提高传送速度和缓解累加器A 的瓶颈效应。
(2)用变址寻址方式访问程序存储器中的表格,将程序存储器单元中的固定常数或表格字节内容传送到累加器A 中。
这为编成翻译算法提供了方便。
(3)在算术运算指令中设有乘法和除法指令(4)指令系统中一些对I/O 口进行操作的指令具有“读——修改——写”的功能。
这一功能指:在执行读锁存器的指令时,CPU 首先完成将锁存器的值通过缓冲器BUF2度入内部,进行修改、改变,然后重新写到锁存器中去。
这种类型指令包含所有的逻辑操作和位操作指令。
(5)8051单片机内部有一个布尔处理器,对为地址空间具有丰富的位操作指令。
布尔操作类指令有17条,包括布尔传送指令、布尔状态控制指令、布尔逻辑操作指令、布尔条件转移指令。
2.解:MCS-51单片机指令系统按功能可分为5类:(1)数据传送指令 (2)算术运算指令(3)逻辑运算和移位指令 (4)控制转移指令(5)位操作指令MCS-51单片机的指令系统提供了七种寻址方式,其对应的寻址范围如下表:3.解: 访问特殊功能寄存器,应采用直接寻址、位寻址方式。
访问外部数据存储器,应采用寄存器间接寻址方式。
在0~255B 范围内,可用寄存器R0、R1间接寻址:MOVX A ,@R0 或 MOVX A ,@R1寻址方式 使用的变量 寻址范围 立即寻址 程序存储器直接寻址内部RAM 低128个字节; 特殊功能寄存器SFR寄存器寻址 R0~R7;A 、B 、DPTR 、C寄存器间接寻址 @R0、@R1、SP 内部RAM 、堆栈指针SP @R0、@R1、@DPTR 外部RAM变址寻址 @A+PC 、@A+DPTR 程序存储器 相对寻址 PC+偏移量 程序存储器位寻址内部RAM 低128B 位寻址区 可位寻址的特殊功能寄存器位2MOVX @R0,A 或MOVX @R1,A在0~64KB范围内,可用16位寄存器DPTR间接寻址:MOVX A,@DPTRMOVX @DPTR,A4.解:这条指令是在进行BCD码加法运算时,跟在“ADD”和“ADDC”指令之后,用来对BCD码的加法运算结果自动进行修正的,使其仍为BCD码表达形式。
51单片机学习第五章
§3.1 概述
7种寻址方式,111条指令 种寻址方式,111条指令 字节数 单字节指令:49条 单字节指令:49条 双字节指令:45条 双字节指令:45条 三字节指令:17条 三字节指令:17条 单周期指令:64条 单周期指令:64条 双周期指令:45条 双周期指令:45条 四周期指令: 四周期指令: 2 条
20112011-5-8 7
的确,这两条指令执行的结果是完全相同的, 的确,这两条指令执行的结果是完全相同的, 00H单元中的内容送到 都是将00H单元中的内容送到A中去, 都是将00H单元中的内容送到A中去,但是执行的过 程不同,执行第一条指令需要2个机器周期,而第二 程不同,执行第一条指令需要2个机器周期, 条则只需要1个机器周期, 条则只需要1个机器周期,第一条指令变成最终的目 标码要两个字节( 00H), ),而第二条则只要一个 标码要两个字节(E5H 00H),而第二条则只要一个 字节(E8H 就可以了。 字节(E8H)就可以了。
20112011-5-8
12
如:JC
23
指令代码
程序存储区 1000H 1001H 1002H 40 23 30 … 47 45
当前PC
… 1024H 1025H
23H
1002H ALU 1025H
20112011-5-8
13
3.2.7 位寻址 Bit Addressing
对片内RAM的位寻址区和某些可位寻址的特殊功 对片内RAM的位寻址区和某些可位寻址的特殊功 RAM 和某些可位寻址 能寄存器进行位操作时的寻址方式。 能寄存器进行位操作时的寻址方式。 如: SETB CLR 27H.5位置 位置1 3DH; 将27H.5位置1 C ;Cy位清0 Cy位清0 位清
【2019年整理】51单片机21,22
因此相对转移是以转移指令所在地址为基点, 向前最大可转移(127+转移指令字节数)个单元地 址,向后最大可转移(128-转移指令字节数)个单 元地址。
举例:分别计算指令2002H:JC rel中
rel=71H和rel=81H时转移的目的地址。
答案:
rel=71H时,地址偏移量为正数,所以向地址增大 的方向跳转。
2、操作码
规定指令进行什么操作。以指令助记符或伪指
令助记符表示,不可缺省。 例如:MOV —数据传送 ADD —加法运算 ORL —逻辑“或”运算
3、操作数 表示指令的操作对象。给指令的操作提供数据或 数据的地址。 在一条指令中,操作数可以为1项,2项或3项, 各操作数之间可以用逗号隔开。
例如:
INC A
3、按指令执行时间分类
分为三类: 单机器周期指令(64条),双机器周期指令 (45条),四机器周期指令(2条)。 二、指令格式
在MCS-51单片机中用汇编语言表示的指令格式为:
[标号]:<操作码> [目的操作数],[源操作数];[注释]
例如:
<>为不可缺省项; []为可选项
LOOP:MOV A,#0D0H;数据传送
直接使用位地址。 CLR D5H 使用位名称表示。 CLR F0 使用单元地址加位的表示方法。即用该位所属寄 存器的地址加位符号表示。 CLR D0H.5 使用专用寄存器符号加位的表示方法。 CLR PSW.5
6、变址寻址方式(基址+变址寻址) 以PC或DPTR作基址寄存器,以A作变址寄存器, 并以两者内容相加形成的16位地址作为操作数的地 址。 如:MOVC A,@A+DPTR 功能:将A与DPTR的内容相加得到操作数的地址, 以此地址取出数据送入A中。 说明:①这种寻址方式只限于对程序存储器进行寻址。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
XCH A,Rn ;(A)←→(Rn)累加器与工作寄存器Rn中的内容互换
XCH A,@Ri ;(A)←→((Ri))累加器与工作寄存器Ri所指的存储单元中的内容互换
XCH A,data ;(A)←→(data)累加器与直接地址单元中的内容互换
[8]. 十进制调整指令(1条)
在进行BCD码运算时,这条指令总是跟在ADD或ADDC指令之后,其功能是将执行加法运算后存于累加器A中的结果进行调整和修正。
DA A
XCHD A,@Ri ;(A 3-0 )←→((Ri) 3-0 )累加器与工作寄存器Ri所指的存储单元中的内容低半字节互换
SWAP A ;(A 3-0 )←→(A 7-4 )累加器中的内容高低半字节互换
[9]. 16位数据传送指令(1条)
这条指令的功能是把16位常数送入数据指针寄存器。
PUSH data ;(SP)+1→(SP),(data)→(SP) 堆栈指针首先加1,直接寻址单元中的数据送到堆栈指针SP所指的单元中
POP data ;(SP)→(data)(SP)-1→(SP), 堆栈指针SP所指的单元数据送到直接寻址单元中,堆栈指针SP再进行减1操作
[8]. 交换指令(5条)
MOV Rn,data ;(data)→(Rn) 直接寻址单元中的内容送到寄存器Rn中
MOV Rn,#data ;#data→(Rn) 立即数直接送到寄存器Rn中
MOV Rn,A ;(A)→(Rn) 累加器A中的内容送到寄存器Rn中
[3]. 以直接地址为目的操作数的指令(5条)
这组指令的功能是把源操作数指定的内容送到由直接地址data所选定的片内RAM中。有直接、立即、寄存器和寄存器间接4种寻址方式:
MOV data,data ;(data)→(data) 直接地址单元中的内容送到直接地址单元
MOV data,#data ;#data→(data) 立即数送到直接地址单元
MOV data,A ;(A)→(data) 累加器A中的内容送到直接地址单元
MOV data,Rn ;(Rn)→(data) 寄存器Rn中的内容送到直接地址单元
INC A ;(A)+1→(A) 累加器A中的内容加1,结果存在A中
INC data ;(data)+1→(data) 直接地址单元中的内容加1,结果送回原地址单元中
INC @Ri ;((Ri))+1→((Ri)) 寄存器的内容指向的地址单元中的内容加1,结果送回原地址单元中
INC Rn ;(Rn)+1→(Rn)寄存器Rn的内容加1,结果送回原地址单元中
ADDC A,@Ri ;(A)+((Ri))+(C)→(A) 累加器A中的内容与工作寄存器Ri指向地址单元中的内容、连同进位位相加,结果存在A中
[3]. 带借位减法指令(4条)
这组指令包含立即数、直接地址、间接地址及工作寄存器与累加器A连同借位位C内容相减,结果送回累加器A中。
这里我们对借位位C的状态作出说明,在进行减法运算中,CY=1表示有借位,CY=0则无借位。OV=1声明带符号数相减时,从一个正数减去一个负数结果为负数,或者从一个负数中减去一个正数结果为正数的错误情况。在进行减法运算前,如果不知道借位标志位C的状态,则应先对CY进行清零操作。
[1]. 加法指令(4条)
这4条指令的作用是把立即数,直接地址、工作寄存器及间接地址内ቤተ መጻሕፍቲ ባይዱ与累加器A的内容相加,运算结果存在A中。
ADD A,#data ;(A)+#data→(A) 累加器A中的内容与立即数#data相加,结果存在A中
ADD A,data ;(A)+(data)→(A) 累加器A中的内容与直接地址单元中的内容相加,结果存在A中
DEC A ;(A)-1→(A)累加器A中的内容减1,结果送回累加器A中
DEC data ;(data)-1→(data)直接地址单元中的内容减1,结果送回直接地址单元中
DEC @Ri ;((Ri))-1→((Ri))寄存器Ri指向的地址单元中的内容减1,结果送回原地址单元中
DEC Rn ;(Rn)-1→(Rn)寄存器Rn中的内容减1,结果送回寄存器Rn中
SUBB A,data ;(A)-(data) - (C)→(A) 累加器A中的内容与直接地址单元中的内容、连同借位位相减,结果存在A中
SUBB A,#data ;(A)-#data -(C)→(A) 累加器A中的内容与立即数、连同借位位相减,结果存在A中
SUBB A,Rn ;(A)-(Rn) -(C)→(A) 累加器A中的内容与工作寄存器中的内容、连同借位位相减,结果存在A中
MOV @Ri,#data ;#data→((Ri)) 立即数送到以Ri中的内容为地址的RAM单元
MOV @Ri,A ;(A)→((Ri)) 累加器A中的内容送到以Ri中的内容为地址的RAM单元
[5]. 查表指令(2条)
这组指令的功能是对存放于程序存储器中的数据表格进行查找传送,使用变址寻址方式:
ADD A,Rn ;(A)+(Rn)→(A) 累加器A中的内容与工作寄存器Rn中的内容相加,结果存在A中
ADD A,@Ri ;(A)+((Ri))→(A) 累加器A中的内容与工作寄存器Ri所指向地址单元中的内容相加,结果存在A中
[2]. 带进位加法指令(4条)
这4条指令除与[1]功能相同外,在进行加法运算时还需考虑进位问题。
MOV DPTR,#data16 ;#dataH→(DPH),#dataL→(DPL)16位常数的高8位送到DPH,低8位送到DPL
MCS-51算术运算指令
算术运算指令共有24条,算术运算主要是执行加、减、乘、除法四则运算。另外MCS-51指令系统中有相当一部分是进行加、减1操作,BCD码的运算和调整,我们都归类为运算指令。虽然MCS-51单片机的算术逻辑单元ALU仅能对8位无符号整数进行运算,但利用进位标志C,则可进行多字节无符号整数的运算。同时利用溢出标志,还可以对带符号数进行补码运算。需要指出的是,除加、减1指令外,这类指令大多数都会对PSW(程序状态字)有影响。这在使用中应特别注意。
MOV A,Rn ;(Rn)→(A) Rn中的内容送到累加器A中
MOV A,@Ri ;((Ri))→(A) Ri内容指向的地址单元中的内容送到累加器A
[2]. 以寄存器Rn为目的操作数的指令(3条)
这3条指令的功能是把源操作数指定的内容送到所选定的工作寄存器Rn中。有直接、立即和寄存器寻址方式:
DIV AB ;(A)÷(B)→(A)和(B) 累加器A中的内容除以寄存器B中的内容,所得到的商存在累加器A,而余数存在寄存器B中。
[6]. 加1指令(5条)
这5条指令的的功能均为原寄存器的内容加1,结果送回原寄存器。上述提到,加1指令不会对任何标志有影响,如果原寄存器的内容为FFH,执行加1后,结果就会是00H。这组指令共有直接、寄存器、寄存器减间址等寻址方式:
MOVC A,@A+DPTR ;((A))+(DPTR)→(A) 表格地址单元中的内容送到累加器A中
MOVC A,@A+PC ;((PC))+1→(A),((A))+(PC)→(A) 表格地址单元中的内容送到累加器A中
[6]. 累加器A与片外数据存储器RAM传送指令(4条)
这4条指令的作用是累加器A与片外RAM间的数据传送。使用寄存器寻址方式:
[1]. 以累加器A为目的操作数类指令(4条)
这4条指令的作用是把源操作数指向的内容送到累加器A。有直接、立即数、寄存器和寄存器间接寻址方式:
MOV A,data ;(data)→(A) 直接单元地址中的内容送到累加器A
MOV A,#data ;#data→(A) 立即数送到累加器A中
最佳答案 MCS-51系列单片机指令系统共有111条指令,其中有49条单字节指令、45条双字节指令和17条三字节指令。
MCS-51数据传送指令:
数据传送指令共有29条,数据传送指令一般的操作是把源操作数传送到目的操作数,指令执行完成后,源操作数不变,目的操作数等于源操作数。如果要求在进行数据传送时,目的操作数不丢失,则不能用直接传送指令,而采用交换型的数据传送指令,数据传送指令不影响标志C,AC和OV,但可能会对奇偶标志P有影响。
MOVX @DPTR,A ;(A)→((DPTR)) 累加器中的内容送到数据指针指向片外RAM地址中
MOVX A, @DPTR ;((DPTR))→(A) 数据指针指向片外RAM地址中的内容送到累加器A中
MOVX A, @Ri ;((Ri))→(A) 寄存器Ri指向片外RAM地址中的内容送到累加器A中
MUL AB ;(A)×(B)→(A)和(B) 累加器A中的内容与寄存器B中的内容相乘,结果存在A、B中
[5]. 除法指令(1条)
这个指令的作用是把累加器A的8位无符号整数除以寄存器B中的8位无符号整数,所得到的商存在累加器A,而余数存在寄存器B中。除法运算总是使OV和进位标志位CY等于0。如果OV=1,表明寄存器B中的内容为00H,那么执行结果为不确定值,表示除法有溢出。
INC DPTR ;(DPTR)+1→(DPTR)数据指针的内容加1,结果送回数据指针中
在INC data这条指令中,如果直接地址是I/O,其功能是先读入I/O锁存器的内容,然后在CPU进行加1操作,再输出到I/O上,这就是“读—修改—写”操作。
[7]. 减1指令(4条)
这组指令的作用是把所指的寄存器内容减1,结果送回原寄存器,若原寄存器的内容为00H,减1后即为FFH,运算结果不影响任何标志位,这组指令共有直接、寄存器、寄存器间址等寻址方式,当直接地址是I/O口锁存器时,“读—修改—写”操作与加1指令类似。