8051汇编语言概述一 ) 指令分类 42个助记符,33种功能,共...

合集下载

第三章 8051汇编指令

第三章  8051汇编指令
((x))— 由X地址中的内容为地址,其地址单 元中的内容。
6
汇编语言对不同数制的表示方式
数据的表示方式: 十进制立即数:MOV A,#123 十六进制: MOV A,#7FH 二进制: MOV A,#10011011B 直接地址的表示方式: 十进制立即数:MOV A,123 十六进制: MOV A,7FH 二进制: MOV A,10011011B
注:目的操作数都是A
39
算术运算指令
[2]. 带进位加法指令(4条)
ADDC A, direct ;(A)+(data)+(C)→(A)
ADDC A,#data ;(A)+#data +(C)→(A) ADDC A,Rn ADDC A,@Ri ;(A)+Rn+(C)→(A) ;(A)+((Ri))+(C)→(A)
例如: CLR C
CPL C
SETB P1.2 作业:写出51单片机可位寻址的专用寄存器有哪 些?
17
[7].相对寻址 以PC的内容为基址,加上给出的偏移 量作为转移地址,从而实现程序的转移。这 种寻址方式主要用于转移指令。
例如: S: MOV A,#20 ..... AJMP S
18
软件使用介绍 单片机编程软件:KEIL 电路仿真软件:PROTEUS 电路仿真软件 PCB设计软件
MOV A,#'k'
11
[2].直接寻址 指令中原操作数直接以存储单元的地址 出现。 MOV A,direct 例如: MOV A,68H
12
[3].寄存器寻址 寄存器寻址可以对8个工作寄存器R0-R7进 行操作,也可以对寄存器A、B等进行操作。 例如: MOV R1,#10 MOV A,R1 MOV R2,A

第3章 8051指令系统与编程基础-编程基础部分

第3章 8051指令系统与编程基础-编程基础部分

3.9.2 查表程序的设计
查表程序是一种常用程序,避免复杂的运算或转换过程,可 完成数据补偿、修正、计算、转换等各种功能,具有程序简 单、执行速度快等优点。 查表是根据自变量x,在表格寻找y,使y =f(x)。单片机中 的数据表格存放于程序存储器内,在执行查表指令时,发出 读程序存储器选通脉冲 。两条极为有用的查表指令如下:
7
3.6 汇编语言概述
1 标号
语句所在地址的标志符号。如上面的标号“START”和“LOOP”等。有关 标号规定如下: 标号后必须跟冒号“:”。 标号由1~8个ASCII码字符组成,第一个字符必须是字母。 同一标号在一个程序中只能定义一次,不能重复定义。 不能使用汇编语言已经定义的符号作为标号,如指令助记符、伪指令 以及寄存器的符号名称等。 标号的有无,取决于本程序中的其他语句是否访问该条语句。如无其 他语句访问,则该语句前不需标号。
(1)MOVC
(2)MOVC 指令“MOVC 送到A中。
A,@A+DPTR
A,@A+PC A,@A+DPTR” 把A中内容与DPTR中内容相加,
结果为某一程序存储单元的地址,然后把该地址单元的内容
27
例:求0-10的平方程序
• ORG 0000H • MOV A,#8 • LCALL PF • AJMP $ • • ORG 0100H • PF: PUSH DPH • PUSH DPL • MOV DPTR,#TAB1 • MOVC A,@A+DPTR • POP DPL • POP DPH • RET • TAB1: DB 0,1,4,9,16 • DB 19H,24H,31H,40H,51H • end
13
3.7 伪指令介绍

8051汇编语言概述一 ) 指令分类 42个助记符,33种功能,共...

8051汇编语言概述一 ) 指令分类 42个助记符,33种功能,共...

3-2-6 位寻址
位寻址的的操作数是RAM单元和特殊功能寄存器中可 用于位操作的位的地址。 例如: setb 40h ;将28h的最低位(第0位)臵1 mov c, 3fh ;将27h的最高位(第7位)送到CY mov 3fh , c ;将CY 送到27h的最高位(第7位) anl c, 3fh ;CY & (27h的第7位) -> CY
3-3-4 累加器交换指令
1) 字节交换指令XCH(3 条)
助记符格式
XCH A, Rn
机器码
11001rrrB
相应操作
A Rn
指令说明 机器周期
n=0~7 1 1
XCH A, direct 11000101B A (direct) direct
XCH A, ቤተ መጻሕፍቲ ባይዱRi
1100011iB data
相应操作
Rn ← A
指令说明
n=0~7, rrr=000~111
机器周期
1 1 1
10101rrr Rn←(direct) n=0~7, direct rrr=000~111 Rn←#data n=0~7, rrr=000~111
MOV Rn, #data 01111rrr data
注意:以上传送指令的结果均不影响程序状态字寄存器 PSW 的 P 和 Z 标志。
3-3-1 片内数据存储器传送指令MOV
片内数据存储器传送指令MOV 共17 条,指令基本格式: MOV <目的操作数>, <源操作数> 1)以累加器 A 为目的地址的传送指令(4 条)
助记符格式 MOV A, Rn MOV A, direct MOV A, @Ri MOV A, #data 机器码 11101rrrB 相应操作 A←Rn 指令说明 n=0~7, rrr=000~111 i=0,1 机器周期 1 1 1

80c51汇编语言指令

80c51汇编语言指令

80c51汇编语言指令80C51汇编语言是一种常用的低级程序设计语言,广泛应用于嵌入式系统中。

它是基于Intel 8051系列单片机的指令集架构,具有高效、灵活、可靠的特点。

本文将介绍80C51汇编语言的一些常用指令。

