安徽工程大学微型单片计算机与接口技术第四章.ppt_第1页
安徽工程大学微型单片计算机与接口技术第四章.ppt_第2页
安徽工程大学微型单片计算机与接口技术第四章.ppt_第3页
安徽工程大学微型单片计算机与接口技术第四章.ppt_第4页
安徽工程大学微型单片计算机与接口技术第四章.ppt_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

第4章51汇编语言程序设计,51系列单片机指令系统的特点51指令的助记符寻址方式指令系统伪指令51汇编语言源程序的基本结构,4.151系列单片机指令系统的特点,大多数指令(运算类指令,位处理指令以及MOV型指令)的操作都在片内RAM中进行。片外数据存贮器中待处理的数据或存放在程序存贮器中的常数,需使用MOVX指令或MOVC指令进行传送。片内数据存储器内不同区域所能采用的寻址方式是有差异的。应特别注意,特殊功能寄存器的映象只能用直接寻址方式进行字节访问。某些特殊功能寄存器还可用位寻址进行位处理。片内的I/O口均映象为特殊功能寄存器,故可用MOV指令访问在片的I/O口进行I/O操作。片外的I/O口按片外数据存贮器进行扩展,可用MOVX指令完成I/O操作。在51系列单片机的指令系统中,没有专门的I/O指令。所有的与在片资源(片内接口)相关的寄存器,均为特殊功能寄存器。作为特殊功能寄存器的“程序状态字寄存器(PSW)”可以位寻址,如用JB、JNB和JBC指令寻址PSW的有关状态位,即分别是多种条件转移指令,如以溢出标志为条件等。另外,PSW无零标志位。JZ和JNZ指令系直接测试累加器,根据它的内容是否为零作为转移条件的转移指令。,4.251指令的助记符,51系列单片机的指令系统包含5种类型的指令。定义了7种寻址方式。助记符号如下:1、代表操作类型(操作码)的助记符2、代表寻址方式(操作数)的助记符,1、代表操作类型(操作码)的助记符,传送类指令MOV片内数据存贮器数据传送MOVX片外数据存贮器同累加器间的数据传送MOVC程序存贮器的数据传送到累加器XCH片内数据存贮器的字节交换XCHD片内数据存储器的半字节交换PUSH压栈POP弹栈算术运算指令ADD加法ADDC带进位加法SUBB带借位减法MUL乘法DIV除法DA十进制调整INC增1DEC减l逻辑运界指令CLR清0CPL求反ANL逻辑与运算ORL逻辑或运算XRL逻辑异或运算,RL左环移RR右环移RLC带进位的左环移RRC带进位的右环移控制程序转移指令JMP变址间接寻址的无条件转移指令LJMP直接寻址的无条件长转指令AJMP绝对寻址的无条件转移指令SJMP相对寻址的无条件转移指令LCALL直接寻址的子程序调用指令ACALL绝对寻址的子程序调用指令RET子程序返回指令CJNE比较条件转移指令DJNZ循环控制指令JZ、JNZ以累加器的内容是否为零作为条件的转移指令JC、JNC以进位标志的状态为条件的转移指令JB、JNB以寻址的位状态为条件的转移指令JBC寻址的位状态为1时转移。且清0所寻址的位位处理指令操作码缩写字与上同。,2、代表寻址方式(操作数)的助记符,Rn寄存器寻址A、B、DPTRRi寄存器间接寻址direct片内数据存贮器直接寻址#data88位立即寻址#data1616位立即寻址bit位寻址ADPTRA十PC变址间接导址rel相对寻址,4.3寻址方式,51单片机的寻址方式共有7种寄存器寻址寄存器间接寻址直接寻址立即寻址位寻址变址间接寻址相对寻址,1、寄存器寻址方式,指令的操作数据在指令选定的片内数据存贮器中所定义的工作寄存器内。寄存器寻址方式在指令中使用的符号是工作寄存器的名字代号R0R7,或是A、B、DPTR及Cy。值得注意的是,在寻址工作寄存器方式下,指令中只能说明工作寄存器组内8个寄存器中的一个寄存器,不能指明其所在的工作寄存器组号,它是由PSW的b4和b3两位二进制数选定的。,2、寄存器间接寻址方式,寄存器间接寻址方式的含义是,把指定的工作寄存器(规定为R0或R1)的内容作地址,该地址所指定的数据存贮单元即为指令的操作对象。这里,R0或R1为间接寻址寄存器。它可寻址片内数据存贮器地址空间00H7FH范围内的128个字节单元,以及片外数据存贮器一页地址空间的256个字节单元。8051还可采用16位的数据指针(DPTR)作为间接寻址寄存器,寻址片外数据存储器64k地址空间。在指令中使用符号为DPTR。,3、直接寻址方式,直接寻址就是在指令中直接给出操作数据所在单元的真实地址。8051规定,直接寻址方式仅适用于寻址片内数据存贮器00H7FH地址空间内的128个数据存贮单元,以及片内的特殊功能寄存器。对于片外的数据存贮器地址空间,不能直接寻址。直接寻址的符号是direct(片内数据存贮单元或特殊功能寄存器映象地址),若寻址特殊功能寄存器,也可在指令中标出其名字,如PSW、P1等。,4、立即寻址方式,立即寻址表示实际操作数据作为指令的一部分,在指令中直接给出操作数据(立即数),取指令时,即可由程序存贮器中直接取得操作数据。8051中除一条指令(MOVDPTR,#data16)需16位长的立即数外,都是8位的立即数。指令中,立即数记为#Data(如:#32H),即操作数据是#号后跟的数据32H,5、位寻址方式,8051设有独立的位处理器,对寻址的位进行处理。相应的,在指令系统中有一类位操作指令,它们仅允许采用位寻址方式,直接寻址片内数据存贮器16个字节单元的128个位,以及映象地址可被8整除的特殊功能寄存器包含的可直接寻址的位。可位寻址的各数位均规定有位地址(8位)。在位操作指令中,直接标出所操作位的位地址。一般形式下以bit表示位寻址。若操作特殊功能寄存器可直接寻址的位,也可在位操作指令中标注该位的名字。,6、变址间接寻址方式,该寻址方式用于寻址程序存贮器地址空间。其特征是,以程序计数器(PC)或数据指针(DPTR)作为基址寄存器,以累加器A作为变址寄存器,二者内容之和即为操作数据的真实地址或程序转移的目的地址(如JMPA十DPTR指令)。变址间接寻址以符号ADPTR或A十PC表示。,7、相对寻址方式,相对寻址用于程序控制的转移指令(跳转指令)。在这种寻址方式下,是以执行相对寻址方式的跳转指令(指令为二字节)时的PC值为基值,加上指令给出相对偏移量(记作rel)形成实际的转移目标地址,与典型的微型计算机的相对寻址相似,相对偏移量是一个带符号的8位二进制数(以补码形式表示)。其转移范围为:以PC当前值为基点,相对转移在十127-128个字节单元之间。,寻址方式小结,综上所述,51系列单片机寻址不同存贮空间时,允许使用的寻址方式不同。规定如下,4.4指令系统,51系列单片机共有111条指令,按其操作功能可分为5类指令:数据传送类指令;算术运算类指令;逻辑运算类指令控制程序转移类指令;位(布尔)处理类指令,1、数据传送类指令,格式:操作码目的字节的寻址方式,源字节的寻址方式功能:将源字节寻址方式寻址的源字节内容,传送到目的字节寻址方式寻址的目的字节中,源字节内容不变。MOV型指令MOVX型指令MOVC型指令栈操作指令交换型指令,MOV型指令,片内数据存贮器数据传送,有15+1条。,MOV型传送指令,汇编格式机器码格式说明MOVA,Rn11101rrrA(Rn)MOVA,Ri111001liA(Ri)MOVA,direct11100101,directA(direct)MOVA,#data01110100,dataA#dataMOVdirect,#data01110101,direct,datadirect#dataMOVdirect,A11110101,directdirect(A)MOVdirect,Rn10001rrr,directdirect(Rn)MOVdirect,Ri1000011i,directdirect(Ri)MOVdirect,direct10000101,源direct,目的directdirect(direct)MOVRn,A11111rrrRn(A)MOVRn,direct10101rrr,directRn(direct)MOVRn,#data01111rrr,dataRn#dataMOVRi,A1111D11i(Ri)(A)MOVRi,direct0101011i,direct(Ri)(direct)MOVRi,#data0111l11i,data(Ri)#dataMOVDPTR,#data1610010000,data(H),data(L)(DPTR)#data16,MOVX型指令,实现累加器A与片外数据存贮器间的数据传送,片外数据存贮器用寄存器间接寻址,间接寻址寄存器可以是Ri或数据指针(DPTR)。这类指令只有四条。汇编格式机器码格式说明MOVXA,Ri1110001iA(Ri)MOVXRi,A1111001i(Ri)(A)MOVXA,DPTR11100000A(DPTR)MOVXDPTR,A11110000(DPTR)(A),、MOVC型指令,这类指令的功能是,将变址间接寻址方式寻址的程序存贮器字节,读入累加器A中。MOVC型指令影响标志位P。汇编格式机器码格式说明MOVCA,ADPTR10010011A(A)+(DPTR)MOVCA,A+PC10000011A(A)+(PC)在这里作为变址寄存器使用的累加器A,其内容应看作8位二进制无符号数。,栈操作指令,栈操作指令只有两条:汇编格式机器码格式说明PUSHdirect11000000,direct入栈指令(SP)(SP)+1(SP)(direct)POPdirect11010000,direct出栈指令(direct)(SP)(SP)(SP)-1,交换型指令,字节交换指令汇编格式机器码格式说明XCHA,Rn11001rrr(A)(Rn)XCHA,direct11000101,direct(A)(direct)XCHA,Ri1100011i(A)(Ri)低半字节交换指令汇编格式机器码格式说明XCHDA,Ri1101011i(A)与(Ri)的低半字节互换累加器A的高、低半字节互换指令汇编格式机器码格式说明SWAPA11000100A的高、低半字节互换,2、算术运算类指令,这类指令只能实现片内数据存贮器地址空间内字节单元的算术运算处理。算术运算处理包括:字节内容加1操作码助记符INC字节内容减1操作码助记符DEC四则算术运算加法运算操作码助记符ADD带进位加法运算操作码助记符ADDC带借位减法运算操作码助记符SUBB乘法运算操作码助记符MUL除法运算操作码助记符DIV十进制调整操作码助记符DA,、加1(INC)、减1(DEC)指令,汇编格式机器码格式说明INCA00000100A(A)+1INCRn00001rrrRn(Rn)+1INCRi0000011i(Ri)(Ri)+1INCdirect00000101,directdirect(direct)+1INCDPTR10100011DPTR(DPTR)+1DECA00010100A(A)-1DECRn000llrrrRn(Rn)-1DECRi0001011i(Ri)(Ri)-1DECdirect00010101,directdirect(direct)-1,四则算术运算指令,加法指令汇编格式机器码格式说明ADDA,Rn00101rrrA(A)+(Rn)ADDA,Ri0010011iA(A)+(Ri)ADDA,#data00100100,dataA(A)+dataADDA,direct00100101,directA(A)+(direct)带进位加法指令汇编格式机器码格式说明ADDCA,Rn00111rrrA(A)+(Rn)+(CY)ADDCA,Ri00110lliA(A)+(Ri)+(CY)ADDCA,#data00110100,dataA(A)+data+(CY)ADDCA,direct00110101,directA(A)+(direct)+(CY),四则算术运算指令,带借位减法指令汇编格式机器码格式说明SUBBA,Rn100llrrrA(A)-(Rn)-(CY)SUBBA,Ri1001011iA(A)-(Ri)-(CY)SUBBA,#data10010100,dataA(A)-data-(CY)SUBBA,direct10010101,directA(A)-(direct)-(CY)十进制加法调整指令汇编格式机器码格式DAA11010100乘法指令除法指令汇编格式机器码格式汇编格式机器码格式MULAB10100100DIVAB10000100,3、逻辑运算类指令,、累加器处理类指令汇编格式机器码格式累加器清0指令CLRA11100100累加器求反指令CPLA11101000累加器左环移指令RLA00100011累加器右环移指令RRA00000011累加器带进位左环移指令RLCA00110011累加器带进位右环移指令RRCA00010011,3、逻辑运算类指令,汇编格式机器码格式说明ANLA,Rn01011rrrA(A)(Rn)ANLA,Ri0101011iA(A)(Ri)ANLA,direct01010101,directA(A)(direct)ANLA,#data01010100,dataA(A)(data)ORLA,Rn01001rrrA(A)(Rn)ORLA,Ri0100011iA(A)(Ri)ORLA,direct01000101,directA(A)(direct)ORLA,#data01000100,dataA(A)(data)XRLA,Rn01101rrrA(A)(Rn)XRLA,Ri0110011iA(A)(Ri)XRLA,direct01100101,directA(A)(direct)XRLA,#data01100100,dataA(A)(data),3、逻辑运算类指令,汇编格式机器码格式说明ANLdirect,A01010010,directdirect(direct)(A)ANLdirect,#data01010011,direct,datadirect(direct)(data)ORLdirect,A01000010,directdirect(direct)(A)ORLdirect,#data01000011,direct,datadirect(direct)(data)XRLdirrect,A01100010,directdirect(direct)(A)XRLdirect,#data01100011,direct,datadirect(direct)(data),4、控制程序转移类指令,转移指令就是按照预定的寻址方式,形成转移的目标地址,并置入PC,以控制指令的流向。控制程序转移类指令是程序中必不可少的一类指令。程序设计中凡有”分支”、”循环”等结构形式时,在程序中都是靠控制程序转移指令来实现的。51单片机设有丰富的转移指令,为程序设计提供了方便,如功能较强的比较转移指令、循环转移指令,以及位处理类指令中的位条件转移指令。、8051转移指令的寻址方式、无条件转移指令、条件转移指令,、8051转移指令的寻址方式,直接寻址:在指令的机器码格式中,直接给出转移目标的16位地址,执行时,将此地址装入PC。记为:(PC)addr16跳转范围:64K(216)绝对寻址:在指令的机器码格式中,直接给出转移目标的低11位地址,执行时,将此地址装入PC的低11位。PC的高5位不变。记为:(PC)10-0addr11跳转范围:2K(211)相对寻址:在指令的机器码格式中,给出的是“相对转移量rel”,执行时,将它与PC的现行值相加。其结果装入PC。记为:(PC)(PC)+rel跳转范围:256(28)变址间接寻址:执行时,将数据指针(DPTR)与累加器A的8位无符号数相加。其结果装入PC。记为:(PC)(DPTR)+A跳转范围:64K(216),不同寻址方式的差别跳转范围不同:直接寻址和间接寻址64K绝对寻址2K相对寻址256指令机器码的长度不同:直接寻址3字节绝对寻址和相对寻址2字节间接寻址1字节间接寻址需预先对数据指针和累加器赋值,才能实现有效的跳转。相对寻址的转移指令的机器码,与程序存储的位置无关。(浮动)直接寻址和绝对寻址的机器码,与程序存储的位置有关。,、无条件转移指令,无条件转移指令汇编格式机器码格式说明LJMPaddr00000010,addr(H),addr(L)直接寻址AJMPaddr11a10a9a800001,a7a6a5a4a3a2a1a0绝对寻址SJMPrel10000000,rel相对寻址JMPADPTR01110011间接寻址(散转)无条件调用指令汇编格式机器码格式说明LCALLaddr00010010,addr(H),addr(L)直接寻址ACALLaddr11a10a9a810001,a7a6a5a4a3a2a1a0绝对寻址子程序返回指令汇编格式机器码格式说明RET00100010子程序返回,、条件转移指令,判(累加器)零转移指令汇编格式机器码格式转移条件转移时JZrel01100000,rel(A)0PC(PC)+relJNZrel01100000,rel(A)0PC(PC)+rel比较转移指令汇编格式机器码格式转移条件转移时CJNEA,direct,rel10110101,direct,rel(direct)0PC(PC)+relCJNEA,#data,rel10110100,data,reldata0PC(PC)+relCJNERn,#data,rel10111rrr,data,reldata0PC(PC)+relCJNERi,#data,rel1011011i,data,reldata0PC(PC)+rel循环控制指令汇编格式机器码格式转移条件DJNZRn,rel11011rrr,rel首先(Rn)(Rn)-1然后判断(Rn)-10转移时PC(PC)+relDJNZdirect,rel11010101,direct,rel首先(direct)(direct)-1然后判断(direct)-10转移时PC(PC)+rel,5、位处理类指令,.位传送指令汇编格式机器码格式说明MOVC,bit10100010,bitC(bit)MOVbit,C10010010,bit(bit)C.位变量修改指令(位状态控制指令)汇编格式机器码格式说明CLRC11000011C“0”CLRbit11000010,bit(bit)“0”CPLC10110011C/CCPLbit10110010,bit(bit)/(bit)SETBC11010011C“1”SETBbit11010010,bit(bit)“1”,5、位处理类指令,.位逻辑运算指令汇编格式机器码格式说明ANLC,bit10000010,bitCC(bit)ANLC,/bit10110000,bitCC(bit)ORLC,bit01110010,bitCC(bit)ORLC,/bit10100000,bitCC(bit).位条件转移指令汇编格式机器码格式转移条件说明JCrel01000000,bitCY=1PC(PC)+relJNCrel01010000,bitCY=0PC(PC)+relJBbit,rel00100000,bit,rel(bit)=1PC(PC)+relJNBbit,rel00110000,bit,rel(bit)=0PC(PC)+relJBCbit,rel00010000,bit,rel(bit)=1PC(PC)+rel(bit)“0”,6、空操作指令,汇编格式机器码格式说明NOP00000000空操作,4.5伪指令,常用的有下列几种伪指令:1、ORG(Origin起点)2、DB(DefineByte定义字节)3、DW(DefineWord一定义一个字)4、EQU(Equate等值)5、DATA(数据地址赋值)6、BIT(位地址赋值)7、END(汇编结束),1、ORG(Origin起点),ORG伪指令总是出现在每段源程序或数据块的开始。它指明此语句后面的程序或数据块的起始地址。其一般格式为:ORGnn(绝对地址或标号)例:ORG8000HMOVR0,#50HMOVA,R4ADDA,R0MOVR3,A,2、DB(DefineByte定义字节),一般格式:标号:DB字节常数或字符或表达式其中:标号区段可有可无,字节常数或字符是指一个字节数据,或用逗号分开的字节串,或用引导括起来的ASCII码字符串(一个ASCII字将相当于一个字节)。此伪指令的功能是把字节常数或字节串存入程序存储器的连续单元中。例:ORG9000HDATA1:DB73H,01H,90HDATA2:DB02H,3、DW(DefineWord一定义一个字),一般格式:标号:DW字或字串DW伪指令的功能与DB相似,其区别在于DB是定义一个字节,而DW是定义一个字(规定为两个字节,即16位二进制数),故DW主要用来定义地址。存放时一个字需两个单元,数据的高8位存入低地址单元,数据的低8位存入高地址单元。,4、EQU(Equate等值),一般格式:字符名称EQU操作数EQU伪指令的功能是将操作数赋值给字符名称,使两边的两个量等值。,5、DATA(数据地址赋值),一般格式:字符名称DATA表达式DATA伪指令的功能是将数据地址赋值给字符名称,使两边的两个量等值。该伪指令的功能与EQU伪指令相似,使用时应该注意它们的区别:EQU定义的符号必须先定义后使用,DATA伪指令无此限制;用EQU伪指令可以将一个汇编符号赋给字符名称,而DATA伪指令不可以;DATA伪指令可以将一个表达式的值赋给一个字符变量,并且所定义的字符变量也可以在表达式中,而EQU伪指令不可以。DATA伪指令常用来定义数据。,6、BIT(位地址赋值),一般格式:字符名称BIT位地址BIT伪指令的功能是将位地址赋给字符名称,使两边的两个量等值。例如A1BITP1.0即将位地址P1.0赋给变量A1,在程序设计中可以使用变量A1代替位地址P1.0。,7、END(汇编结束),一般格式:标号:END地址或标号其中标号以及操作数字段的地址或标号不是必要的。END伪指令是一个结束标志。用来指示汇编语言源程序段已结束。因此,在一个源程序中只允许出现一个END语句,并且它必须放在整个程序(包括伪指令)的最后面,是源程序模块的最后一个语句。如果END语句出现在中间,则汇编程序将不汇编END

温馨提示

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

评论

0/150

提交评论