




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章指令系统及程序设计
(P.43)
系列单片机指令集含有HI条指令
G每条指令在程序存储器ROM中占据一定的空间,
以字节为单位。按指令场占为芳裁分类:
单字节(49条);双字节(46条);3字节(16条)
0每条指令在执行时要花去一定的时间,以机器
周期为单位。按指令期行时间分类:
单周期(64条);双周期(45条);4周期(2条)
G按指令的功能分类,可分为5大类:
数据传送类(29条);算术运算类(24条)
逻辑运算及移位类控制转移类」:
侬-51指令的格式(P.44)
[标号:]操作码[目的操作数]L源操作数][;注释
方括符[]表示可选项
标号代表指令所在地址,1-8个字母/数字,
结尾
操作码就是指令功能助记符,指令实体
目的操作数
,源操作数
。注释,以;”开头
《单片机原理与应用技术》教学课件
寄存器寻址——(P.45)
从寄存器中读取操作数或存放操作数进寄存器
例:MOVA,B
MOV30H,RO
MOVA,RI
《单片机原理与应用技术》教学源
立即寻址——(P.45)
G寄存器间接寻址—(P.46)
寄存器中的内容是一个地址,由该地址单元
寻址到所需的操作数
[MOVRI,#30H;(R1)-立即数30H]
MOVQR1,#0FH;
MOVA,QR1;
注意:
1)“间接”表示某寄存器中的“内容”只是一个
“单元地址”,这个地址单元中存放的才
是要找的“操作数”。
2、;符号表示“在…”,其含义与读音皆同
t”。
《单片机原理与应用技术》教学课件
口直接寻址P.46
指令中直接给出了操作数所在单元的地址或名称
MOVRI,1FH;
MOV30H,4AH;
在本单片机中规定:访问特殊功能寄存器SFR
只能采用直接寻址方式。例如:
MOVA,SP(A)SP相同
81H(A)SP
相同
30HB(30H
的地址见P.33表
里片机原理」
在本单片机中访问特殊功能寄存器SFR只能采用直
接寻址方式的原因:SFR分布在80H〜0FFH范围内,
而52系列单片机有256字节的片内RAM,其中的
80H〜OFFH的RAM与SFR所占o
于是规定:80H〜0FFH范围内的只能用
方式,而SFR只能用直接寻址方式。从而
解决了地址冲突的问题。例如:
OVA,90H等效于MOVA,Pl属直接寻址
WA,@R0;[事先已知(RO)=#90H]
a执行的操作:A-(90H)属寄存器间接寻址,
★随意写的指令如:则是非法的!
《单片机原理与应用技术》教学课件
存储器配置(片内RAM
・89c51片内RAM128字节(OOH7FH)
・89c52片内RAM256字节(OOHOFFH)
SFR分布在
80H-FFH
其中92个位
可位寻址
80HI-----------——I
只能直接寻址
,,变址寻址P.47
也称为:基址寄存器+变址寄存器间接寻址
以16位的地址指针寄存器DPTR或16位的PC寄存器为
基址寄存器,以累加器A为变址寄存器,两者中的
内容”形成一个16位的“地址”,该“地址”所
指的存储单元中的内容才是操作数。
[设:AB已存有#A4H,DPTR中已存有#1234H]
MOVCA,@A+DPTR;
操作:将A4H+1234H=12D8H单元中的数放进累加器A
相对寻址—(P.47)
当前PC值加上指令中规定的偏移量rel,构成实际
的操作数地址
F例:SJMPrel
操作:跳转到的目的地址=当前16位PC值+rel
1)“当前PC值”指程序中下一条指令所在的首地址,
是一个16位数;
rel”表示“偏移量”,是一个带符号的单
二位寻址——(P.48)
指令中直接给出了操作数所在的位地址。
例:CLRPl.0;(PL0)0
SETBACC.7;1
CPLC;(C)一NOT(C)
汪息:
1)位地址里的数据只可能是一个0或1
2)有的位地址十分明确,如P1.0,ACC.7等,
有的位地址则“不太明确”,如:
[[MOVA,17H;(A)-(17H).17H是字节地址]
MOVACC.0,17H;(ACC.0)-(),这里ACC.0
谆..所以该指令中的是22H单元的第7位
《单片机原理与应用技术》教学课件
•片内RAM中有128个位
可按位寻址的位,位
地址:OOH—7FH分布
在:20H—2FH单元;
•另外,在SFR中还有92
个位可按位寻址
总共
128
52子系列才有个可
的RAM区按位
寻址
的位
位寻址区
位寻址P.48
指令中直接给出了操作数所在的位地址。
CLRP1.0L.0)
SETBACC.7;(ACC.7,
CPLC;NOT(
注意:
1)位地址里的数据只可能是一个0或1
2)有的位地址十分明确,如Pl.IACC.7等,
有的位地址则“不太明确”,如:
[MOVA,17H;(A)-(17H),17H是字节地址]
MOVACC.0,17H;(ACC.0)(),这里ACC.0
所以该指令中的是22H单元的第7位
《单片机原理与应用技术》教学课件
MCS-51指令集
功能分五类,共”1条指令
(五大类功能)
P.49页
数据传送类指令:(29条)
算术运算类指令:(24条)
逻辑运算及移位类指令:(24条)
控制转移类指令:(17条)
立操作(布尔操作)类指令:(17条)
(5种/29条)
49
6条
内部存储器间传送:(MOV—
外部数据存储器与累加器间传送:
4条
(MOVX-
程序存储器向累加器传送:
2条
(MOVC-
5条
数据交换:(XCH,XCHD,SWAP-
2条
堆栈操作:(PUSH,POP-
见P.49的表3-2
半米T1(5种/29条)
内部存储器间传送指令(16条):
2MOV类指令的操作方向总是后面的
操作数指向前面的操作数!
例:MOVA,30H(A)—(30H)
Acc累加器Rn:RO—R7
©Ri:@R0,@R1
Direct直接寻址@Ri间接寻址#data:8位立即数
#datal6:16位立即数
direct:直接地址
Rn寄存器#data立即数
rel:8位带符号偏移量
(续)
MOVX类指令可在累加器与以@DPTR或@Ri所代表的
外部RAM之间进行数据传送。
例如:
MOVXA,©DPTRA-DPTR
MOVX©Ri(A)一((Ri))
©DPTR,ADPTR-A
督MOVX©Ri,((Ri))”(A)
MOVCA,©A+DPTR
MOVCA,©A+PC
通常称为查表指令,寻址方式属:
+器间接寻址
@A+DPTR或@A+PC指向程序存储器中的某单元。拟
传送给累加器ACC的数据就是程序中事先写进去
的表格数据。这些表格数据往往用伪指令DB,DW
甯定义在程序中。
(续)
kA
BSS指令(5条):P.53
XCHA,direct(字节互换)
XCHA,QRi(字节互换)
XCHA,Rn(字节互换)
(A)z=T(direct)[或((Ri)),或(Rn)]
XCHDA,@Ri
累加器Acc的低4位与((Ri))的低4位互换,
各自的高4位不变
SWAPA
累加器Acc的低4位与自身的高4位互换
(续)
栈操作指令(2条):P.54
PUSH——压栈指令
POP——弹栈指令
堆栈区由特殊功能寄存器重茂援力侬管理
堆栈区可以安排在RAM区任意位置,一般不安
排在工作寄存器区和可按位寻址的RAM区,而是放
艮在RAM区的靠后的位置
堆栈总是指向栈顶
通常PUSH与POP两条指令成对使用,
,例如:设(A)=7BH;(35H)=11H
并且知道(SP)=60H
PUSHACC;(61H)—#7BH
PUSH35H;(62H)—(35H)
即:(62H)—#11H
POPACC;(A)—(62H)
即:(A)—#11H
POP5AH;(5AH)—(61H)
即:(5AH)—#7BH
(6种/24条)
P.54
4条
G加法运算:(ADD
4条
H带进位加法运算:(ADDC
4条
G带借位减法运算:(SUBB
9条
P加1/减1操作:(INC,DEC
2条
P单字节乘/除法运算:(MUL,DIV-
1条
P十进制调整:(DAA
A
7
ADD4条
ADDC4条
带进位加法运算:
sB4条
带借位减法运算:UB
所有的加法(ADD)、带进位加法(ADDC)、带借位减
法(SUBB)运算都是以A为一个加数或被减数,最终
结果也存进A。
加法(ADD)、带进位加法(ADDC)以及带借位减法
(SUBB)运算中,如果产生了进位或借位,将自动对
中的Cy标志位置“1”。
进位加法(ADDC):(A)—(A)+(Cy)+(第二操作数)
:(A)―(A)-(Cy)-(第二操作彳
(续)
P.57
I加1/减1操作:INC,DEC9条)
INC,DEC与用力口/减法指令做加1/减1操作不同之
处在于INC、DEC不影响琢志位.
,单字节乘/除运算:(MUL,DIV2条)
两个单字节数的乘/除法运算只在A与B之间进行。
MULAB:(A)与(B)相乘,积为16位数,
(A)一积的图8位;(B)一积的低8位
DIVAB:(A)除以(B),结果用2字节表示,
(A)一商的整数部分;(B)一余数
(二)算术运算类指令(续)
P.60/
二十4制调整:(DAA——1条)
用于两个BCD码之间的相加,这条指令只能跟在
ADD或ADDC之后
BCD码是指
十进制数20可以用二进制数00010100B表示;
也可以用十六进制数14H表示;
还可以用BCD码00100000B或20H表示。
7、〕4个二进制位就可以表示一位BCD码:
pO-1001可表示十进制数(BCD数)0-9;
▲v\\>>k>\\K>L>\UJ—一T
-I—7,/、〜J717I——/一L7
3000-10011001表示00〜99。
指令“DAA”完成的操作:
若(A)3〜o〉9(AC)=1则(A)3~0一(A)3~0+6;
若(A)7~4〉9(CY)=1则(A)7〜47〜4+6;
P.60例5:两个十进制数“65”与“58”相加,根
据常识,显然其和应当为“123”。
6501100101
MOVA,#65H
ADDA,#58H5801011000
DAA
6601100110
23H
1819
23
《单片机原理与反
指令“DAA”完成的操作:
若(A)3〜o〉9(AC)=1则(A)37—(A)3〜。+6;
若(A)7T〉9(CY)二1则(A)7〜4^~(A)7〜4+6;
又如:两个十进制数“39”与“58”相加,根据常
识,显然其和应当为“97”。
3900111001
MOVA,#39H
ADDA,#58H5801011000
DAA•60110
23
0—97
?逻援与(AND,逻辑或(ORL),逻辑异或(XRL):
指令形式ByteTm
ANL(ORL,XRL)directA21
ANL(ORL,XRL)direct,#data32
ANL(ORL,XRL)A#data21
ANL(ORLXRL)Adirect21
ANL(ORL,XRL)A,©Ri11
ANL(ORL,XRL)A,Rn11
G累加器清零/取反操作(CLR,CPL2条)
对累加器清零Byte个Tm
rni对累加器按位取非Byte个Tm
用磕n累加器A中已存有数:9AH)
逻辑与ANL用于也或者住空某些位:
?逻辑或ORL用于置1或者住置某些位:
逻辑异或XRL用于取反或者保留某些位:
则(A)=95H
(A)10011010
#0FH->00001111
95H<-10010101
《单片机原理与应用技术》教学课件
(续)
4条)
(4种/17条)
P.6
此类指令改变程序的执行顺序改变当前PC值
「无条件转移:
(LJMP,AJMP,SJMP,JMP4条)
心条件转移(判断跳转):
(JZ,JNZ,CJNE,DJNZ8条)
•:子程序调用及返回:
(LCALL,ACALL,RET,RETI4条)
以空操作:
NOP1条)
“耗时”一个机器周期。donothing!
(17条)
P.71
位操作类指令以位为单位进行逻辑运算及操作,
可分为4种:
位传送:(MOV——2条)
,位清零/置位:(CLR,SETB——4条)
二位逻辑与/或/非运算:
(ANL,ORL?CPL------6条)
位条件转移:(JC,JNC,JB,JNB,JBC-----5条)
位操作类指令(续)
巴蕊送指令(2条):
MOVC,bit——(C)—(bit)
MOVbit,C——(bit)«-(C)
注:bit表示位地址
r位清零/置位指令《条):
CLRbit(或C)——(bit^C)<-"0"
ISETBbit(或C)----(bit^C)<-"1"
位逻辑与/或/非指令(6条):
C,bit(或/bit)
C,bit(或/bit)
t(或C)
t”表示对bit位先取反然后再参加运算
(续)
件转移指令(5条):
JCre]“1”就跳转;否则不跳转
re'(Cy)#就跳转;否则不跳转
bit,re:
(bit)=“1”就跳转;否则不跳转
bit,rel
(bit)#“1”就跳转;否则不跳转
•:JBCbit,rel
(bit)='T就先将其清零再跳转;
否贝h不动此位也不跳转,
《单片机原理与应用
前面I测控实例
位操作指令
JOB1:CLRPl.0;P1.。清“0P亮红灯
HERE:AJMPHERE;原地等待,不做别的事
J0B2:CPLPl.0”把1・0取反:红灯亮/灭
ACALLDELAY;延时1秒
AJMPJOB2;重复
JOB3:CLRPl.1;PL1清"0”,亮绿灯
REDO:SETBPl.3;<P1.3置"
CHECK:JNBP1.3,CHECK;传感器是否被阻断
LOOP:••…;有入侵者,
AJMPREDO;再跳回去检测
测控实例
跳转指令
红巾
J0B1:CLRPl.0;P1.0清“0”,亮红灯
HERE:AJMPHERE;原地等待,不做别的事
4寻期性地
J0B2:CPLPl.0;对「1・0取反:红灯亮/灭
ACALLDELAY;延时1秒
AJMPJOB2;重复
红外防盗报邈
J0B3:CLRPl.1;Pl.1清"0”,亮绿灯
REDO:SETBPl.3;将P1.3置“1”
CHECK:JNBPl.3,CHECK;检测传感器是否被阻断
LOOP:...............;有入侵者,报警!
__AJMPREDO;再跳回去检测
(5种/29条)
内部存储器间传送:(MOV——16条)
■外部数据存储器RAM与累加器间传送
4条
(MOVX——
程序存储器ROM向累加器传送:
2条
5条
数据交换:(XCH,XCHD,SWAP
2条
堆栈操作:(PUSH,POP
/24条)
4条
r加法运算(ADD
4条
p带进位加法运算(ADDC
4条
n带借位减法运算(SUBB
9条
G加1/减1操作(INC,DEC
2条
?单字节乘/除法运算(MUL,DIV
1条
,十进制调整(DAA
■㈢逻辑运算及移位指令(5种
/24条)
6条
二逻辑与运算:(ANL
6条
二逻辑或运算:(ORL
6条
二逻辑异或运算:(XRL
2条
E累加器清零/取反:(CLRCPL
,4条
G累加器移位操作:(RL,RLC,RR,RRC
(4种/17条)
心无条件转移:
(LJMP,AJMP,SJMP,JMP4条)
己条件转移(判断跳转):
(JZ,JNZ,CJNE,DJNZ8条)
二子程序调用及返回:
(LCALL,ACALL,RET,RETI4条)
G空操作:NOP1条)
《单片机原理与应用技术》教学课件
汇编语言与
简单程序设计
汇编语言程序设计中的数
计算机只能识别二进制数——机器指令,它原本是
不认识常用的十六进制数和十进制数的。
C机器指令/目标代码:
由0/1代码组成的操作码与操作数。
二进制数:由0/1组成、“逢2进的数制。
如:01011110B(0-1后缀:B/b)
六进制数:便于读写记忆的二进制数的简写形式。
(0〜9,A〜F后缀:H/h)
CD码:用二进制数表达的十进制数。
(0〜9表示为:0000〜1001B后缀:B/b,H/h)
汇编语言编程基本规则
不汇编语言:用助记符描述的指令的集合。
2汇编程序:汇编语言编写的程序借助编译工具
编译成为目标代码,计算机才能识别。这个编译工具
称为汇编程序。
■]操作码[
指令中以A—F开头的十六进制数前必须添一个
飞一;进制数必须带后缀或,■”;进制数必
须带后缀州”或“h”;十进制数的后缀是或
“心或无--------------------------------
《单片机原理与应用技术》教学课件
汇编程序的伪指令
汇编程序—软件一工具—工具软件:
将程序员用汇编语言编写的程序翻译成机器码
用汇编语言编写的程序在此被称为应用程序
(真)指令:告诉计算机如何操作以及做何种操作
伪指令:告诉汇编程序在翻译应用程序时有何具
体约定。伪指令不进行具体的操作,那是真指令
的事。
比如:从何处开始,何处结束,某些编程者自己
规定的表述代表什么意思……
汇编程序的常用伪指令
ORGaddrl6
规定编译后的机器代码存放的起始位置。
1END
表示翻译到此结束,其后的任何内容不予理睬。
“当前PC值”也叫位置计数器
代表正在执行的指令所在位置。
?符号名称EQU表达式
’将表达式的值赋予符号名称。程序中凡出现该符
号名称就等同于该表达式。
号名称BIT位地址
将位地址的值赋予符号名称。程序中凡出现该
符号名称就代表该位地址。
DB8位数据[或8位数据组]
将8位数据[或8位数据组]顺序存放在此后的存
储单元中O占相应数量的存储空间。
GDW双字节数据[或双字节数据组]
将双字节数据[或双字节数据组]顺序存放在此
后的存储单元中。占据相应存储空间。
ANLA,#OFH;取出个位
ADDA,R3
MOVR2,A;结果一R2
RET;若不是子程序可用功赍
程序的顺序/分支/循环三种基本结
例P.82—2:将R5R4中的双字节BCD码数转为二进
制数存于R5R4中。
编程要点:
两字节BCD码数范围为:0000H—9999H
相应2进制/16座制数%:OOOOH—270FH
调用BCD2B子程序实现“千位,百位”转为二进
制,
并乘100;
♦再调BCD2B子程序实现“十位,个位”转为二进
制;
最后,对位相加。
程序的顺序/分支/循环三种基本结
列P.82—2:(R5)千百十个(R4)
将R5R4中的两
调BCD2B
字节BCD码数转
为二进制数存(A)调BCD2B
于R5R4中X100
(R5)I(R6)I(A)
二进制二进制+二进制
+
二进制二进制
(R5)(R4)
程序的手/分支/循环三种基本结
构
P.83例3:ORG2000H
VAREQU30H;定义缓存单元
FUNCEQU31H;书中缺此二句
1(X>0)
BRI:MOVA,VAR;取出变量“X”
0(x=o)
Y二々JZCOMP;若=0,就赋0
-1(X<0)
JNBACC.7,POS1;判断=正?
MOVA,#0FFH(-1=+1取反加1)
输
出I
SJMPCOMP-
输
出+l
P0S1:MOVA,#01H
给
赋a
函Y
COMP:MOVFUNC,A
HERE:AJMPHERE
END
《单片机原理与应用技术》教学课件
/.季一分好飞支/循环三种基本结
I
JORG0000H控制一盏灯点亮
,AJMPMAIN红灯周期性亮/灭
ORG0003H红外防盗报警
RLA
CLRPl.0;亮红灯
ACALLDELAY
HEREAJMPHERE
RETI
MAIN:MOVA,#80HJCPLPl.0;亮/灭
SETBEXOACALLDELAY;延时1秒
J0B2;重4
一SETBEAAJMP
'WAIT:JBACC.0,JOB1
CLRPl.1;亮绿灯
JBACC.1,JOB2SETBP1.3
JBACC.2,JOB3CHECK:JNBP1.3,CHECK
AJMPWAITLOOP:........;报警!
AJMPREDO;再检测।
《单片机原理与应F
程序疗/分支/循环三种基本结
85—86:软件循环延时lOOmS(晶振12MHz)
☆ITm=luSlOOmS=100000uS
☆MOVRn#data和NOP是单机器周期指令
☆DJNZRn,rel是双机器周期指令
☆200=0C8H;248=0F8H
ORG1000H
DELAY:MOVR6,#200
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 演出经纪人资格证复习最强策略及试题及答案
- 物理会考易考题及答案
- 吉林省长春市绿园区2024年毕业升学考试模拟卷数学卷含解析
- 《爱自己本来的样子》读后感
- 西藏英语口试题库及答案
- 设备法律法规试题及答案
- 焦作新材料职业学院《环境科学前沿》2023-2024学年第二学期期末试卷
- 石家庄财经职业学院《电电子基础训练》2023-2024学年第二学期期末试卷
- 新疆警察学院《土木工程施工与实务》2023-2024学年第二学期期末试卷
- 青海省西宁市2024-2025学年高三考试历史试题分类汇编含解析
- 民办幼儿园会计制度范本
- 2024消防安全基础知识培训课件
- 水库清淤可行性方案
- 叉车培训课件模板
- 心脏康复评估量表-完整版
- 养老机构重大事故隐患判定标准与安全管理提升
- 30道中国石油化工化学工程师岗位常见面试问题含HR常问问题考察点及参考回答
- 医疗机构临床基因扩增检验实验室管理办法
- 机械加工工艺过程卡片+工序卡
- 2023新能源光伏电站升压站电气设备安装施工方案
- 新老物业交接清单三篇
评论
0/150
提交评论