一、MOV指令MOV指令是80C51汇编语言中最基本、最常用的指令之一,用于将数据从一个寄存器或内存位置复制到另一个寄存器或内存位置。

例如,MOV A, #25H表示将立即数25H复制到A寄存器中。

二、ADD指令ADD指令用于执行两个操作数的相加运算,并将结果存储在目标操作数中。

例如,ADD A, R0表示将A寄存器和R0寄存器中的数据相加,并将结果存储在A寄存器中。

三、SUBB指令SUBB指令用于执行两个操作数的减法运算,并将结果存储在目标操作数中。

与ADD指令不同的是,SUBB指令会考虑进位位的值。

例如,SUBB A, R1表示将A寄存器中的数据减去R1寄存器中的数据,并将结果存储在A寄存器中。

四、MUL指令MUL指令用于执行两个操作数的乘法运算,并将结果存储在累加器A和可选的乘法寄存器B中。

例如,MUL AB表示将累加器A和B 中的数据相乘,并将结果存储在A和B中。

五、DIV指令DIV指令用于执行两个操作数的除法运算,并将结果存储在累加器A和可选的余数寄存器B中。

例如,DIV AB表示将累加器A和B 中的数据相除,并将商存储在A中,余数存储在B中。

六、JC、JNC指令JC指令用于在条件跳转时执行跳转操作,如果进位标志位(C)为1,则执行跳转。

JNC指令则相反,只有当进位标志位为0时才执行跳转。

七、JZ、JNZ指令JZ指令用于在条件跳转时执行跳转操作,如果零标志位(Z)为1,则执行跳转。

JNZ指令则相反,只有当零标志位为0时才执行跳转。

八、CJNE指令CJNE指令用于在条件跳转时执行跳转操作,它比较两个操作数的值,并根据比较结果来确定是否执行跳转。

如果两个操作数相等,则不执行跳转;如果不相等,则执行跳转。

8051单片机常用指令

8051单片机常用指令

8051单⽚机常⽤指令3.2.1数据传送与交换类指令共有28条指令,包括以A,Rn,DPTR,直接地址单元,间接地址单元为⽬的的操作数的指令;访问外部RAM的指令;读程序存储器的指9.堆栈操作3.2 分类指令在介绍各条分类指令之前,将指令中的操作数及注释中的符号说明如下。

Rn:当前指定的⼯作寄存器组中的Ro-R7(其中n=0,1,2,…,7)。

Ri:当前指定的⼯作寄存器组中的RO,R1(其中i=0,1)。

(Ri):Ri间址寻址指定的地址单元。

((Ri)):Ri间址寻址指定地址单元中的内容。

dir:8位直接字节地址(在⽚内RAM和SFR存储空间中)。

#data8:8位⽴即数。

#datal6:16位⽴即数。

addrl6:16位地址值。

addrll:11位地址值。

bit:位地址(在位地址空间中)。

rel:相对偏移量(⼀字节补码数)。

下⾯介绍各条分类指令的主要功能和操作,详细的指令操作说明及机器码形式可见附录。

3.2.1数据传送与交换类指令共有28条指令,包括以A,Rn,DPTR,直接地址单元,间接地址单元为⽬的的操作数的指令;访问外部RAM的指令;读程序存储器的指令;数据交换指令以及准栈操作指令。

9.堆栈操作PUSH dir ;SP⼗1-6P,(dir)⼀(SP)POP dir ;((SP))⼀dir,SP-1--P ,例1 SP=07H,(35H)=55H,指令PUSH 35H执⾏后,55H送⼊08H地址单元,SP=08H。

例2 SP=13H,(13H)= 1FH,指令POP 25H执⾏后,1FH压⼊25H地址单元,SP此时为12H。

综合例把⽚内RAM中50H地址单元中的内容与40H地址单元中的内容互换。

⽅法⼀(直接地址传送法):MOV A ,50H数据传送与交换类指令是各类指令中数量最多、使⽤最频繁的⼀类指令,编程时应能⼗分熟练地灵活运⽤3.2.2算术运算类指令共有24条指令,主要包括加、减、乘、除、增量、减量和⼗进制调整等指令。

8051单片机的指令列表

8051单片机的指令列表
1
1
ADDC A,#data
累加器加立即数和进位标志
2
1
ADDC A,direct
累加器加直接寻址单元和进位标志
2
1
INC A
累加器加1
1
1
INC Rn
寄存器加1
1
1
INC direct
直接寻址单元加1
2
1
INC @Ri
内部RAM单元加1
1
1
INC DPTR
数据指针加1
1
2
DA A
十进制调整
1
1
SUBB A,Rn
ORL C,bit
C逻辑或直接寻址位
2
2
ORL C,/bit
C逻辑或直接寻址位的反
2
2
JC rel
C为1转移
2
2
JNC rel
C为零转移
2
2
JB bit,rel
直接寻址位为1转移
3
2
JNB bit,rel
直接寻址为0转移
3
2
JBC bit,rel
直接寻址位为1转移并清该位
3
2
直接寻址单元或立即数
3
1
XRL A,Rn
累加器异或寄存器
1
1
XRL A,@Ri
累加器异或内部RAM单元
1
1
XRL A,#data
累加器异或立即数
2
1
XRL A,direct
累加器异或直接寻址单元
2
1
XRL direct,A
直接寻址单元异或累加器
2
1
XRL direct,#data
直接寻址单元异或立即数

8051指令集

8051指令集

