MCS-51汇编语言指令字节数
MCS-51指令系统
4、控制转移类指令(二)
无条件转移:(LJMP,AJMP,SJMP,JMP—4条) LJMP addr16 长跳转指令
——可在64K范围内跳转 AJMP addr11 绝对跳转指令
——可在指令所在的2K范围内跳转 SJMP rel 相对跳转指令
——可在当前PC-128与+127范围内跳转 JMP @A+DPTR 间接长跳转指令
1
累加器清零/取反操作 (CLR,CPL—2条)
CLR A —对累加器清零
1 Byte 1 Tm
CPL A ——对累加器按位取非 1 Byte 1 Tm 15
3、逻辑运算及移位类指令(三)
逻辑运算指令在程序中的应用(下面的例子认为Acc 的内容为9AH)
逻辑与ANL运算用于对某些位进行清0或者保留: 例: ANL A, #0FH; 则(A) = 0AH
位清零/置位指令(4条): CLR bit(或C) —— (bit或 C)“0” SETB bit(或C) —— (bit或 C)“1”
位逻辑与/或/非指令(6条): ANL C,bit(或/bit) ORL C,bit(或/bit) CPL bit (或 C) 注: “/bit”表示对bit位先取反然后再参加运算
带借位减法(SUBB):(A) ← (A)- (Cy)- (第二操作数)
10
2、算术运算类指令(三)
加1/减1操作: (INC,DEC—9条) INC, DEC与用加/减法指令做加1/减1 操作不 同之处在于INC、DEC不影响标志位。
单字节乘/除运算: (MUL,DIV—2条) 两个单字节数的乘/除法运算只在A与B之间 进行。 MUL AB: (A)与(B)相乘, 积为16位数,
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。
单片机常用指令
计算机通过执行程序完成人们指定的任务,程序由一条一条指令构成,能为CPU识别并执行的指令的集合就是该CPU的指令系统。
MCS-51单片机汇编语言指令格式:操作符目的操作数,源操作数指令中的常用符号Rn: n=(0~7),表示当前工作寄存器R0~R7中的一个Ri: i=(0、1),代表R0和R1寄存器中的一个,用作间接寻址寄存器dir : 8 位直接字节地址(片内RAM 和SFR )#data: 8位立即数,即8位常数。
可以为2进制(B)、10进制、16进制(H)、字符(‘ ’)#data16: 表示16位立即数,即16位常数,取值范围为#0000H~#0FFFFHaddr16 : 表示16位地址addr11 : 表示11位地址rel : 相对偏移量(为一字节补码)用于相对转移指令中bit :位地址,在位地址空间中。
$: 表示当前指令的地址。
寻址方式1、立即寻址指令中直接给出操作数的寻址方式。
在51系列单片机的指令系统中,立即数用一个前面加“#“号的8位数(#data,如#30H)或16位数(#data16,如#2052H)表示。
立即寻址中的数,称为立即数。
例如指令:MOV A,#30H2、直接寻址操作数的地址直接出现在指令中。
寻址对象:①内部数据存贮器:使用它的地址。
②特殊功能寄存器:既可使用它的地址,也可以直接使用寄存器名。
3、寄存器寻址操作数存放在寄存器中。
寻址对象:A,B,DPTR,R0~R7 。
B 仅在乘除法指令中为寄存器寻址,在其他指令中为直接寻址。
A 可以寄存器寻址又可以直接寻址,直接寻址时写作ACC例如:MOV A,R0 ;R0→A,A、R0均为寄存器寻址,机器码E8MUL AB ;A*B→BA,A、B为寄存器寻址,机器码A4MOV B,R0 ;R0→B,R0为寄存器寻址,B为直接寻址机器码88F0,其中F0为B的字节地址(见表1-2)PUSH ACC ;A的内容压入堆栈机器码C0E04、寄存器间址操作数存放在以寄存器内容为地址的单元中。
MCS-51单片机指令系统与汇编语言程序设计
docin/sundae_meng
P73 例2.58
ORG 0100H
MOV DPTR,#DATA LOOP2: MOV R1,A
MOV R0,#30H
INC R1
MOV R1,#40H LOOP: MOVX A,DPTR
START:
ORG 1000H MOV DPTR,#TABLE MOV A,20H ANL A,#0FH MOVC A,@A+DPTR MOV 21H,A
docin/sundae_meng
TABLE:
MOV A,20H ANL A,#0F0H
SWAP A MOVC A,@A+DPTR MOV 22H, A SJMP $ DB 30H,31H,32H,33H,34H
docin/sundae_meng
ORG 1000H
START: MOV A, 40H
; 将X送入A中
JZ COMP
; 若A为0,转至COMP处
JNB ACC.7, POST ; 若A第7位不为1(X为正数),则程序转到
POST处,否则(X为负数)程序往下执行
MOV A, #0FFH ; 将1(补码)送入A中
docin/sundae_meng
2.4.1 汇编语言程序设计的步骤
汇编语言程序设计:根据任务要求,采用汇编语言编制程序的过程称为汇编 语言程序设计。 汇编语言程序设计的步骤: (1)拟订设计任务书 (2)建立数学模型 (3)确定算法 (4)分配内存单元,编制程序流程图 (5)编制源程序
进一步合理分配存储器单元和了解I/O接口地址;按功能设计程序,明确 各程序之间的相互关系;用注释行说明程序,便于阅读和修改调试和修改。 (6)上机调试 (7)程序优化
MCS-51指令及编码表
机器周期数 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 2
指令助记符 NOP AJMP LJMP RR INC INC INC INC INC INC INC INC INC INC INC INC JBC ACALL LCALL RRC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC EDC EDC JB
机器周期数 1 1 1 2 2 2 2 1 2 1 1 1 1 1 1 1 1 1 1 2 2 2 2 4 2 1 1 1 1 1 1 1 1 1 1 2 2 2
指令助记符 XRL XRL XRL JNZ ACALL ORL JMP MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SJMP AJMP ANL MOVC DIV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV ACALL MOV
操作数 A,@R1 A,R0 A,R1 A,R2 A,R3 A,R4 A,R5 A,R6 A,R7 bit,rel code addr11 direct,A direct,#data A,#data A,direct A,@R0 A,@R1 A,R0 A,R1 A,R2 A,R3 A,R4 A,R5 A,R6 A,R7 bit,rel code addr11 direct,A direct,#data A,#data A,direct A,@R0 A,@R1 A,R0 A,R1 A,R2 A,R3 A,R4
6
续表 机器码 [H] DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF
8051指令
附录3:MCS—51系列单片机的指令介绍MCS—51汇编语言共有111条指令,其中49条是单字节指令,45条是双字节指令。
在111条指令中,单周期指令64条,双周期指令45条,占用4个周期的指令2条。
关于MCS—51汇编语言指令,有大量书籍详细介绍,在此,以表格形式列出,注释简短而精练,便于读者查阅。
一些特殊符号的意义:在介绍指令系统前,我们先了解一些特殊符号的意义,这对今后程序的编写都是相当有用的。
●Rd:当前选中的寄存器区的8个工作寄存器R0~R7(d=0~7)。
●Ri:当前选中的寄存器区中可作为地址寄存器的两个寄存器R0和R1(i=0,1)。
●@:间接寄存器寻址或基址寄存器的前缀。
●M:内部数据存储单元的8位地址。
包含0~127(255)内部存储单元地址和特殊功能寄存地址。
●#n:指令中的8位常数。
●#n(16):指令中的16位常数。
●a(16):用于LCALL和LJMP指令中的16目的地地址,目的地址的空间为64kB程序存储器地址。
●a(11):用于ACALL和AJMP指令中的11目的地地址,目的地址必须放在与下条指令第一个字节同一个2kB程序存储器空间之中。
●r:8位带符号的偏移字节,用于所有的条件转移和SJMP等指令中,偏移字节对于下条指令的第一个字节开始的-128~+127范围内。
●b:内部RAM和特殊功能寄存器的直接寻址位。
1.数据传送指令数据传送指令共28条,可分为8位传送指令、16位传送指令和字节交换指令3类。
数据传送指令要点见表3。
表3 数据传送指令2.算术运算指令算术运算指令共24条,有加、减、乘、除、十进制调整5种操作,由7种操作助记符来描述,算术运算指令要点见表4。
表4 算术运算指令3.逻辑运算指令逻辑运算指令共25条,有逻辑与、或、异或、清零、取反、环移和半字节交换7种操作,由10种操作码助记符来描述。
逻辑运算指令要点见表5。
表5 逻辑运算指令4.位操作指令位操作指令共12条,有位传送、位变量更改、位变量逻辑与和位变量逻辑或4种操作,由6种操作码助记符来描述。
MCS-51单片机指令系统
MOV DPTR,#2000H
6、栈操作指令
PUSH direct; (SP)<-SP+1, ((SP))<(direct)
进栈指令的功能是先将SP的指针加1,然 后把直接地址指出的内容传送到栈指针SP寻 址的内部RAM单元中。
POP direct; (direct)<-((SP)), (SP)<-SP-1
@DPTR, A; ((DPTR))<-(A)
A, @R1
@DPTR,A
8、查表指令
MOVC A,@A+DPTR; (A)<-((A))+((DPTR)) MOVC A,@A+PC ; (A)<-((A))+((PC))
9、字节交换指令
XCH A, Rn; XCH A,direct; XCH A,@Ri;
XRL A, direct ; A与direct中的值 ;按位'异或',结果送入A中
XRL A, @Ri; A与间址寻址单元@Ri中 ;的值按位'异或',结果送入A中
4、逻辑异或指令
XRL A, #data ;A与立即数data按位 ;‘异或’,结果送入A中
XRL direct, A ; direct中值与A中的值 ;按位‘异或’, ;结果送入direct中
(A)<->(Rn) (A)<->(direct) (A)<->((Ri))
10、半字节交换指令
XCHD A,@Ri; (A)0-3<->((Ri))0-3
2、算术指令
1、不带进位位的加法
ADD
A, #data;
(A)<-(A)+#data
MCS-51单片机的汇编语言
绝对地址段选择伪指令
CSEG
[AT
address]
DSEG
[AT
address]
ISEG
[AT
address]
BSEG
[AT
address]
XSEG
[AT
address]
分别为程序存储器、内部数据存储器、间接寻址的内部数据存 储器、位寻址区和外部数据存储器的使用指定绝对地址
1.5 通用的转移和调用语句
MCS-51汇编器允许程序员使用通用的转移和调用助记符JMP 与CALL
用来代替SJMP、AJMP、LJMP和ACALL、LCALL
汇编产生的未必是最优化的结果
1.6 条件汇编
将一个软件的多个版本保存在同一组源程序文件中 使用IF、ELSEIF、ELSE、ENDIF IF或ELSEIF后的表达式通常为关系表达式 当IF或ELSEIF后的数值表达式的值非零时,汇编其后的语句组;
1.4 伪指令语句
ORG伪指令
ORG
பைடு நூலகம்
expression
设置汇编计数器的值,指定其后语句的起始地址
伪指令语句
END伪指令
应当是源程序的最后一条语句 通知汇编程序汇编过程应在此结束 汇编器不理会END后面的文件内容
每个程序文件都应以END结束
伪指令语句
EQU和SET伪指令
symbol
单片机原理与应用
MCS-51单片机的汇编语言
INTS SET
IF ELSE ENDIF
INTS = 1 MAIN_START
MAIN_START
NUM1 DATA NUM2 DATA
DSEG AT
STACK: DS
20H
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单片机的指令系统中,因指令操作码和操作数 的不同,指令(在存储器中)长度也各不相同。
分为单字节、双字节和三字节。
详细点的51指令介绍
详细点的51指令介绍MCS-51系列单片机指令表MCS-51系列单片机指令以A开头的指令有18条,分别为:ACALL addr11 ADD A,Rn ADD A,direct ADD A,@Ri ADD A,#data ADDC A,Rn ADDC A,direct ADDC A,@Ri ADDC A,#data AJMP addr11 ANL A,Rn ANL A,direct ANL A,@Ri ANL A,#data ANL direct,A ANL direct,#data ANL C,bit ANL C,/bit 1、ACALL addr11 指令名称:绝对调用指令指令代码:A10 A9 A9 1 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0 指令功能:构造目的地址,进行子程序调用。
其方法是以指令提供的11位地址(al0~a0),取代PC 的低11位,PC的高5位不变。
操作内容:PC←(PC)+2 SP←(SP)+1 (SP)←(PC)7~0 SP←(SP)+1 (SP)←(PC)15~8 PC10~0←addrl0~0 字节数:2 机器周期:2 使用说明:由于指令只给出子程序入口地址的低11位,因此调用范围是2KB。
2、ADD A,Rn 指令名称:寄存器加法指令指令代码:28H~2FH 指令功能:累加器内容与寄存器内容相加操作内容:A←(A)+(Rn),n=0~7 字节数:1 机器周期;1 影响标志位:C,AC,OV 3、ADD A,direct 指令名称:直接寻址加法指令指令代码:25H 指令功能:累加器内容与内部RAM单元或专用寄存器内容相加操作内容:A←(A)+(direct) 字节数:2 机器周期:1 影响标志位:C,AC,OV 4、ADD A,@Ri ’指令名称:间接寻址加法指令指令代码:26H~27H 指令功能:累加器内容与内部RAM低128单元内容相加操作内容:A←(A)+((Ri)),i=0,1 字节数: 1 机器周期:1 影响标志位:C,AC,OV 5、ADD A,#data 指令名称:立即数加法指令指令代码:24H 指令功能:累加器内容与立即数相加操作内容:A←(A)+data 字节数: 2 机器周期:1 影响标志位:C,AC,OV 6、ADDC A,Rn 指令名称:寄存器带进位加法指令指令代码:38H~3FH 指令功能:累加器内容、寄存器内容和进位位相加操作内容:A←(A)+(Rn)+(C),n=0~7 字节数: 1 机器周期:1 影响标志位:C,AC,OV 7、ADDC A,direct 指令名称:直接寻址带进位加法指令指令代码:35H 指令功能:累加器内容、内部RAM低128单元或专用寄存器内容与进位位加操作内容:A←(A)+(direct)+(C) 字节数:2 机器周期:1 影响标志位:C,AC,OV 8、ADDC A,@Ri 指令名称:间接寻址带进位加法指令指令代码:36H~37H 指令功能:累加器内容、内部RAM低128单元内容及进位位相加操作内容:A←(A)+((Ri))+(C),i=0,1 字节数: 1 机器周期:1 影响标志位:C,AC,OV 9、ADDC A,#data 指令名称:立即数带进位加法指令指令代码:34H 指令功能:累加器内容、立即数及进位位相加操作内容:A←(A)+data+(C) 字节数: 2 机器周期:1 影响标志位:C,AC,OV 10、AJMP addr11 指令名称:绝对转移指令指令代码:A10 A9 A8 1 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0 指令功能:构造目的地址,实现程序转移。
第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地址段。
C51指令系统详解(汇编)
汇编语言程序的指令学习要使用单片机,就要学会编写程序。
一台计算机,无论是大型机还是微型机,如果只有硬件,而没有软件(程序),是不能工作的。
单片机也不例外,它必须配合各种各样的软件才能发挥其运算和控制功能。
单片机的程序一般用汇编语言指令来表示。
所谓指令是规定计算机进行某种操作的命令。
一条指令只能完成有限的功能,为使计算机完成一定的或复杂的功能就需要一系列指令。
计算机能够执行的各种指令的集合称为指令系统。
计算机的主要功能也是由指令系统来体现的。
一般来说,一台计算机的指令越丰富,寻址方式越多,且每条指令的执行速度越快,则它的总体功能越强。
5.1 MCS-51单片机的指令系统MCS-51单片机的指令系统使用了7种寻址方式,共有111条指令,如按字节数分类,其中单字节指令49条,双字节指令45条,三字节指令17条;如按运算速度分类,单周期指令占64条,双周期指令占45条,四周期指令占2条。
可见,MCS-51指令系统在占用存储空间方面和运行时间方面效率都比较高。
另外,MCS-51有丰富的位操作指令,这些指令与位操作部件组合在一起,可以把大量的硬件组合逻辑用软件来代替,这样可方便地用于各种逻辑控制。
指令一般由两部分组成,即操作码和操作数。
对于单字节指令有两种情况:一种是操作码、操作数均包含在这一个字节之内;另一种情况是只有操作码无操作数。
对于双字节指令,均为一个字节是操作码,一个字节是操作数;对于三字节指令,一般是一个字节为操作码,二个字节为操作数。
由于计算机只能识别二进制数,所以计算机的指令均由二进制代码组成。
为了阅读和书写方便,常把它写成十六进制形式,通常称这样的指令为机器指令。
现在一般的计算机都有几十甚至几百种指令。
显然,即便用十六进制去书写和记忆也是不容易的。
为了便于记忆和使用,制造厂家对指令系统的每一条指令都给出了助记符。
助记符是根据机器指令不同的功能和操作对象来描述指令的符号。
由于助记符是用英文缩写来描述指令的特征,因此它不但便于记忆,也便于理解和分类。
第三章MCS51的指令系统
3.4.1 MCS-51数据传送指令
[1]. 以累加器A为目的操作数类指令(4条) 这4条指令的作用是把源操作数指向的内容送到累加器A。有直接、
立即数、寄存器和寄存器间接寻址方式:
MOV A,direct
(direct)→(A)直接单元30H
MOV A,0A2H
§3.1 概述
7种寻址方式,111条指令
指令所占用空 间(字节数)
指令执行周期 (运算速度)
单字节指令:49条 双字节指令:45条 三字节指令:17条
单周期指令:64条 双周期指令:45条 四周期指令:2 条
试问
1 如果一条指令执行时间为3个机器周 期,那么需要经历多少个时钟周期?
2 如果一条指令执行时使用了2us,而 晶振使用的是12MHz,请问执行这条指 令需要多少个机器周期?
(A)+((Ri))+(C)→(A) 累加器A中的内容与工作寄存 器Ri指向地址单元中的内容、连同进位位相加,结果存在A中
3.4.2 MCS-51算术运算指令
[3]. 带借位减法指令(4条)
这组指令包含立即数、直接地址、间接地址及工作寄存器与累加器A连同借位 位C内容相减,结果送回累加器A中。
3.4.1 MCS-51数据传送指令
[2]. 以寄存器Rn为目的操作数的指令(3条)
这3条指令的功能是把源操作数指定的内容送到所选定的工作寄存器 Rn中。有直接、立即和寄存器寻址方式:
MOV Rn, direct (data)→(Rn) 直接寻址单元中的内容送到寄存器Rn中 MOV R4,37H
**补充知识
MCS51系列单片机为复杂指令单片机CISC。目前单片机大 量使用的是精简指令集RISC结构单片机.
第三章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仅用于堆栈操作。
第三章 MCS-51单片机指令系统
位操作类指令(17条)
位操作指令实际就是布尔处理机的指令系统,这 为开关量控制提供了非常有效的手段。
位传送
位置位复位
位运算 位控制转移
位数据传送指令(2条)
MOV MOV
C , bit bit,C
例:片内RAM中(20H)=7FH,执行指令
MOV C,07H 则C=0
位置位复位指令(4条)
调用与返回指令组(4条)
长调用指令 绝对调用指令 子程序返回指令
LCALL addr16 ACALL addr11 RET
中断服务程序返回指令 RETI
空操作指令(1条)
NOP
例:把2000H开始的外部RAM单元中的数据送到3000H
开始的外部RAM单元中,数据个数存放在内部RAM 35H单元。
ANL(ORL,XRL) A , { #data ; direct ; @Ri ; Rn }
2. 直接地址单元与累加器A、立即数之间的逻辑操作(6条)
ANL(ORL,XRL) direct , { A ; #data }
清零与取反指令(2条)
清零: 取反:
CLR A CPL A
循环移位指令(4条)
2. 带进位加法指令(4条) ADDC A , { #data ; direct ; @Ri ; Rn }
3. 带借位减法指令(4条) SUBB A , { #data ; direct; @Ri ; Rn }
影响所有标志位状态
例: 执行指令 MOV A , #0C2H ADD A , #0A9H 对PSW相应状态位的影响如下 1 1 1
3.2 MCS-51指令分类介绍
共分5大类,111条指令。
1.数据传送类指令(29条) 2.算术运算类指令(24条) 3.逻辑运算及移位类指令(24条) 4.控制转移类指令(17条) 5.位操作类指令(17条)
第二章 MCS-51指令系统及汇编语言程序设计
XCH A, direct 1 1 0 0 0 1 0 1
6.半字节交换指令
助记符 XCHD A, @Ri 机器码 1101011r 功能 ; (A3~0)((Ri)3~0), i=0,1
数据传送类指令
数据传送类指令的助记符有: MOV、MOVX、MOVC XCH、XCHD PUSH、POP
寄存器C MCS-51 传送指令 示意图 寄存器 R7~R0 直接地址 direct 直接地址 direct 寄存器 DPTR 立即数 #data
例:设外部数据存储器2097H单元中内容 为80H,在执行下列指令后,则A中的内容 为80H。 MOV P2, #20H MOV R0, #97H MOVX A, @R0
Ⅱ.由Ri内容指示外部数据存储器地址 (2)累加器内容送外部数据存储器
助记符 MOVX @Ri, A 目标 源 机器码 11110011 功能 ; ((Ri)+(P2))←A, i=0,1
二、直接寻址
紧跟在操作码后的是操作数的直接地址。 该方式中操作数存储的空间有三种:
1.内部数据存储器的低1 ; (70H)→A 2.位地址空间 例:MOV C, 00H ; 直接位00H内容→ 进位位 MOV 00H → 3.特殊功用功能寄存器 *只能用直接寻址方式进行访问。 例: MOV IE, #85 ; 立即数85H →中断允许寄存器
执行该指令时: 1.P3.6引脚上输出WR有效信号 2. Ri包含的低8位地址由P0口输出,高8位地址信息 由P2口输出。 3.累加器A的内容由P0口输出。 4.P0口作分时复用。
3.程序存储器内容送累加器
该类指令常用于查表。 (1)PC作基址寄存器
助记符 MOVC A, @A+PC 目标 源 机器码 10000011 功能 ; PC←PC+1 A ←((A)+(PC))
MCS-51指令系统
2019/2/23
7
直接寻址
操作数直接给出所用数据所在单元的地址, 所以称这种方法为直接寻址。 如: MOV A,00H MOV A,0F0H
比较以上两指令的区别
2019/2/23 8
寄存器寻址
操作数给出了通用寄存器的内容,直接以寄存器的 名义来表示操作数位置。 特殊功能寄存器有:R0~R7、A、B、DPTR及CY中的 数进行操作。 例:MOV A,R0;将R0工作寄存器中的数据送到累加器A中去。
2019/2/23
18
以直接地址为目的操作数的指令
MOV direct,A MOV direct,Rn MOV direct1,direct2 MOV direct,@Ri MOV direct,#data 指令功能:把源操作数指定的内容送入由直接地址 指出的片内存储单元。
2019/2/23
19
以间接地址为目的操作数的指令 MOV @Ri,A ;A →(Ri) MOV @Ri,direct ;(direct) →(Ri) MOV @Ri,#data ; data →(Ri) 功能:把源操作数指定的内容送入以R0或R1为地 址指针的片内存储单元中。 例: MOV @R0,A MOV @R1,20H MOV @R0,#34H
rel: 补码形式的8位地址偏移量。
偏移范围为-128~127
(X):X单元中的内容
$ : 当前指令存放的地址
2019/2/23
3
指令格式
汇编语言指令
一条用助记符表示的汇编语言指令
操作码 操作数
指令的功能
2019/2/23
指令的操 作对象
4
汇编语言指令格式
标号:操作码助记符 目的操作数,源操作数;注释 例如:Loop:MOV A,R0; (R0) --->(A)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MCS-51单片机的指令字节数
汇编语言的语句的格式为:
标号段:操作码段第一操作数,第二操作数;注释段(如 START: MOV A,#00H ;把0赋给A)
其中操作码段是必段的,其他的段是根据不同的指令而不同,操作数段可以只有一个操作数,也可以有两个操作数,有时还会有三个操作数的情况。
在51单片机中,有单字节指令、双字节指令和三字节指令。
只要理解了指令占用的这些字节都是用来存放哪些量的,那自然就会判断不同的指令是多少字节指令了。
1、操作码段占用一个字节。
2、8位立即数占用一个字节,16位立即数占用两个字节。
3、8位操作数地址占用一个字节,16位操作数地址占用两个字节。
4、CPU内部的各种寄存器不占用指令字节,如A, B, R0, R1, DPTR等。
现在就可以判断51的指令占用的字节数了:
MOV A, R0 ;这是单字节指令,其中MOV占用一个字节,A和R0是CPU内部寄存器,不占用指令字节。
MOV A, #07H ;这是双字节指令,其中MOV占用一个字节,8位立即数#07H占用一个字节。
MOV DPTR, #0106H ;这是三字节指令, MOV占用一个字节,16位立即数#0106H
占用两个字节。
MOV 07H, #07H ;这是三字节指令,MOV占用一个字节,8位地址07H占用一个字节,8位立即数#07H占用一个字节。