51单片机汇编语句基础_第1页
51单片机汇编语句基础_第2页
51单片机汇编语句基础_第3页
51单片机汇编语句基础_第4页
51单片机汇编语句基础_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

-.z.一个单片机所需执行指令的集合即为单片机的指令系统。单片机使用的机器语言、汇编语言及高级语言,但不管使用是何种语言,最终还是要“翻译〞成为机器码,单片机才能执行之。现在有很多半导体厂商都推出了自己的单片机,单片机种类繁多,品种数不胜数,值得注意的是不同的单片机它们的指令系统不一定一样,或不完全一样。但不管是使用机器语言、汇编语言还是高级语言都是使用指令编写程序的。所谓机器语言即指令的二进制编码,而汇编语言则是指令的表示符号。在指令的表达式上也不会直接使用二进制机器码,最常用的是十六进制的形式。但单片机并不能直接执行汇编语言和高级语言,都必须通过汇编器“翻译〞成为二进制机器码方能执行,但如果直接使用二进制来编写程序,那将十分不便,也很难记忆和识别,不易编写、难于辨读,极易出错,同时出错了也相当难查找。所以现在根本上都不会直接使用机器语言来编写单片机的程序。最好的方法就是使用易于阅读和识别的指令符号来代替机器码,我们常称这些符号为助记符,用助记符的形式表示的单片机指令就是汇编语言,为便于记忆和阅读,助记符号通常都使用易于理解的英文单词和拼音字母来表示。每种单片机都有自己独特的指令系统,则指令系统是开发和生产厂商定义的,如要使用其单片机,用户就必须理解和遵循这些指令标准,要掌握*种〔类〕单片机,指令系统的学习是必须的。MCS-51共有111条指令,可分为5类:[1].数据传送类指令〔共29条〕[2].算数运算类指令〔共24条〕[3].逻辑运算及移位类指令〔共24条〕[4].控制转移类指令〔共17条〕[5].布尔变量操作类指令〔共17条〕一些特殊符号的意义在介绍指令系统前,我们先了解一些特殊符号的意义,这对今后程序的编写都是相当有用的。Rn——当前选中的存放器区的8个工作存放器R0—R7〔n=0-7〕。Ri——当前选中的存放器区中可作为地址存放器的两个存放器R0和R1〔i=0,1〕direct—部数据存储单元的8位地址。包含0—127(255)部存储单元地址和特殊功能存放地址。*data—指令中的8位常数。*data16—指令中的16位常数。addr16—用于LCALL和LJMP指令中的16目的地地址,目的地址的空间为64kB程序存储器地址。*addr11—用于ACALL和AJMP指令中的11目的地地址,目的地址必须放在与下条指令第一个字节同一个2kB程序存储器空间之中。rel—8位带符号的偏移字节,用于所有的条件转移和SJMP等指令中,偏移字节对于下条指令的第一个字节开场的-128——+127围。—间接存放器寻址或基址存放器的前缀。/—为操作的前缀,声明对该位操作书取反。DPTR—数据指针。bit—部RAM和特殊功能存放器的直接寻址位。A—累加器。B—累加器B。用于乘法和除法指令中。C—进位标志位。(*)—*地址单元中的容。((*))—由*寻址单元中的容。MCS-51的寻址方式寻址的“地址〞即为操作数所在单元的地址,绝大局部指令执行时都需要用到操作数,则到哪里去取得操作数呢?最易想到的就是告诉CPU操作数所在的地址单元,从那里可取得响应的操作数,这便是“寻址〞之意。MCS-51的寻址方式很多,使用起来也相当方便,功能也很强大,灵活性强。这便是MCS-51指令系统“好用〞的原因之一。下面我们分别讨论几种寻址方式的原理。[1].直接寻址指令中操作数直接以单元地址形式出现,例如:MOVA,68H这条指令的意义是把部RAM中的68H单元中的数据容传送到累加器A中。值得注意的是直接寻址方式只能使用8位二进制地址,因此这种寻址方式仅限于部RAM进展寻址。低128位单元在指令中直接以单元地址的形式给出。对于特殊功能存放器可以使用其直接地址进展访问,还可以以它们的符号形式给出,只是特殊功能存放器只能用直接寻址方式访问,而无其它方法。[2].存放器寻址存放器寻址对选定的8个工作存放器R0-R7进展操作,也就是操作数在存放器中,因此指定了存放器就得到了操作数,存放器寻址的指令中以存放器的符号来表示存放器,例如:MOVA,R1这条指令的意义是把所用的工作存放器组中的R3的容送到累加器A中。值得一提的是工作状态存放器的选择是通过程序状态字存放器来控制的,在这条指令前,应通过PSW设定当前工作存放器组。[3].存放器间接寻址存放器寻址方式,存放器中存放的是操作数,而存放器间接寻址方式,存放器中存放的则为操作数的地址,也即操作数是通过存放器指向的地址单元得到的,这便是存放器间接寻址名称的由来。例如指令:MOVA,R0这条指令的意义是R0存放器指向地址单元中的容送到累加器A中。假设R0=*56H,则是将56H单元中的数据送到累加器A中。存放器间接寻址方式可用于访问部RAM或外部数据存储器。访问部RAM或外部数据存储器的低256字节时,可通过R0和R1作为间接存放器。然而有必要指出,部RAM的高128字节地址与专用积存器的地址是重叠的,所以这种寻址方式不能用于访问特殊功能存放器。外部数据存储器的空间为64kB,这时可采用DPTR作为间址存放器进展访问,指令如下:MOV*A,DPTR这条指令的意义是与上述类似,不再赘述。[4].立即寻址立即寻址就是把操作数直接在指令中给出,即操作数包含在指令中,指令操作码的后面紧跟着操作数,一般把指令中的操作数称为立即数,因此而得名。为了与直接寻址方式相区别,在立即数前加上“*〞符号,例如:MOV*A,*0EH这条指令的意义是将0EH这个操作数送到累加器A中。[5].变址寻址变址寻址是以DPTR或PC作为基址存放器,以累加器A作为变址存放器,将两存放器的容相加形成16位地址形成操作数的实际地址。例如:MOVA,A+DPTRMOV*A,A+PCJMPA+DPTR在这三条指令中,A作为偏移量存放器,DPTR或PC作为变址存放器,A作为无符号数与DPTR或PC的容相加,得到访问的实际地址。其中前两条是程序存储器读指令,后一条是无条件转移指令。[6].位寻址在MCS-51单片机中,RAM中的20H—2FH字节单元对应的位地址为00H—7FH,特殊功能存放器中的*些位也可进展为寻址,这些单元既可以采用字节方式访问它们,也可采用位寻址的方式访问它们。[7].相对寻址相对寻址方式是为了程序的相对转移而设计的,其夜里是以PC的容为基址,加上给出的偏移量作为转移地址,从而实现程序的转移。转移的目的地址可参见如下表达式:目的地址=转移指令地址+转移指令字接数+偏移量值得注意的是,偏移量是有正负号之分的,偏移量的取值围是当前PC值的-128—+127之间。MCS-51数据传送指令数据传送指令共有29条,数据传送指令一般的操作是把源操作数传送到目的操作数,指令执行完成后,源操作数不变,目的操作数等于源操作数。如果要求在进展数据传送时,目的操作数不丧失,则不能用直接传送指令,而采用交换型的数据传送指令,数据传送指令不影响标志C,AC和OV,但可能会对奇偶标志P有影响。[1].以累加器A为目的操作数类指令〔4条〕这4条指令的作用是把源操作数指向的容送到累加器A。有直接、立即数、存放器和存放器间接寻址方式:MOVA,data;〔data〕→〔A〕直接单元地址中的容送到累加器AMOVA,*data;*data→〔A〕立即数送到累加器A中MOVA,Rn;〔Rn〕→〔A〕Rn中的容送到累加器A中MOVA,Ri;〔〔Ri〕〕→〔A〕Ri容指向的地址单元中的容送到累加器A[2].以存放器Rn为目的操作数的指令〔3条〕这3条指令的功能是把源操作数指定的容送到所选定的工作存放器Rn中。有直接、立即和存放器寻址方式:MOVRn,data;〔data〕→〔Rn〕直接寻址单元中的容送到存放器Rn中MOVRn,*data;*data→〔Rn〕立即数直接送到存放器Rn中MOVRn,A;〔A〕→〔Rn〕累加器A中的容送到存放器Rn中[3].以直接地址为目的操作数的指令〔5条〕这组指令的功能是把源操作数指定的容送到由直接地址data所选定的片RAM中。有直接、立即、存放器和存放器间接4种寻址方式:MOVdata,data;〔data〕→〔data〕直接地址单元中的容送到直接地址单元MOVdata,*data;*data→〔data〕立即数送到直接地址单元MOVdata,A;〔A〕→〔data〕累加器A中的容送到直接地址单元MOVdata,Rn;〔Rn〕→〔data〕存放器Rn中的容送到直接地址单元MOVdata,Ri;〔〔Ri〕〕→〔data〕存放器Ri中的容指定的地址单元中数据送到直接地址单元[4].以间接地址为目的操作数的指令〔3条〕这组指令的功能是把源操作数指定的容送到以Ri中的容为地址的片RAM中。有直接、立即和存放器3种寻址方式:MOVRi,data;〔data〕→〔〔Ri〕〕直接地址单元中的容送到以Ri中的容为地址的RAM单元MOVRi,*data;*data→〔〔Ri〕〕立即数送到以Ri中的容为地址的RAM单元MOVRi,A;〔A〕→〔〔Ri〕〕累加器A中的容送到以Ri中的容为地址的RAM单元[5].查表指令〔2条〕这组指令的功能是对存放于程序存储器中的数据表格进展查找传送,使用变址寻址方式:MOVCA,A+DPTR;〔〔A〕〕+〔DPTR〕→〔A〕表格地址单元中的容送到累加器A中MOVCA,A+PC;〔〔PC〕〕+1→〔A〕,〔〔A〕〕+〔PC〕→〔A〕表格地址单元中的容送到累加器A中[6].累加器A与片外数据存储器RAM传送指令〔4条〕这4条指令的作用是累加器A与片外RAM间的数据传送。使用存放器寻址方式:MOV*DPTR,A;〔A〕→〔〔DPTR〕〕累加器中的容送到数据指针指向片外RAM地址中MOV*A,DPTR;〔〔DPTR〕〕→〔A〕数据指针指向片外RAM地址中的容送到累加器A中MOV*A,Ri;〔〔Ri〕〕→〔A〕存放器Ri指向片外RAM地址中的容送到累加器A中MOV*Ri,A;〔A〕→〔〔Ri〕〕累加器中的容送到存放器Ri指向片外RAM地址中[7].堆栈操作类指令〔2条〕这4类指令的作用是把直接寻址单元的容传送到堆栈指针SP所指的单元中,以及把SP所指单元的容送到直接寻址单元中。这类指令只有两条,下述的第一条常称为入栈操作指令,第二条称为出栈操作指令。需要指出的是,单片机开机复位后,〔SP〕默认为07H,但一般都需要重新赋值,设置新的SP首址。入栈的第一个数据必须存放于SP+1所指存储单元,故实际的堆栈底为SP+1所指的存储单元。PUSHdata;〔SP〕+1→〔SP〕,〔data〕→〔SP〕堆栈指针首先加1,直接寻址单元中的数据送到堆栈指针SP所指的单元中POPdata;〔SP〕→〔data〕〔SP〕-1→〔SP〕,堆栈指针SP所指的单元数据送到直接寻址单元中,堆栈指针SP再进展减1操作[8].交换指令〔5条〕这5条指令的功能是把累加器A中的容与源操作数所指的数据相互交换。*CHA,Rn;〔A〕←→〔Rn〕累加器与工作存放器Rn中的容互换*CHA,Ri;〔A〕←→〔〔Ri〕〕累加器与工作存放器Ri所指的存储单元中的容互换*CHA,data;〔A〕←→〔data〕累加器与直接地址单元中的容互换*CHDA,Ri;〔A3-0〕←→〔〔Ri〕3-0〕累加器与工作存放器Ri所指的存储单元中的容低半字节互换SWAPA;〔A3-0〕←→〔A7-4〕累加器中的容上下半字节互换[9].16位数据传送指令〔1条〕这条指令的功能是把16位常数送入数据指针存放器。MOVDPTR,*data16;*dataH→〔DPH〕,*dataL→〔DPL〕16位常数的高8位送到DPH,低8位送到DPLMCS-51算术运算指令算术运算指令共有24条,算术运算主要是执行加、减、乘、除法四则运算。另外MCS-51指令系统中有相当一局部是进展加、减1操作,BCD码的运算和调整,我们都归类为运算指令。虽然MCS-51单片机的算术逻辑单元ALU仅能对8位无符号整数进展运算,但利用进位标志C,则可进展多字节无符号整数的运算。同时利用溢出标志,还可以对带符号数进展补码运算。需要指出的是,除加、减1指令外,这类指令大多数都会对PSW〔程序状态字〕有影响。这在使用中应特别注意。[1].加法指令〔4条〕这4条指令的作用是把立即数,直接地址、工作存放器及间接地址容与累加器A的容相加,运算结果存在A中。ADDA,*data;〔A〕+*data→〔A〕累加器A中的容与立即数*data相加,结果存在A中ADDA,data;〔A〕+〔data〕→〔A〕累加器A中的容与直接地址单元中的容相加,结果存在A中ADDA,Rn;〔A〕+〔Rn〕→〔A〕累加器A中的容与工作存放器Rn中的容相加,结果存在A中ADDA,Ri;〔A〕+〔〔Ri〕〕→〔A〕累加器A中的容与工作存放器Ri所指向地址单元中的容相加,结果存在A中[2].带进位加法指令〔4条〕这4条指令除与[1]功能一样外,在进展加法运算时还需考虑进位问题。ADDCA,data;〔A〕+〔data〕+〔C〕→〔A〕累加器A中的容与直接地址单元的容连同进位位相加,结果存在A中ADDCA,*data;〔A〕+*data+〔C〕→〔A〕累加器A中的容与立即数连同进位位相加,结果存在A中ADDCA,Rn;〔A〕+Rn+〔C〕→〔A〕累加器A中的容与工作存放器Rn中的容、连同进位位相加,结果存在A中ADDCA,Ri;〔A〕+〔〔Ri〕〕+〔C〕→〔A〕累加器A中的容与工作存放器Ri指向地址单元中的容、连同进位位相加,结果存在A中[3].带借位减法指令〔4条〕这组指令包含立即数、直接地址、间接地址及工作存放器与累加器A连同借位位C容相减,结果送回累加器A中。这里我们对借位位C的状态作出说明,在进展减法运算中,CY=1表示有借位,CY=0则无借位。OV=1声明带符号数相减时,从一个正数减去一个负数结果为负数,或者从一个负数中减去一个正数结果为正数的错误情况。在进展减法运算前,如果不知道借位标志位C的状态,则应先对CY进展清零操作。SUBBA,data;〔A〕-〔data〕-〔C〕→〔A〕累加器A中的容与直接地址单元中的容、连同借位位相减,结果存在A中SUBBA,*data;〔A〕-*data-〔C〕→〔A〕累加器A中的容与立即数、连同借位位相减,结果存在A中SUBBA,Rn;〔A〕-〔Rn〕-〔C〕→〔A〕累加器A中的容与工作存放器中的容、连同借位位相减,结果存在A中SUBBA,Ri;〔A〕-〔〔Ri〕〕-〔C〕→〔A〕累加器A中的容与工作存放器Ri指向的地址单元中的容、连同借位位相减,结果存在A中[4].乘法指令〔1条〕这个指令的作用是把累加器A和存放器B中的8位无符号数相乘,所得到的是16位乘积,这个结果低8位存在累加器A,而高8位存在存放器B中。如果OV=1,说明乘积大于FFH,否则OV=0,但进位标志位CY总是等于0。MULAB;〔A〕×〔B〕→〔A〕和〔B〕累加器A中的容与存放器B中的容相乘,结果存在A、B中[5].除法指令〔1条〕这个指令的作用是把累加器A的8位无符号整数除以存放器B中的8位无符号整数,所得到的商存在累加器A,而余数存在存放器B中。除法运算总是使OV和进位标志位CY等于0。如果OV=1,说明存放器B中的容为00H,则执行结果为不确定值,表示除法有溢出。DIVAB;〔A〕÷〔B〕→〔A〕和〔B〕累加器A中的容除以存放器B中的容,所得到的商存在累加器A,而余数存在存放器B中。[6].加1指令〔5条〕这5条指令的的功能均为原存放器的容加1,结果送回原存放器。上述提到,加1指令不会对任何标志有影响,如果原存放器的容为FFH,执行加1后,结果就会是00H。这组指令共有直接、存放器、存放器减间址等寻址方式:INCA;〔A〕+1→〔A〕累加器A中的容加1,结果存在A中INCdata;〔data〕+1→〔data〕直接地址单元中的容加1,结果送回原地址单元中INCRi;〔〔Ri〕〕+1→〔〔Ri〕〕存放器的容指向的地址单元中的容加1,结果送回原地址单元中INCRn;〔Rn〕+1→〔Rn〕存放器Rn的容加1,结果送回原地址单元中INCDPTR;〔DPTR〕+1→〔DPTR〕数据指针的容加1,结果送回数据指针中在INCdata这条指令中,如果直接地址是I/O,其功能是先读入I/O锁存器的容,然后在CPU进展加1操作,再输出到I/O上,这就是“读—修改—写〞操作。[7].减1指令〔4条〕这组指令的作用是把所指的存放器容减1,结果送回原存放器,假设原存放器的容为00H,减1后即为FFH,运算结果不影响任何标志位,这组指令共有直接、存放器、存放器间址等寻址方式,当直接地址是I/O口锁存器时,“读—修改—写〞操作与加1指令类似。DECA;〔A〕-1→〔A〕累加器A中的容减1,结果送回累加器A中DECdata;〔data〕-1→〔data〕直接地址单元中的容减1,结果送回直接地址单元中DECRi;〔〔Ri〕〕-1→〔〔Ri〕〕存放器Ri指向的地址单元中的容减1,结果送回原地址单元中DECRn;〔Rn〕-1→〔Rn〕存放器Rn中的容减1,结果送回存放器Rn中[8].十进制调整指令〔1条〕在进展BCD码运算时,这条指令总是跟在ADD或ADDC指令之后,其功能是将执行加法运算后存于累加器A中的结果进展调整和修正。DAAMCS-51逻辑运算及移位指令逻辑运算和移位指令共有25条,有与、或、异或、求反、左右移位、清0等逻辑操作,有直接、存放器和存放器间址等寻址方式。这类指令一般不影响程序状态字〔PSW〕标志。[1].循环移位指令〔4条〕这4条指令的作用是将累加器中的容循环左或右移一位,后两条指令是连同进位位CY一起移位。RLA;累加器A中的容左移一位RRA;累加器A中的容右移一位RLCA;累加器A中的容连同进位位CY左移一位RRCA;累加器A中的容连同进位位CY右移一位[2].累加器半字节交换指令〔1条〕这条指令是将累加器中的容上下半字节互换,这在上一节中容已有介绍。SWAPA;累加器中的容上下半字节互换[3].求反指令〔1条〕这条指令将累加器中的容按位取反。CPLA;累加器中的容按位取反[4].清零指令〔1条〕这条指令将累加器中的容清0。CLRA;0→〔A〕,累加器中的容清0[5].逻辑与操作指令〔6条〕这组指令的作用是将两个单元中的容执行逻辑与操作。如果直接地址是I/O地址,则为“读—修改—写〞操作。ANLA,data;累加器A中的容和直接地址单元中的容执行与逻辑操作。结果存在存放器A中。ANLdata,*data;直接地址单元中的容和立即数执行与逻辑操作。结果存在直接地址单元中。ANLA,*data;累加器A的容和立即数执行与逻辑操作。结果存在累加器A中。ANLA,Rn;累加器A的容和存放器Rn中的容执行与逻辑操作。结果存在累加器A中。ANLdata,A;直接地址单元中的容和累加器A的容执行与逻辑操作。结果存在直接地址单元中。ANLA,Ri;累加器A的容和工作存放器Ri指向的地址单元中的容执行与逻辑操作。结果存在累加器A中。[6].逻辑或操作指令〔6条〕这组指令的作用是将两个单元中的容执行逻辑或操作。如果直接地址是I/O地址,则为“读—修改—写〞操作。ORLA,data;累加器A中的容和直接地址单元中的容执行逻辑或操作。结果存在存放器A中。ORLdata,*data;直接地址单元中的容和立即数执行逻辑或操作。结果存在直接地址单元中。ORLA,*data;累加器A的容和立即数执行逻辑或操作。结果存在累加器A中。ORLA,Rn;累加器A的容和存放器Rn中的容执行逻辑或操作。结果存在累加器A中。ORLdata,A;直接地址单元中的容和累加器A的容执行逻辑或操作。结果存在直接地址单元中。ORLA,Ri;累加器A的容和工作存放器Ri指向的地址单元中的容执行逻辑或操作。结果存在累加器A中。[7].逻辑异或操作指令〔6条〕这组指令的作用是将两个单元中的容执行逻辑异或操作。如果直接地址是I/O地址,则为“读—修改—写〞操作。*RLA,data;累加器A中的容和直接地址单元中的容执行逻辑异或操作。结果存在存放器A中。*RLdata,*data;直接地址单元中的容和立即数执行逻辑异或操作。结果存在直接地址单元中。*RLA,*data;累加器A的容和立即数执行逻辑异或操作。结果存在累加器A中。*RLA,Rn;累加器A的容和存放器Rn中的容执行逻辑异或操作。结果存在累加器A中。*RLdata,A;直接地址单元中的容和累加器A的容执行逻辑异或操作。结果存在直接地址单元中。*RLA,Ri;累加器A的容和工作存放器Ri指向的地址单元中的容执行逻辑异或操作。结果存在累加器A中。MCS-51控制转移指令控制转移指令用于控制程序的流向,所控制的围即为程序存储器区间,MCS-51系列单片机的控制转移指令相对丰富,有可对64kB程序空间地址单元进展访问的长调用、长转移指令,也有可对2kB字节进展访问的绝对调用和绝对转移指令,还有在一页围短相对转移及其它无条件转移指令,这些指令的执行一般都不会对标志位有影响。[1].无条件转移指令〔4条〕这组指令执行完后,程序就会无条件转移到指令所指向的地址上去。长转移指令访问的程序存储器空间为16地址64kB,绝对转移指令访问的程序存储器空间为11位地址2kB空间。LJMPaddr16;addr16→〔PC〕,给程序计数器赋予新值〔16位地址〕AJMPaddr11;〔PC〕+2→〔PC〕,addr11→〔PC10-0〕程序计数器赋予新值〔11位地址〕,〔PC15-11〕不改变SJMPrel;〔PC〕+2+rel→〔PC〕当前程序计数器先加上2再加上偏移量给程序计数器赋予新值JMPA+DPTR;〔A〕+〔DPTR〕→〔PC〕,累加器所指向地址单元的值加上数据指针的值给程序计数器赋予新值[2].条件转移指令〔8条〕程序可利用这组丰富的指令根据当前的条件进展判断,看是否满足*种特定的条件,从而控制程序的转向。JZrel;A=0,〔PC〕+2+rel→〔PC〕,累加器中的容为0,则转移到偏移量所指向的地址,否则程序往下执行JNZrel;A≠0,〔PC〕+2+rel→〔PC〕,累加器中的容不为0,则转移到偏移量所指向的地址,否则程序往下执行CJNEA,data,rel;A≠〔data〕,〔PC〕+3+rel→〔PC〕,累加器中的容不等于直接地址单元的容,则转移到偏移量所指向的地址,否则程序往下执行CJNEA,*data,rel;A≠*data,〔PC〕+3+rel→〔PC〕,累加器中的容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行CJNERn,*data,rel;A≠*data,〔PC〕+3+rel→〔PC〕,工作存放器Rn中的容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行CJNERi,*data,rel;A≠*data,〔PC〕+3+rel→〔PC〕,工作存放器Ri指向地址单元中的容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行DJNZRn,rel;〔Rn〕-1→〔Rn),〔Rn)≠0,〔PC〕+2+rel→〔PC〕工作存放器Rn减1不等于0,则转移到偏移量所指向的地址,否则程序往下执行DJNZdata,rel;〔Rn〕-1→〔Rn),〔Rn)≠0,〔PC〕+2+rel→〔PC〕直接地址单元中的容减1不等于0,则转移到偏移量所指向的地址,否则程序往下执行[3].子程序调用指令〔1条〕子程序是为了便于程序编写,减少那些需反复执行的程序占用多余的地址空间而引入的程序分支,从而有了主程序和子程序的概念,需要反复执行的一些程序,我们在编程时一般都把它们编写成子程序,当需要用它们时,就用一个调用命令使程序按调用的地址去执行,这就需要子程序的调用指令和返回指令。LCALLaddr16;长调用指令,可在64kB空间调用子程序。此时〔PC〕+3→〔PC〕,〔SP〕+1→〔SP〕,〔PC7-0〕→〔SP〕,〔SP〕+1→〔SP〕,〔PC15-8〕→〔SP〕,addr16→〔PC〕,即分别从堆栈中弹出调用子程序时压入的返回地址ACALLaddr11;绝

温馨提示

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

评论

0/150

提交评论