8051指令集8051指令集序号指令格式功能简述字节数周期一、数据传送类指令1MOV A,Rn寄存器送累加器11 2MOV Rn,A累加器送寄存器11 3MOV A,@Ri内部RAM单元送累加器11 4MOV @Ri,A累加器送内部RAM单元11 5MOV A,#data立即数送累加器21 6MOV A,direct 直接寻址单元送累加器21 7MOV direct,A累加器送直接寻址单元21 8MOV Rn,#data立即数送寄存器21 9MOV direct,#data立即数送直接寻址单元32 10MOV @Ri,#data立即数送内部RAM单元21 11MOV direct,Rn寄存器送直接寻址单元22 12MOV Rn,direct直接寻址单元送寄存器22 13MOV direct,@Ri内部RAM单元送直接寻址单元22 14MOV @Ri,direct直接寻址单元送内部RAM单元22 15MOV direct2,direct1直接寻址单元送直接寻址单元32 16MOV DPTR,#data1616位立即数送数据指针32 17MOVX A,@Ri外部RAM 单元送累加器(8位地址)12 18MOVX @Ri,A累加器送外部RAM单元(8位地址)12 19MOVX A,@DPTR外部RAM单元送累加器(16位地址)12 20MOVX @DPTR,A累加器送外部RAM单元(16位地址)12 21MOVC A,@A+DPTR查表数据送累加器(DPTR为基址)12 22MOVC A,@A+PC查表数据送累加器(PC为基址)12 23XCH A,Rn累加器与寄存器交换11 24XCH A,@Ri累加器与内部RAM单元交换11 25XCHD A,direct累加器与直接寻址单元交换21 26XCHD A,@Ri累加器与内部RAM单元低4位交换11 27SWAP A累加器高4位与低4位交换11 28POP direct栈顶弹出指令直接寻址单元22 29PUSH direct直接寻址单元压入栈顶22二、算术运算类指令32ADD A,Rn累加器加寄存器11 31ADD A,@Ri累加器加内部RAM单元11 32ADD A,direct累加器加直接寻址单元21 33ADD A,#data累加器加立即数21 34ADDC A,Rn累加器加寄存器和进位标志11 35ADDC A,@Ri累加器加内部RAM单元和进位标志11 36ADDC A,#data累加器加立即数和进位标志21 37ADDC A,direct累加器加直接寻址单元和进位标志21 38INC A累加器加111 39INC Rn寄存器加11140INC direct直接寻址单元加121 41INC @Ri内部RAM单元加111 42INC DPTR数据指针加112 43DA A十进制调整11 44SUBB A,Rn累加器减寄存器和进位标志11 45SUBB A,@Ri累加器减内部RAM单元和进位标志11 46SUBB A,#data累加器减立即数和进位标志21 47SUBB A,direct累加器减直接寻址单元和进位标志21 48DEC A累加器减111 49DEC Rn寄存器减111 50DEC @Ri内部RAM单元减111 51DEC direct直接寻址单元减121 52MUL AB累加器乘寄存器B14 53DIV AB累加器除以寄存器B14三、逻辑运算类指令54ANL A,Rn累加器与寄存器11 55ANL A,@Ri累加器与内部RAM单元11 56ANL A,#data累加器与立即数21 57ANL A,direct累加器与直接寻址单元21 58ANL direct,A直接寻址单元与累加器21 59ANL direct,#data直接寻址单元与立即数31 60ORL A,Rn累加器或寄存器11 61ORL A,@Ri累加器或内部RAM单元11 62ORL A,#data累加器或立即数21 63ORL A,direct累加器或直接寻址单元21 64ORL direct,A直接寻址单元或累加器21 65ORL direct,#data直接寻址单元或立即数31 66XRL A,Rn累加器异或寄存器11 67XRL A,@Ri累加器异或内部RAM单元11 68XRL A,#data累加器异或立即数21 69XRL A,direct累加器异或直接寻址单元21 70XRL direct,A直接寻址单元异或累加器21 71XRL direct,#data直接寻址单元异或立即数32 72RL A累加器左循环移位11 73RLC A累加器连进位标志左循环移位11 74RR A累加器右循环移位11 75RRC A累加器连进位标志右循环移位11 76CPL A累加器取反11 77CLR A累加器清零11四、控制转移类指令类78ACCALL addr112KB范围内绝对调用22 79AJMP addr112KB 范围内绝对转移22 80LCALL addr162KB范围内长调用32 81LJMP addr162KB范围内长转移3282SJMP rel相对短转移22 83JMP @A+DPTR相对长转移12 84RET子程序返回12 85RET1中断返回12 86JZ rel累加器为零转移22 87JNZ rel累加器非零转移22 88CJNE A,#data,rel累加器与立即数不等转移32 89CJNE A,direct,rel累加器与直接寻址单元不等转移32 90CJNE Rn,#data,rel寄存器与立即数不等转移32 91CJNE @Ri,#data,rel RAM单元与立即数不等转移32 92DJNZ Rn,rel寄存器减1不为零转移22 93DJNZ direct,rel直接寻址单元减1不为零转移32 94NOP空操作11五、布尔操作类指令95MOV C,bit直接寻址位送C21 96MOV bit,C C送直接寻址位21 97CLR C C清零11 98CLR bit直接寻址位清零21 99CPL C C取反11 100CPL bit直接寻址位取反21 101SETB C C置位11 102SETB bit 直接寻址位置位21 103ANL C,bit C逻辑与直接寻址位22 104ANL C,/bit C逻辑与直接寻址位的反22 105ORL C,bit C逻辑或直接寻址位22 106ORL C,/bit C逻辑或直接寻址位的反22 107JC rel C为1转移22 108JNC rel C为零转移22 109JB bit,rel直接寻址位为1转移32 110JNB bit,rel直接寻址为0转移32 111JBC bit,rel直接寻址位为1转移并清该位32。

8051单片机汇编指令集

8051单片机汇编指令集

