一文详解80C51单片机的指令集_第1页
一文详解80C51单片机的指令集_第2页
一文详解80C51单片机的指令集_第3页
一文详解80C51单片机的指令集_第4页
一文详解80C51单片机的指令集_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一文详解80C51单片机的指令集数据传送类指令数据传送是单片机最基本的操作。数据传送的一般功能是将源操作数传送到指令所指定的目的操作数,指令执行后,源操作数不变。数据传送类指令一般不影响标志位。数据传送类指令共29条,可以分为两大类。一是采用MOV操作符,称为一般传送指令,共16条;二是采用非MOV操作符,称为特殊传送指令,共13条。一般传送指令的汇编指令格式为:MOV是传送指令的操作助记符。其功能是将源操作数传送到目的操作数,源操作数内容不变。该类指令的助记符,操作数,功能,字节数及执行时长(机器周期数),按目的操组数归类如下。1)内部8位数据传送指令内部RAM区是数据传送最活跃的区域,8位内部数据传送指令共15条,用于单片机内部的数据存储器和寄存器之间的数据传送。有立即寻址,直接寻址,寄存器寻址及寄存器间接寻址等寻址方式。2)16位数据传送指令该指令是80C51指令集中唯一的一条16位数据传送指令,其作用是将外部存储器某单元地址送到数据指针DPTR。这个存储单元可以是外部RAM也可以是外部ROM,也可以是扩展的片外接口地址。如果地址传送到DPTR后用刀MOVC,则一定是ROM地址;用到的是MOVX,则一定是RAM地址或片外接口地址。以上一般数据传送指令中,可以用4种目的字节为基础来构造4类指令。使用时请注意:除direct外,源字节寻址与目的字节方式是不相同的;Rn寄存器寻址与寄存器间接寻址间不相互传送;只有以累加器A作为目的操作数的指令,才可能影响奇偶标志P。3)特殊传送指令特殊传送指令包括:ROM查表,读/写外部RAM,堆栈操作和交换指令,共13条。ROM中常数读取指令为了取出存放在程序存储器中的表格数据,80C51单片机提供了两条查表指令,这两条指令的操作码助记符为MOVC(movecode),表示操作对象是程序存储器。指令MOVCA,@A+PC以PC为基址寄存器,A为变址寄存器,A中的8位无符号数与PC内容(该指令的吓一跳指令的起始地址)相加后得到一个16位ROM地址,然后将该地址单元的内容取出送累加器A。指令MOVCA,@A+DPTR以DPTR为基址寄存器,A为变址寄存器,A中的8位无符号数与DPTR内容相加后得到一个16位ROM地址,然后将该地址单元的内容取出送累加器A。片外RAM的读/写指令使用MOV类指令,内部RAM单元内容可以有很多种灵活的数据传送方式,而外部RAM数据的传送只能与A进行,且必须使用助记符为MOVX类的指令。注意指令以Ri为间接寻址寄存器的,对外部RAM的寻址空间为256字节。而DPTR的寻址空间是整个64KB的片外RAM。堆栈操作指令堆栈操作是通过指令来完成的。将数据送入堆栈的过程称为压栈操作,而从堆栈中取出数据的过程称为弹出(出栈)操作。压栈指令的功能是先将堆栈指针SP的内容加1,然后将指令指定的直接寻址单元内容传送至栈顶单元。出栈指令的功能是将当前堆栈指针SP所指示的单元的内容传送到该指令指定的单元中,然后SP中的内容减1。数据交换指令数据传送都是源操作数传送到目的操作数,而源操作数不变,数据流是单方向的;数据交换类指令则是双方向的,源和目的操作数都会发送改变。XCH为字节交换,XCHD为半字节交换(仅交换低4位数据),SWAP是自交换(高4位与低4位交换)。算术运算类指令算术操作指令共有24条,可分为加减乘除和BCD码调整指令,除加1减1指令外,算术运算指令的执行结果都将影响CY,AC,OV标志。1)不带进位加法指令及BCD码加法调整指令前4条指令都是两个数相加后将结果送给A,参与运算的都是两个8位二进制数。对于微型计算机作加法时,做的是纯正的二进制数相加,但对用户来说,这些8位的二进制数,可能是无符号数,有符号数的补码,还可能是BCD码。为此,微型计算机设计了若干个结果标志或调整指令供用户使用。无符号数相加:若相加结果超8位,则CY为1,表示产生进位,否则CY为0。有符号数相加:8位二进制数表示的十进制范围为-128~127,当相加结果不在这个范围时,OV为1,表示溢出。OV为1表示加法运算的结果不可用。BCD码相加:若两个BCD数相加结果大于1001,则要加0110进行调整;若两个BCD数相加结果在本位上并不大与1001,但产生了进位,相当于计算结果大于9,那么也要加0110进行调整。调整指令用专用这指令DAA。2)带进位加法指令这4条指令是将累加器A中的值与源操作数以及进位CY中的值相加,结果送A。常用于多字节数的加法运算中。需要注意的是这里的CY是指令开始执行时的进位标志位,不是相加后产生的。3)加1指令加法仍按无符号二进制数进行,只有INCA影响就标志P,其余指令不影响标志位。4)带借位减法指令这4条指令的操作是,将A与源操作数及进位标志相减,结果回送到A。无符号数相减:CY为1表示D7位有错位,否则CY为0。CY为1就表示A<源操作数。有符号数相减:若OV为1,表明补码减法运算结果超出8位二进制数表示范围。若要进行不带进位的减法运算,只要将CY清0即可。5)减1指令只有DECA会影响奇偶标志P。6)乘除指令两个8位无符号数相乘结果为16位无符号数,乘积的低8位存放在A,高8位存放在寄存器B。如果乘积超过0FFH,则OV为1,否则清零。CY总为0,P仍按A中1的奇偶来确定。两个8位无符号数相除的商存放在A,余数存放在B。如果除数B为0,则OV为1。CY总为0,P仍按A中1的奇偶来确定。逻辑运算类指令逻辑运算指令共24条,包括逻辑与,或,异或,清零,取反,移位的指令。1)逻辑与指令2)逻辑或指令3)逻辑异或指令4)累加器清零指令5)取反指令6)移位指令控制转移类指令通常情况下,微机是顺序执行程序的,但在有些情况下需要改变程序的走向,控制转移类指令就是可以改变程序运行走向的指令。80C51共16条,包括无条件转移指令,条件转移指令以及子程序调用和返回指令。1)无条件转移指令无条件转移指令是当程序执行该指令时,不需要任何条件,程序自动转移到该指令所指的目的地址运行新的程序段。AJMP为短转移指令,在译成机器码时,只取目的地址的低11位,高5位使用PC地址的高5位。很明显这是一条跳转范围为2KB的指令。SJMP为相对转移指令,双字节指令,rel为有符号的补码,所以转移的目标地址在SJMP指令前126B到后129B之间。LJMP为长转移指令,该指令可以使程序从当前地址转移到64KB程序存储器地址空间的任意地址。JMP为散转移指令,该指令以DPTR和A的内容进行无符号相加后作为PC的新目标地址,可以实现64KB范围内的转移。该指令的特点是根据A的值不同实现多分支转移。2)条件转移指令条件转移指令是指在满足指定条件时就进行转移,否则程序继续执行本指令的下一条指令。条件转移指令都是相对转移。JZ指令是当A的内容为0就转移,而JNZ相反。CJNE指令比较转移指令,是对两个操作数进行比较,然后根据比较结果来决定是否转移到目的地址。若不相等就转移,相等就顺序执行。CJNE指令影响CY标志位,若目的操作数大于源操作数,则CY为0,反之为1。DJNZ指令为减1非零转移指令。对操作数减1,并保存结果,判断值是否为0,为0就往下执行,否则跳转。3)调用及返回指令ACALL和LCALL会将断点地址压栈,RET会将断点地址出栈,弹回PC。RETI是从中断服务子程序返回的指令,在RET的功能基础上,它还要清除80C51单片机内部的中断优先级状态触发器,使得已申请的同级或较低级的中断申请可以得到响应。布尔变量操作指令布尔变量即开关量,是以位为基本单位来进行运算和操作的。80C51系统具有对位变量的处理能力,它有自己的累加器CY,称为位累加器,有自己的位存储空间,还有自己独立的运算处理硬件系统和软件指令系统,共17条。为方便书写,指令中的C代表CY。1)位传送指令2)位置位指令3)位运算指令4)位控制转移指令位控制转

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论