MCS-51指令系统
目录
数据传送指令
一: 内部数据传送指令
1,立即寻址型传送指令
2,直接寻址型传送指令
3,寄存器寻址传送指令
4,寄存器间接寻址传送指令
二:外部数据传送指令
三: 堆栈操作指令
四:数据交换指令
五:程序存储器数据传送指令
算术运算指令
一:加法指令
1,不带Cy(Carry进位标志)的加法指令
2,带Cy(Carry进位标志)的加法指令, Cy用于保存低字节向高字节的进位
3,加1指令
4,十进制调整指令
二:减法指令
1,减法指令
2,减1指令
三:乘法指令和除法指令
1,单字节乘法指令
2,单字节除法指令
逻辑运算和移位运算指令
一:逻辑与指令,又叫逻辑乘指令
二:逻辑或指令,又叫逻辑加指令
三:逻辑异或指令,又叫半加指令
四:累加器清零与取反指令
五:移位指令
位操作指令
一:位传送指令
二:位置位/复位指令
三:位运算指令
控制转移指令
一:无条件转移指令
二:子程序调用与返回指令
1,调用指令,LCALL指令为长调用指令,ACALL绝对调用指令
2,子程序返回指令
三:条件转移指令
1,转移指令包括:A是否为零,2个字节数据是否相等,一个操作数减1后是否为零和一个bit的状态等
2,比较条件转移指令
3,减1条件转移指令
四:位控制转移指令
1,以Cy中内容为条件的转移指令
2,以位地址中的内容为条件的转移指令
五:空操作指令
数据传送指令
一: 内部数据传送指令
内部数据传送指令的源操作数和目的操作数都在单片机内部, 一般格式如下:
MOV 目的操作数, 源操作数 ;目的操作数<-源操作数,源操作数不变(相当于COPY)
1,立即寻址型传送指令
(1)MOV A,#data ;(A)<-data
(2)MOV Rn,#data ;(Rn)<-data
(3)MOV @Ri,#data ;((Ri))<-data
(4)MOV direct,#data ;(direct)<-data
2,直接寻址型传送指令
(1)MOV A,direct ;(A)<-(direct)
(2)MOV direct,A ;(direct)<-(A)
(3)MOV Rn,direct ;(Rn)<-(direct)
(4)MOV @Ri,direct ;((Ri))<-(direct)
(5)MOV direct2,direct1 ;(direct2)<-(direct1)
3,寄存器寻址传送指令
(1)MOV A,Rn ;(A)<-(Rn)
(2)MOV Rn,A ;(Rn)<-(A)
(3)MOV direct,Rn ;(direct)<-(Rn)
4,寄存器间接寻址传送指令
(1)MOV A,@Ri ;(A)<-((Ri))
(2)MOV @Ri,A ;((Ri))<-((A))
(3)MOV direct,@Ri ;(direct)<-((Ri))
二:外部数据传送指令
外部数据传送指令用于CPU存取外部数据存储器中的数据,数据传送及相关指令共6条,如下:
(1)MOV DPTR,#data16 ;(DPTR)<-data16, DPTR中一般是外部数据存储器单元的地址,16位传送指令
(2)INC DPTR ;(DPTR)<-(DPTR) + 1, 16位加法指令
(3)MOVX A,@DPTR ;(A)<-((DPTR)),将DPTR指定的外部数据存储单元中数据存入A
(4)MOVX @DPTR,A ;((DPTR))<-(A)
(5)MOVX A,@Ri ;(A)<-((Ri))
(6)MOVX @Ri,A ;((Ri))<-(A)
三: 堆栈操作指令
堆栈指令操作数只能采用直接寻址方式
(1)PUSH direct ;进栈指令:(SP)<-(SP)+1,((SP))<-(direct)
(2)POP direct ;出栈指令:(direct)<-((SP)),(SP)<-(SP)-1
四:数据交换指令
数据交换指令用于A与寄存器或内部数据存储单元相互交换数据
(1)XCH A,Rn ;(A)<->(Rn):字节(8bit)相互交换
(2)XCH A,direct ;(A)<->(direct):字节(8bit)相互交换
(3)XCH A,@Ri ;(A)<->((Ri)):字节(8bit)相互交换
(4)XCHD A,@Ri ;(A.3~0)<->((Ri).3~0):半字节(低4bit)相互交换
五:程序存储器数据传送指令
查表指令采用变址寻址方式,以DTPR或PC作为基址,用来存放表格起始地址,以A作为偏移量。
(1)MOVC A,@A+DPTR ;(A)<-((A)+(DPTR)),DTPR存放表格起始地址,A存放偏移量
(2)MOVC A,@A+PC ;(PC)<-(PC)+1,(A)<-((A)+(PC)),PC存放表格起始地址,A存放偏移量
算术运算指令
一:加法指令
1,不带Cy(Carry进位标志)的加法指令
(1)ADD A,Rn ;(A)<-(A)+(Rn)
(2)ADD A,direct ;(A)<-(A)+(direct)
(3)ADD A,@Ri ;(A)<-(A)+((Ri))
(4)ADD A,#data ;(A)<-(A)+data
2,带Cy(Carry进位标志)的加法指令, Cy用于保存低字节向高字节的进位
(1)ADDC A,Rn ;(A)<-(A)+(Rn)+(Cy)
(2)ADDC A,direct ;(A)<-(A)+(direct)+(Cy)
(3)ADDC A,@Ri ;(A)<-(A)+((Ri))+(Cy)
(4)ADDC A,#data ;(A)<-(A)+data+(Cy)
3,加1指令
(1)INC A ;(A)<-(A)+1
(1)INC Rn ;(Rn)<-(Rn)+1
(1)INC direct ;(direct)<-(direct)+1
(1)INC @Ri ;((Ri))<-((Ri))+1
4,十进制调整指令
十进制调整指令专门用于BCD码十进制加法运算
DA A
二:减法指令
1,减法指令
减法指令没有不带Cy(Carry)的减法指令
(1)SUBB A,Rn ;(A)<-(A)-(Rn)-(Cy)
(2)SUBB A,direct ;(A)<-(A)-(direct)-(Cy)
(3)SUBB A,@Ri ;(A)<-(A)-((Ri))-(Cy)
(4)SUBB A,#data ;(A)<-(A)-data-(Cy)
2,减1指令
(1)DEC A ;(A)<-(A)-1
(1)DEC Rn ;(Rn)<-(Rn)-1
(1)DEC direct ;(direct)<-(direct)-1
(1)DEC @Ri ;((Ri))<-((Ri))-1
三:乘法指令和除法指令
1,单字节乘法指令
MUL AB ;(B)(A)<-(A)X(B),若积大于255,Cy被置1
2,单字节除法指令
DIV AB ;(A)[商]...(B)[余数]<-(A)/(B),Cy,OV被无条件清零
逻辑运算和移位运算指令
一:逻辑与指令,又叫逻辑乘指令
(1)ANL A,Rn ;(A)<-(A)&(Rn)
(2)ANL A,direct ;(A)<-(A)&(direct)
(3)ANL A,@Ri ;(A)<-(A)&((Ri))
(4)ANL A,#data ;(A)<-(A)&data
(5)ANL direct,A ;(direct)<-(direct)&(A)
(6)ANL direct,#data ;(direct)<-(direct)&data
二:逻辑或指令,又叫逻辑加指令
(1)ORL A,Rn ;(A)<-(A)|(Rn)
(2)ORL A,direct ;(A)<-(A)|(direct)
(3)ORL A,@Ri ;(A)<-(A)|((Ri))
(4)ORL A,#data ;(A)<-(A)|data
(5)ORL direct,A ;(direct)<-(direct)|(A)
(6)ORL direct,#data ;(direct)<-(direct)|data
三:逻辑异或指令,又叫半加指令
(1)XRL A,Rn ;(A)<-(A)^(Rn)
(2)XRL A,direct ;(A)<-(A)^(direct)
(3)XRL A,@Ri ;(A)<-(A)^((Ri))
(4)XRL A,#data ;(A)<-(A)^data
(5)XRL direct,A ;(direct)<-(direct)^(A)
(6)XRL direct,#data ;(direct)<-(direct)^data
四:累加器清零与取反指令
(1)CLR A ;(A)<-0
(2)CPL A ;(A)<-(~A), CPL是取反指令
五:移位指令
(1)RL A ;不带Cy左移,(b7)<-(b6)...(b1)<-(b0)<-(b7)
(2)RR A ;不带Cy右移,(b7)->(b6)...(b1)->(b0)->(b7)
(3)RLC A ;带Cy左移,(Cy)<-(b7)<-(b6)...(b1)<-(b0)<-(Cy)
(4)RRC A ;带Cy右移,(Cy)->(b7)->(b6)...(b1)->(b0)->(Cy)
(5)SWAP A ;A的高4bit和低4bit互相交换
位操作指令
一:位传送指令
(1)MOV C,bit ;(Cy)<-(bit)
(2)MOV bit,C ;(bit)<-(Cy)
二:位置位/复位指令
(1)CLR C ;(Cy)<-0
(2)CLR bit ;(bit)<-0
(3)SETB C ;(Cy)<-1
(4)SETB bit ;(bit)<-1
三:位运算指令
(1)ANL C,bit ;(Cy)<-(Cy)&(bit)
(2)ANL C,(~bit) ;(Cy)<-(Cy)&(~bit),(~bit)表示对bit取反
(3)ORL C,bit ;(Cy)<-(Cy)|(bit)
(4)ORL C,(~bit) ;(Cy)<-(Cy)|(~bit)
(5)CPL C ;(Cy)<-(~Cy)
(6)CPL bit ;(bit)<-(~bit)
控制转移指令
一:无条件转移指令
(1)LJMP addr16 ;(PC)<-addr16,长转移指令
(2)AJMP addr11 ;(PC)<-(PC)+2,(PC10~0)<-addr11,绝对转移指令
(3)SJMP rel ;(PC)<-(PC)+2,(PC)<-(PC)+rel,短转移指令
(4)JMP @A+DPTR ;(PC)<-(A)+(DPTR),变址转移指令
二:子程序调用与返回指令
1,调用指令,LCALL指令为长调用指令,ACALL绝对调用指令
(1)LCALL addr16 ;(PC)<-(PC)+3
;(SP)<-(SP)+1,((SP))<-(PC7~0)
;(SP)<-(SP)+1,((SP))<-(PC15~8)
;(PC)<-addr16
(2)ACALL addr11 ;(PC)<-(PC)+2
;(SP)<-(SP)+1,((SP))<-(PC7~0)
;(SP)<-(SP)+1,((SP))<-(PC15~8)
;(PC10~0)<-addr11
2,子程序返回指令
RET ;(PC15~8)<-((SP));(SP)<-(SP)-1
;(PC7~0)<-((SP));(SP)<-(SP)-1
三:条件转移指令
1,转移指令包括:A是否为零,2个字节数据是否相等,一个操作数减1后是否为零和一个bit的状态等
(1)JZ rel ;若(A)=0,则(PC)<-(PC)+2+rel:转移
;若(A)!=0,则(PC)<-(PC)+2:继续执行下一条(2)JNZ rel ;若(A)!=0,则(PC)<-(PC)+2+rel:转移
;若(A)=0,则(PC)<-(PC)+2:继续执行下一条
2,比较条件转移指令
(1)CJNE A,#data,rel ;(A)=data,(PC)<-(PC)+3:继续执行下一条
;(A)!=data,(PC)<-(PC)+3+rel:转移
;设置Cy标志位
(2)CJNE A,direct,rel ;(A)=(direct),(PC)<-(PC)+3:继续执行下一条
;(A)!=(direct),(PC)<-(PC)+3+rel:转移
;设置Cy标志位
(3)CJNE Rn,#data,rel ;(Rn)=(direct),(PC)<-(PC)+3:继续执行下一条
;(Rn)!=(direct),(PC)<-(PC)+3+rel:转移
;设置Cy标志位
(4)CJNE @Ri,#data,rel ;((Ri))=(direct),(PC)<-(PC)+3:继续执行下一条
;((Ri))!=(direct),(PC)<-(PC)+3+rel:转移
;设置Cy标志位
3,减1条件转移指令
(1)DJNZ Rn,rel ;(Rn)<-(Rn)-1,若(Rn)!=0,则(PC)<-(PC)+2+rel:转移
;若(Rn)=0,(PC)<-(PC)+2:继续执行下一条
(2)DJNZ direct,rel ;(direct)<-(direct)-1,若(direct)!=0,则(PC)<-(PC)+3+rel:转移
;若(direct)=0,(PC)<-(PC)+3:继续执行下一条
四:位控制转移指令
1,以Cy中内容为条件的转移指令
(1)JC rel ;若(Cy)=1,则(PC)<-(PC)+2+rel:转移
;若(Cy)=0,则(PC)<-(PC)+2:继续执行下一条
(2)JNC rel ;若(Cy)=0,则(PC)<-(PC)+2+rel:转移
;若(Cy)=1,则(PC)<-(PC)+2:继续执行下一条
2,以位地址中的内容为条件的转移指令
(1)JB bit,rel ;若(bit)=1,则(PC)<-(PC)+3+rel:转移
;若(bit)=0,则(PC)<-(PC)+3:继续执行下一条
(2)JNB bit,rel ;若(bit)=0,则(PC)<-(PC)+3+rel:转移
;若(bit)=1,则(PC)<-(PC)+3:继续执行下一条
(3)JBC bit,rel ;若(bit)=1,则(bit)<-0,(PC)<-(PC)+3+rel:转移
;若(bit)=0,则(PC)<-(PC)+3:继续执行下一条
五:空操作指令
NOP ;(PC)<-(PC)+1
MCS-51指令系统相关推荐
- MCS—51汇编语言程序
;计算C=A^2+B^2,B<=10 NUMA EQU 20H NUMB EQU 21H NUMC EQU 22HMOV A,NUMALCALL POWER2MOV R0,AMOV A,NUMB ...
- 基于51单片机的水温可测液体温度的控制器设计
1 引言 1.1鸡舍温度控制系统设计的意义 随着社会的发展,科技的进步,以及测温仪器在各个领域的应用,智能化已是现代温度控制系统发展的主流方向.特别是近年来,温度控制系统已应用到人们生活的各个方面,但 ...
- 51单片机八位抢答器c语言设计,基于51单片机八路抢答器的设计
基于51单片机八路抢答器的设计 毕业设计(论文)题 目:基于 51 单片机八路抢答器的设计 系 部: 专 业: 学 号: 学生姓名: 指导教师姓名: 指导教师职称: 2013 年 xx 月 xx 日X ...
- 计算机单片机原理考试题库,单片机原理及应用试题库-淮阴工学院
MOV A, 20H MOVX DPTR, #2FFFH MOVX @DPTR, A 4.把DPTR的内容压入堆栈 PUSH DPH PUSH DPL 四.填写下表(每空2分,共10分) 指令 CLR ...
- C51单片机寻址方式
所谓寻址方式, 就是寻找操作数地址的方式, 在用汇编语言编程时, 数据的存放.传送.运算都要通过指令来完成. 编程者必须自始至终都要十分清楚操作数的位置, 以及如何将它们传送到适当的寄存器去参与运算. ...
- 青岛理工大学微型计算机系统,青岛理工大学2012-2013年微型计算机技术试题a.docx...
教师试做时间 60分分钟 出题教师 赵艳秋 取题时间 审核 教研室主任 出题单位 自动化学院 使用班级 电气10 1-4 考试日期 2011.12. 22 院(部)主任 考试成绩期望值 75 印刷份数 ...
- 毕设-基于单片机的声光电子琴
目录 毕设-基于单片机的声光电子琴 一.作品展示 1.1.作品实物图 1.2.焊接布局图 1.3.PCB原理图 1.4.PCB图 二.设计流程 2.1.系统基本设计思路 2.1.1. 各部分说明 2. ...
- 51单片机学习随笔(1)
51单片机感觉还是很好触摸的,二十多块买了一个最小系统板,一个keil uVision4,再有一个stc-isp就基本可以先简单的玩一玩学一学了.在学习过程中我遇到了一些问题,简单的记一下随笔. 一. ...
- 软件与计算机硬件加密,51单片机程序进行软件加密和硬件解密的方法
由于固化在片外EPROM 里的单片机程序容易复制,所以,如不在技术上采取保护措施,则程序中所采用的处理方法易被他人分析仿制.对单片机程序进行加密是一种有效的保护措施,也是一项实用的技术.虽然本身带有E ...
- 10 51单片机汇编:让定时器产生中断(使用Keil模拟器)[系列教程之10]
10 51单片机汇编:让定时器产生中断(使用Keil模拟器)[系列教程之10] 该系列主仓库地址:https://gitee.com/langcai1943/8051-from-boot-to-app ...
最新文章
- 【python练习】支付宝自动偷取能量
- richTextBoxFontClass
- 腾讯云服务器CentOS安装JDK+Tomcat+MySQL详细步骤(以及遇到的各种坑)
- python 重复执行任务_使用Python自动执行数字艺术家的重复任务
- 关于T-SQL中exists或者not exists子查询的“伪优化”的做法
- 用python编辑word_使用PYTHON编辑和读取WORD文档
- S32DS for PowrPC中对dcc编译器的支持
- 我是如何在GitHub上开源一个项目的(截图说明) (VS2010可以安装git插件)
- 【简单易上手】姓氏头像制作生成头像组合微信小程序源码下载
- 民国传奇女子——张爱玲
- Windows内核原理与实现之Windows设备驱动程序
- 腾讯互娱旗下工作室一览
- 230个形容人性格的英语词汇
- 保留三位有效数字,四舍六入五成双
- 京东2019春招编程题
- 苏轼《定风波》词两首
- array()、range() 和 arange()函数的区别和用法
- ...mapMutations的使用
- 以资深面试官的角度告诉大家面试前可以做的准备
- DS18B20数字温度传感器及单总线协议规定