将直接地址的内容加1 将间接地址的内容加1 数据指针寄存器值加1
当DPTR的低字节(DPL)从FFH溢出至00H时,会使高字节(DPH)加1,不影响任何标志位 将累加器的值减1 将寄存器的值减1 将直接地址的内容减1 将间接地址的内容减1 将累加器的值与B寄存器的值相乘,乘积的低位字节存回累加器,高位字节 存回B寄存器
指令 算数运算指令 1.ADD A,Rn 2.ADD A,direct 3.ADD A,@Ri 4.ADD A,#data 5.ADDC A,Rn 6.ADDC A,direct 7.ADDC A,@Ri 8.ADDC A,#data 9.SUBB A,Rn 10.SUBB A,direct 11.SUBB A,@Ri 12.SUBB A,0data 13.INC A 14.INC Rn
2 2 3 2 1 2 1 2 2 2 3 2 2 2 1 2 2 2 2 2 3 2 3 2
107.CJNE @Rn,#data,rel 3 2 108.CJNE @Ri,#data,rel 3 2 109.DJNZ Rn,rel 110.DJNZ direct,rel 111.NOP 2 2 3 2 1 1
A) 7-4←(A)7-4+6 将累加器的值与寄存器的值做AND的逻辑判断,结果存回累加器 将累加器的值与直接地址的内容做AND的逻辑判断,结果存回累加器 将累加器的值与间接地址的内容做AND的逻辑判断,结果存回累加器 将累加器的值与常数做AND的逻辑判断,结果存回累加器 将直接地址的内容与累加器的值做AND的逻辑判断,结果存回该直接地址 将直接地址的内容与常数值做AND的逻辑判断,结果存回该直接地址 将累加器的值与寄存器的值做OR的逻辑判断,结果存回累加器 将累加器的值与直接地址的内容做OR的逻辑判断,结果存回累加器 将累加器的值与间接地址的内容做OR的逻辑判断,结果存回累加器 将累加器的值与常数做OR的逻辑判断,结果存回累加器 将直接地址的内容与累加器的值做OR的逻辑判断,结果存回该直接地址 将直接地址的内容与常数值做OR的逻辑判断,结果存回该直接地址 将累加器的值与寄存器的值做XOR的逻辑判断,结果存回累加器

8051单片机汇编指令速查表详解

8051单片机汇编指令速查表详解

8051系列单片机汇编语言指令速查表说明:1)Ri, Rn指当前工作寄存器,i,n = 0 – 7,当前工作寄存器由程序状态字寄存器PSW的2个位RS1, RS0决定MCS-51使用汇编语言指令,它共有44个操作码助记符,33种功能,其操作数有#data、direct、Rn、@Ri等。

这里介绍指令助记符及其相关符号的记忆方法。

一、助记符号的记忆方法1、表格列举法把44个指令助记符按功能分为五类,每类列表记忆。

此处从略,请读者自己总结。

2、英文还原法单片机的操作码助记符是该指令功能的英文缩写,将缩写还原成英语原文,再对照汉语有助于理解其助记符含义,从而加强记忆。

例如:增量INC-Incremect 减量DNC-Decrement 短转移SJMP-Short jump长转移LJMP-Long jump 比较转移CJNE-Compare jump not equality绝对转移AJMP-Absolute jump 空操作NOP-No operation交换XCH-Exchange 加法ADD-Addition乘法MUL-Multiplication 除法DIV-Division左环移RL-Rotate left 进位左环移RLC-Rotate left carry右环移RR-Rotate right 进位右环移RRC-Rotate right carry3、功能模块记忆法单片机的44个指令助记符,按所属指令功能可分为五大类,每类又可以按功能相似原则为2~3组。

这样,化整为零,各个击破,实现快速记忆。

1)数据传送组。

2)加减运算组MOV 内部数据传送ADD 加法MOVC 程序存储器传送ADDC 带进位加法MOVX 外部数据传送SUBB 带进位减法3)逻辑运算组。

4)子程序调用组。

ANL 逻辑与LCALL 长调用ORL 逻辑或ALALL 绝对调用XRL 逻辑异或RET 子程序返回二、指令的记忆方法1、指令操作数的有关符号MCS-51的寻址方式共有七种:立即数寻址、直接寻址、寄存器寻址、寄存器间址、变址寻址、相对寻址、位寻址。

单片机记忆

单片机记忆

大家都知道,汇编语言指令由操作码、操作数两部分组成。

MCS-51使用汇编语言指令,它共有44个操作码助记符,33种功能,其操作数有#data、direct、Rn、@Ri等。

这里先介绍指令助记符及其相关符号的记忆方法。

一、助记符号的记忆方法1 表格列举法把44个指令助记符按功能分为五类,每类列表记忆。

此处从略,请读者自己总结。

2 英文还原法单片机的操作码助记符是该指令功能的英文缩写,将缩写还原成英语原文,再对照汉语有助于理解其助记符含义,从而加强记忆。

例如:增量INC-Incremect减量DNC-Decrement短转移SJMP-Short jump 长转移LJMP-Long jump比较转移CJNE-Compare jump not equality绝对转移AJMP-Absolute jump空操作NOP-No operation交换XCH-Exchange加法ADD-Addition乘法MUL-Multiplication除法DIV-Division左环移RL-Rotate left进位左环移RLC-Rotateleft carry右环移RR-Rotate right进位右环移RRC-Rotateright carry3 功能模块记忆法单片机的44个指令助记符,按所属指令功能可分为五大类,每类又可以按功能相似原则为2~3组。

这样,化整为零,各个击破,实现快速记忆。

1)数据传送组。

2)加减运算组MOV 内部数据传送ADD 加法MOVC 程序存储器传送ADDC 带进位加法MOVX 外部数据传送SUBB 带进位减法3)逻辑运算组。

4)子程序调用组。

ANL 逻辑与LCALL 长调用ORL 逻辑或ALALL 绝对调用XRL 逻辑异或RET 子程序返回二、指令的记忆方法1 指令操作数的有关符号MCS-51的寻址方式共有六种:立即数寻址、直接寻址、寄存器寻址、寄存器间址、变址寻址、相对寻址。

我们必须掌握其表示的方法。

8051简介

8051简介
80518051通道0驱动器通道2驱动器ram地址ram通道0锁romepromb寄存器程序地址寄存器缓冲器pc递增器程序计数器pc数据指针dptrccgnd17堆栈指针spacctmppsw通道3锁存器通道1锁存器通道1驱动器通道3驱动器tmpscontmodpcontcontl0th1th0tl1iesbuftxrxip中断串行口和定时器逻辑振荡器37rstalepsenxtalalu5v控制逻辑cpu即中央处理器是单片机的核心部件它完成各种运算和控制操作cpu由运算器和控制器两部分组成
8051单片机基本结构
8051单片机的特点
8051单片机可分为无ROM型和ROM型两种 无ROM型的芯片,为8031) ROM型芯片又分为EPROM型(典型芯片为 8751)、FLASH型(典型芯片为89C51)、 掩膜ROM型(典型芯片为8051 )、一次性 可编程ROM(One Time Programming,简 称OTP)的芯片(典型芯片为97C51)。
(2)控制器
控制器包括程序计数器PC、指令寄存器、指令译码器、数据 指针DPTR、堆栈指针SP、缓冲器以及定时与控制电路等。控 制电路完成指挥控制工作,协调单片机各部分正常工作。 程序计数器PC:当一条指令按PC所指向的地址从程序存储器中 取出之后,PC的值会自动增量,即指向下一条指令。 堆栈指针SP:用来指示堆栈的起始地址。80C51单片机的堆栈 位于片内RAM中,而且属于“上长型”堆栈,复位后SP被初 始化为07H,使得堆栈实际上由08H单元开始。 指令译码器:当指令送入指令译码器后,由译码器对该指令进 行译码,CPU根据译码器输出的电平信号使定时控制电路产 生执行该指令所需要的各种控制信号。 数据指针寄存器DRTR:它是一个16位寄存器,由高位字节DPH 和低位字节DPL组成,用来存放16位数据存储器的地址,以 便对片外64kB的数据RAM区进行读写操作。

51单片机汇编指令集(附记忆方法)

51单片机汇编指令集(附记忆方法)

51单片机汇编指令集一、数据传送类指令(7种助记符)MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;MOVC(Move Code)读取程序存储器数据表格的数据传送;MOVX (Move External RAM) 对外部RAM的数据传送;XCH (Exchange) 字节交换;XCHD (Exchange low-order Digit) 低半字节交换;PUSH (Push onto Stack) 入栈;POP (Pop from Stack) 出栈;二、算术运算类指令(8种助记符)ADD(Addition) 加法;ADDC(Add with Carry) 带进位加法;SUBB(Subtract with Borrow) 带借位减法;DA(Decimal Adjust) 十进制调整;INC(Increment) 加1;DEC(Decrement) 减1;MUL(Multiplication、Multiply) 乘法;DIV(Division、Divide) 除法;三、逻辑运算类指令(10种助记符)ANL(AND Logic) 逻辑与;ORL(OR Logic) 逻辑或;XRL(Exclusive-OR Logic) 逻辑异或;CLR(Clear) 清零;CPL(Complement) 取反;RL(Rotate left) 循环左移;RLC(Rotate Left throught the Carry flag) 带进位循环左移;RR(Rotate Right) 循环右移;RRC (Rotate Right throught the Carry flag) 带进位循环右移;SWAP (Swap) 低4位与高4位交换;四、控制转移类指令(17种助记符)ACALL(Absolute subroutine Call)子程序绝对调用;LCALL(Long subroutine Call)子程序长调用;RET(Return from subroutine)子程序返回;RETI(Return from Interruption)中断返回;SJMP(Short Jump)短转移;AJMP(Absolute Jump)绝对转移;LJMP(Long Jump)长转移;CJNE (Compare Jump if Not Equal)比较不相等则转移;DJNZ (Decrement Jump if Not Zero)减1后不为0则转移;JZ (Jump if Zero)结果为0则转移;JNZ (Jump if Not Zero) 结果不为0则转移;JC (Jump if the Carry flag is set)有进位则转移;JNC (Jump if Not Carry)无进位则转移;JB (Jump if the Bit is set)位为1则转移;JNB (Jump if the Bit is Not set) 位为0则转移;JBC(Jump if the Bit is set and Clear the bit) 位为1则转移,并清除该位;NOP (No Operation) 空操作;五、位操作指令(1种助记符)CLR 位清零;SETB(Set Bit) 位置1。

8051单片机汇编指令速查表分解

8051单片机汇编指令速查表分解

8051系列单片机汇编语言指令速查表说明:1)Ri, Rn指当前工作寄存器,i,n = 0 – 7,当前工作寄存器由程序状态字寄存器PSW的2个位RS1, RS0决定MCS-51使用汇编语言指令,它共有44个操作码助记符,33种功能,其操作数有#data、direct、Rn、@Ri等。

这里介绍指令助记符及其相关符号的记忆方法。

一、助记符号的记忆方法1、表格列举法把44个指令助记符按功能分为五类,每类列表记忆。

此处从略,请读者自己总结。

2、英文还原法单片机的操作码助记符是该指令功能的英文缩写,将缩写还原成英语原文,再对照汉语有助于理解其助记符含义,从而加强记忆。

例如:增量INC-Incremect 减量DNC-Decrement 短转移SJMP-Short jump长转移LJMP-Long jump 比较转移CJNE-Compare jump not equality绝对转移AJMP-Absolute jump 空操作NOP-No operation交换XCH-Exchange 加法ADD-Addition乘法MUL-Multiplication 除法DIV-Division左环移RL-Rotate left 进位左环移RLC-Rotate left carry右环移RR-Rotate right 进位右环移RRC-Rotate right carry3、功能模块记忆法单片机的44个指令助记符,按所属指令功能可分为五大类,每类又可以按功能相似原则为2~3组。

这样,化整为零,各个击破,实现快速记忆。

1)数据传送组。

2)加减运算组MOV 内部数据传送ADD 加法MOVC 程序存储器传送ADDC 带进位加法MOVX 外部数据传送SUBB 带进位减法3)逻辑运算组。

4)子程序调用组。

ANL 逻辑与LCALL 长调用ORL 逻辑或ALALL 绝对调用XRL 逻辑异或RET 子程序返回二、指令的记忆方法1、指令操作数的有关符号MCS-51的寻址方式共有七种:立即数寻址、直接寻址、寄存器寻址、寄存器间址、变址寻址、相对寻址、位寻址。

51单片机汇编指令集(附记忆方法)

51单片机汇编指令集(附记忆方法)

51单片机汇编指令集一、数据传送类指令(7种助记符)MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;MOVC(Move Code)读取程序存储器数据表格的数据传送;MOVX (Move External RAM) 对外部RAM的数据传送;XCH (Exchange) 字节交换;XCHD (Exchange low-order Digit) 低半字节交换;PUSH (Push onto Stack) 入栈;POP (Pop from Stack) 出栈;二、算术运算类指令(8种助记符)ADD(Addition) 加法;ADDC(Add with Carry) 带进位加法;SUBB(Subtract with Borrow) 带借位减法;DA(Decimal Adjust) 十进制调整;INC(Increment) 加1;DEC(Decrement) 减1;MUL(Multiplication、Multiply) 乘法;DIV(Division、Divide) 除法;三、逻辑运算类指令(10种助记符)ANL(AND Logic) 逻辑与;ORL(OR Logic) 逻辑或;XRL(Exclusive-OR Logic) 逻辑异或;CLR(Clear) 清零;CPL(Complement) 取反;RL(Rotate left) 循环左移;RLC(Rotate Left throught the Carry flag) 带进位循环左移;RR(Rotate Right) 循环右移;RRC (Rotate Right throught the Carry flag) 带进位循环右移;SWAP (Swap) 低4位与高4位交换;四、控制转移类指令(17种助记符)ACALL(Absolute subroutine Call)子程序绝对调用;LCALL(Long subroutine Call)子程序长调用;RET(Return from subroutine)子程序返回;RETI(Return from Interruption)中断返回;SJMP(Short Jump)短转移;AJMP(Absolute Jump)绝对转移;LJMP(Long Jump)长转移;CJNE (Compare Jump if Not Equal)比较不相等则转移;DJNZ (Decrement Jump if Not Zero)减1后不为0则转移;JZ (Jump if Zero)结果为0则转移;JNZ (Jump if Not Zero) 结果不为0则转移;JC (Jump if the Carry flag is set)有进位则转移;JNC (Jump if Not Carry)无进位则转移;JB (Jump if the Bit is set)位为1则转移;JNB (Jump if the Bit is Not set) 位为0则转移;JBC(Jump if the Bit is set and Clear the bit) 位为1则转移,并清除该位;NOP (No Operation) 空操作;五、位操作指令(1种助记符)CLR 位清零;SETB(Set Bit) 位置1。

MCS-51指令系统

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)

8051指令系统与编程基础-指令系统部分.

8051指令系统与编程基础-指令系统部分.
结果:(DPTR)=7030H,(SP)=60H。
23
3.3.1 数据传输类指令
7 累加器A与外部数据存储器RAM/IO传送指令
MOVX A,@DPTR ;((DPTR))→A,读外部RAM/IO
MOVX A,@Ri
;((Ri))→A,读外部RAM/IO
MOVX @DPTR,A ;(A)→((DPTR)),写外部RAM/IO
28
3.3.2 算术运算类指令
指令系统中,有单字节的加、减、乘、除法指令,算术运 算功能比较强。
算术运算指令都是针对8位二进制无符号数的,如要进行 带符号或多字节二进制数运算,需编写具体的运算程序, 通过执行程序实现。
算术运算的结果将使PSW的进位(Cy)、辅助进位(Ac) 、溢出(OV)3种标志位置1或清0。但增1和减1指令不影 响这些标志。
MOV <目的操作数>,<源操作数> 数据传送类指令是把源操作数传送到目的操作数。指令执行之 后,源操作数不改变,目的操作数修改为源操作数。所以数据 传送类操作属“复制”性质,而不是“搬家”。
15
3.3.1 数据传输类指令
1 以累加器为目的操作数的指令
把源操作V
越大,指令系统就越复杂。
寻址方式所要解决的主要问题就是如何在整个存 储器和寄存器的寻址空间内快速地找到指定的地址单 元。共7种寻址方式,重点是前5种。
6
3.2 指令系统的寻址方式
1 寄存器寻址方式
指令中的操作数为某一寄存器的内容。
例如:MOV A,Rn
;(Rn)→A,n =0~7
把Rn中的源操作数送入到累加器A中。由于指令指定了从寄存
器Rn中取得源操作数,所以称为寄存器寻址方式。

单片机汇编指令

单片机汇编指令

特点:指令给出的寄存器中存放的是操作数地址。寄存器间接 寻址是一种二次寻找操作数地址的寻址方式,寄存器前边必须 加前缀符号“@”。不能用于寻址特殊功能寄存器SFR。
寻址范围:内部RAM低128B(只能使用R0或R1作间址寄存器)、 外部RAM(只能使用DPTR作间址寄存器)。对于外部低256单 元RAM的访问,除可以使用DPTR外,还可以使用R0或R1作间 址寄存器。
MOVC A, @A+PC MOVC A, @A+DPTR JMP @A+DPTR ;(A)←(A)+(PC)+1 ;(A)←(A)+(DPTR) ;(PC)←(A)+(DPTR)
2.6 相对寻址
定义:将程序计数器PC的当前值(取出本条指令后的PC值)与 指令第二个字节给出的偏移量(rel)相加,形成新的转移目标 地址。称为相对寻址方式。 特点:相对寻址方式是为实现程序的相对转移而设计的,为相 对转移指令所使用,其指令码中含有相对地址偏移量,能生成 浮动代码。 如:
2.1 立即寻址
定义:将立即参与操作的数据直接写在指令中,这种寻址方式 称为立即寻址。 特点:指令中直接含有所需的操作数。该操作数可以是8位的, 也可以是16位的,常常处在指令的第二字节和第三字节的位置 上。立即数通常使用#data或#data16表示,在立即数前面加 “#”标志,用以和直接寻址中的直接地址(direc或bit)相区别。
2.5 变址寻址
定义:操作数存放在变址寄存器(累加器A)和基址寄存器 (DPTR或PC)相加形成的16位地址单元中。这种寻址方式称为 基址加变址寄存器间接寻址,简称为变址寻址。
特点:指令操作码中隐含作为基址寄存器用的DPTR(或PC ) 和作为变址用的累加器A。在执行变址寻址指令时,MCS-51单 片机先把基地址( DPTR或PC 的内容)和地址偏移量(A的内 容)相加,以形成操作数地址,再由操作数地址找到操作数, 并完成相应的操作。变址寻址方式是单字节指令。 寻址范围:只能对程序存储器ROM进行寻址,主要用于查表性 质的访问。 注意:累加器A中存放的操作数地址相对基地址的偏移量的范 围为00H~FFH(无符号数)。MCS-51单片机共有以下三条变 址寻址指令:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3-3 数据传送类指令
数据传送操作是指把数据从源地址传送到目的地址, 源地址内容不变。共29条指令,使用8种助记符: 片内数据存储器传送指令MOV;
片外数据存储器传送指令MOVX;
程序存储器传送指令MOVC; 累加器交换指令 XCH、XCHD、SWAP; 堆栈操作指令 PUSH、 POP; 3-5
3-3-4 累加器交换指令
1) 字节交换指令XCH(3 条)
助记符格式
XCH A, Rn
机器码
11001rrrB
相应操作
A Rn
指令说明 机器周期
n=0~7 1 1
XCH A, direct 11000101B A (direct) direct
XCH A, @Ri
1100011iB data
MOV R2,#20h ;设臵传送次数 MOV DPTR,#TAB ;设臵数据源起始地址 MOV R0,#30H ;设臵目标起始地址 LOOP: MOV A, #00h ;设臵变址值 MOVC A, @A+DPTR ;读外部数据存储器 MOV @R0, A ;将数据传送到内部RAM INC R0 ;目标地址+1 INC DPTR ;源地址+1 DJNZ R2,LOOP ;传送个数判断
五)汇编语言的伪指令
伪指令不是真正的指令,它无对应的机器码,在汇编时不 产生目标程序,只是用来对汇编过程进行某种控制。 (p178)
1)ORG nnnnh ;设臵起始地址 例如: ORG 0030h mov a,#00h …… 2)END 汇编结束伪指令 3)EQU (data、bit)等值伪指令 例如:SDA EQU P1.0 ; sda bit P1.0 addr1 EQU 1000h ; addr1 data 1000h D5 EQU 5fh ; D5 data 5fh
3-2-4 寄存器间接寻址
寄存器间接寻址的1个操作数的地址存放在寄存器r0、r1 或dptr中。多为单字节指令。 例如: D0 equ 30h mov r0, #D0 ;将#30h送到r0 mov A ,@r0 ;将30h单元的内容送到A inc r0 ;r0=r0+1 mov A ,@r0 ;将31h单元的内容送到A add A ,@r0 ;将(31h)+A A movx A ,@dptr ;将dptr指定的外部存储单元的 ;内容送到A
MOV direct ,@Ri MOV direct1,
direct2 MOV direct, #data
1000011i (direct) ←(Ri) 85h direct1 (Direct1) ← (Direct2) direct2
75h direct data (Direct) ← #data
二) 指令格式
操作码 例如:ADD 目的操作数,源操作数 A, #6FH ;
三) 汇编语言语句的格式
在8051单片机汇编语言设计中,不区分大小写字母
标号:操作码 操作数1,操作数2 ,操作数3;注释 例如: LP1: MOVE R3, #00H ;给寄存器R3臵0 MOV DPTR, #LP1 ;将LP1在存储器的 ; 位臵付给DPTR cjne a, #20h, LP1
3-2-3 寄存器寻址
寄存器寻址是指R0~R7、A、B、dptr或CY的间操作。 寻址寄存器的地址隐含在操作码中,其中R0~R7由操作码 的低3位指定。多为单字节指令。 例如: mov r0, a ;将的内容送到r0 add a, r0 ;将累加器A 的内容+r0->A inc r0 ;r0的内容+1 inc dptr ;dptr的内容+1 clr c ;进位标志c清零
3. MCS-51单片机的指令系统
3-1 8051汇编语言概述
一 ) 指令分类
42个助记符,33种功能,共111条指令。 a. 按占用存储单元数量来分: 单字节指令(49)、双字节指令(45)、三字节指令(17); b. 按执行时间分: 单周期指令(64)、双周期指令(45)、4周期指令(2: 乘、 除) c. 按指令用途分: 伪指令(6)、数据传送类指令(28)、逻辑操作类指令(25)、 算术运算类指令(24)、位操作类指令(17)、控制转移类指 令(17) 。
3-2-5 变址寻址
变址寻址是以PC或DPTR为基地址,以累加器A为变 址寄存器的间接寻址方式,其操作数存放在(PC+A)或 (DPTR+A)指定的程序存储单元中。常用于查表。 例如:mov dptr, #tab mov a, #00h movc a, @a+dptr ;执行后A = #11h mov a, #01h movc a, @a+dptr ;执行后A = #22h tab: db 11h,22h,33h,44h,55h,66h,77h,88h
3-3-1 片内数据存储器传送指令MOV
片内数据存储器传送指令MOV 共17 条,指令基本格式: MOV <目的操作数>, <源操作数> 1)以累加器 A 为目的地址的传送指令(4 条)
助记符格式 MOV A, Rn MOV A, direct MOV A, @Ri MOV A, #data 机器码 11101rrrB 相应操作 A←Rn 指令说明 n=0~7, rrr=000~111 i=0,1 机器周期 1 1 1
i=0,1
2 2
2
4) 以间接地址为目的地址的传送指令(3 条)
助记符格式 机器码 相应操作 指令说明 机器周期
MOV @Ri, A
MOV @Ri, direct MOV @Ri, #data
1111011iB
1010011iB direct 0111011iB data
(Rn) ← A
(Rn) ←(direct) (Rn) ←#data
3-2 8051的寻址方式
3-2-1 立即寻址
立即寻址的操作数为常数,包含在指令字节中。即操作 数为存放在程序存储空间的常数,一般为双字节或3字节指令。 例如: D0 equ 30h mov a, #30h ;将常数48 (#30h) 送到累加器A mov r0, #D0 ;将常数48 (#30h) 送到r0 mov dptr, #1234h ;将#1234h送到dptr mov DPTR, #tab1 ;将tab1标号的地址送到 dptr寄存器中 …… tab1: db 10h,11h,55h,0f8h,0ach
movc a, @a+pc Ljmp @a+dptr
3-2-5 相对寻址
相对寻址是以PC基地址,+指令给定的相对偏移量 (+127~ -128),作为程序跳转的新地址付给PC。在编程 时,偏移量常通过标号让编译软件自动计算。 例如:mov dptr, #tab jz LP1 …… LP1: mov a, #00h …… jc LP1 …… sjmp LP1
A (Ri)
i=0,1
1
注意:以上指令结果影响程序状态字寄存器 PSW 的 P 标志。
2) 半字节交换指令XCHD(1 条)
助记符格式 机器码 相应操作
A 3~0(Ri) 3~0
指令说明
高位不变
机器周期
1
XCH A, @Ri 1101011iB
注意:上指令结果影响程序状态字寄存器 PSW 的 P 标志。 3) 高低字节交换指令SWP(1 条)
四) 常用符号
A : 累加器(ACC) @: 间接寻址的前缀。如: @R0,@A+PC,@A+DPTR #: 立即数(常数) 如: #10 #0feh #0fadeh #00101011B Direct: 储单元的地址,数字前没有#, (00h~0ffh) B: 寄存器B, 乘,除指令中使用 bit: 可用于位操作的位的地址 C: 进位标志, 在位运算时做位累加器. addr11: 11位目标地址,用于2k范围跳转(ACALL AJMP) addr16: 16位目标地址,用于64kB长跳转或查表 DPTR: 16位数据指针寄存器(DPH DPL) PC: 16位程序计数器,用于存放下一条执行程序的地址 Ri: 可用于间接寻址的地址寄存器 R0或R1 Rn的伪指令
4) DB nn1,nn2 … ;单字节项或项表 例如:tab1: DB 07h,10,’A’,0f5h 5)DW nnnn1,nnnn2 … ;双字节项或项表 例如:tab2: DW 07h,1230h 则在tab2起始程序存储器单元的内容为: 07h 00h 30h 12h 6)DS nn ; 预留程序存储区 例如:ORG 1200h DS 10 则在1200h地址开始,保留10个单元的存储区
E5h direct A←(direct) 1110011i 74h data A←(Ri) A←#data
注意:以上传送指令的结果均影响程序状态字寄存器 PSW 的 P 和 Z 标志。
2) 以 Rn 为目的地址的传送指令(3 条)
助记符格式
MOV Rn, A MOV Rn, direct
机器码
11111rrrB
助记符格式 SWAP A 机器码 11000100B 相应操作 A 3~0A 7~4 指令说明 机器周期 1
注意:上指令结果影响程序状态字寄存器 PSW 的 P 标志。
3-3-5 堆栈操作指令PUSH POP
助记符格式 PUSH direct 机器码 0C0H direct 相应操作 机器周期 2
3-2-2 直接寻址
直接寻址的操作数为RAM单元的地址。一般为双字节 或3字节指令。 例如: D0 equ 30h mov a, 30h ;将30h单元的内容送到累加器A mov r0, D0 ;将30h单元的内容送到r0 mov 31h,30h ;将30h单元的内容送到31h add a, 30h ; (30h) +A -> A 注意:直接寻址不能用于高128B的通用RAM单元 例如: mov a, 80h 相当于 mov a, p0 ;将P0口的状态送到累加器A
相关文档
最新文档