《微控制器技术与应用》学习情景三 微控制器汇编指令系统_第1页
《微控制器技术与应用》学习情景三 微控制器汇编指令系统_第2页
《微控制器技术与应用》学习情景三 微控制器汇编指令系统_第3页
《微控制器技术与应用》学习情景三 微控制器汇编指令系统_第4页
《微控制器技术与应用》学习情景三 微控制器汇编指令系统_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

学习情景三微控制器汇编指令系统3.1任务1微控制器汇编语言初步3.2任务2寻址方式3.3任务3数据传送类指令3.4任务4算术运算类指令3.5任务5控制转移类指令3.6任务6汇编语言程序设计下一页返回学习情景三微控制器汇编指令系统3.7任务7简单汇编软硬结合应用3.8情景评价3.9情景总结上一页返回3.1任务1微控制器汇编语言初步3.1.1任务内容就汇编语言指令本身而言是一组二进制的代码,为了便于记忆,将这些代码用具有一定意义的符号表示,称之为指令助记符,一般以该指令功能的英文名称或其缩写形式表示(如用助记符“MOV”表示传送指令,用助记符“ADD”表示加法指令等)。每条指令有其固定的指令格式和具体的符号意义,编程时必须严格遵守。指令按功能分类主要包括数据传送指令、算术运算指令、逻辑运算指令、控制转移指令、位操作指令。了解和掌握以上内容是后续学习指令和程序的基础。下一页返回3.1任务1微控制器汇编语言初步3.1.2任务实施汇编语言指令格式MCS一51汇编语言表示的指令格式如下:[标号:]操作码助记符[操作数1,操作数2,操作数3];[注释]在指令格式中,方括号中的内容为可选项,不一定都有。各字段的意义如下:标号:表示该指令所在的地址。并不是每条指令都必须有标号,通常在程序分支、转移所需要的地方才加上一个标号。标号是以字母开始的,由1一8个字符(字母或数字)组成,标号不能使用汇编语言中已经定义过的符号名,如指令助记符、寄存器名、伪指令等。标号以“:”结尾。特别应注意的是,在一个程序中不允许重复定义标号,即同一程序内不能在两处及两处以上使用同一标号。上一页下一页返回3.1任务1微控制器汇编语言初步操作码:表示该语句要执行的操作内容,是每条指令必有的部分。操作码用指令助记符表示。操作码后面至少留一个空格,使其与后面的操作数分隔。操作数:表示操作码的操作对象,常用符号(如寄存器、标号)、常量(如立即数、地址值等)来表示。操作码和操作数之间用若干空格分隔,而各操作数之间用逗号“,”分隔。指令的操作数可以有3个、2个、1个或没有(如空操作指令NOP)。操作数的个数因指令功能而异。上一页下一页返回3.1任务1微控制器汇编语言初步

2.指令分类该指令系统使用了42种操作码助记符来描述,共有33种操作功能。其中有的操作可以有多种寻址方式,这样就构成了111条指令。其分类如下:按功能分类:数据传送指令29条,算术运算指令24条,逻辑运算指令24条,控制转移指令17条,位操作指令17条。按指令字长分类:单字节指令49条,双字节指令46条,三字节指令16条。按执行时间分类:单机器周期指令64条,双机器周期指令45条,四机器周期指令2条。上一页下一页返回3.1任务1微控制器汇编语言初步3.1.3任务扩展在分类介绍指令之前,先把描述指令的一些符号意义作一简单的介绍。Rn:当前选中的寄存器区的8个工作寄存器R0~R7;Ri:当前选中的寄存器区中可作间接寻址的两个工作寄存器R0,R1;direct;8位的内部数据存储器单元的地址,可以是内部RAM单元的地址及SFR的地址;#data;8位立即数,立即数前面必须加“#”;#data16:16位立即数;addrl6;16位目的地址,用于LCALL和LJMP指令中,范围是64KB程序存储器空间;上一页下一页返回3.1任务1微控制器汇编语言初步

addr11;11位目的地址,用于ACALL和AJMP指令中,目的地址必须与下一条指令的第一字节在同一个2KB程序存储器地址空间之内;rel;8位带符号偏移量,用于SJMP和所有条件转移指令中;DPTR:数据指针,可用作16位地址寄存器;bit:内部RAM或SFR中的直接寻址位;A;累加器;B:特殊功能寄存器,用于MUL和DIV指令中;CY:进位标志或进位位,是布尔处理机中的运算器;@:间接寄存器或基址寄存器的前缀,如@Ri;上一页下一页返回3.1任务1微控制器汇编语言初步

/:位操作数的前缀标志,在位操作指令中表示对该位操作数先求反再参与操作,但不影响该位操作数原值,如/bit;(x);x中的内容;((x));x中内容作为地址单元中的内容;←:箭头左边的内容被箭头右边的内容所代替;?:数据交换;MYM:当前指令的起始地址。上一页返回3.2任务2寻址方式3.2.1任务内容MCS一51系列微控制器共有7种寻址方式,包括立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址,寻址方式是汇编程序设计中最基本的内容之一,也是理解程序执行过程的重要知识。对于今后指令的灵活使用以及编程具有重要意义。3.2.2任务实施1.立即寻址操作数直接由指令给出,该操作数被称为立即数。一般立即数可以是8位二进制数,也可以是16位二进制数。立即数只能作为源操作数,不能作为目的操作数。使用时在立即数前面加“#”号标志。下一页返回3.2任务2寻址方式2.直接寻址直接寻址是指操作数在指令给出的地址单元中。直接寻址的地址单元(直接地址)取值范围必须在00H~FFH之间。

3.寄存器寻址寄存器寻址就是所需查找的操作数在寄存器中。这种寻址方式中所对应的寄存器号隐含在机器码中。寄存器寻址可以提高指令执行速度,缩短指令编码长度。上一页下一页返回3.2任务2寻址方式寄存器寻址方式可以访问的存储空间为:(1)四组工作寄存器RO一R7共犯个工作寄存器,由程序状态字PSW中的RS1两位状态来进行当前寄存器组的选择;特殊功能寄存器A,AB,DPTR。(2)在MCS-51汇编语言指令系统中,累加器A有三种不同的表达方式,即A和EOH,分属不同的寻址方式,但指令的执行结果完全相同。上一页下一页返回3.2任务2寻址方式

4.寄存器间接寻址寄存器间接寻址就是所要查找的操作数位于以寄存器的内容为地址的单元中。这种寻址方式相当于两次寻址。寄存器间接寻址使用的寄存器为Ri或DPTR,并在寄存器名前面加“@”标志。和寄存器寻址相比,寄存器间接寻址时寄存器中存放的是操作数所在的地址,寄存器寻址时寄存器中存放的是操作数。寄存器间接寻址通过@Ri(只有@RO和@R1两种形式)可以访问内部RAM低128单元(地址范围OOH~7FH)和片外RAM的256个存储单元,使用数据指针DPTR作为间址(@DPTR)可以访问外部RAM64KB空间。在执行入栈(PUSH)和出栈(POP)指令时,对堆栈区的数据访问默认采用堆栈指针SP作寄存器间接寻址。上一页下一页返回3.2任务2寻址方式

5.变址寻址(基址寄存器+变址寄存器间接寻址)这种寻址方式是以16位寄存器(数据指针DPTR或程序计数器指针PC)作为基址寄存器,以累加器A作为变址寄存器,并以两者内容相加形成新的16位地址作为操作数所在的地址读取数据的。变址寻址只能对程序存储器中的数据作寻址操作。由于程序存储器是只读存储器,因此变址寻址操作只有读操作而无写操作,这种方式常用于对程序存储器中数据表的查表操作。上一页下一页返回3.2任务2寻址方式

6.相对寻址相对寻址用于访问程序存储器,只出现在转移指令中,用于程序控制。这里的“寻址”不是寻找操作数的地址,而是要得到程序跳转位置对应的口标地址。它以PC的当前值(指当前转移指令的下一条指令所在的首地址)加上指令中给出的相对偏移量rel形成目的地址,即:目的地址=转移指令下一条指令所在的首地址+rel=转移指令首地址+转移指令字节数+rel相对偏移量rel是一个带符号的8位二进制数,以补码形式出现。所以程序的转移范围为:以PC当前值为中心-128~+127字节之间。上一页下一页返回3.2任务2寻址方式

7.位寻址位寻址是对位地址中的内容做位操作的寻址方式。采用位寻址方式的指令,其操作数是8位二进制数中的某一位,因此,在指令中必须明确指出位地址。80C51系列微控制器内部RAM中有一个可进行位寻址的区域,其地址为20H一2FH,总共16个单元,其中每个单元中的每一位都可以进行位寻址。如特殊功能寄存器的地址值可以被8整除,则该特殊功能寄存器也可以进行位寻址。这些特殊功能寄存器及其位地址如表3一1所示。位寻址类似于直接寻址,由指令给出位地址,操作数位于位地址中,而直接寻址给出的是字节地址。两者虽然都是用两位十六进制数表示,但在指令中是可以区分的。上一页下一页返回3.2任务2寻址方式这些位地址在指令中有四种表达方式。①直接使用位地址②单元地址加位的表示法③位名称表示法④特殊功能寄存器名加位的表示法3.2.3任务扩展操作数的寻址方式及相关的寻址空间如表3-2所示。上一页返回3.3任务3数据传送类指令3.3.1任务内容数据传送类指令分为内部RAM数据传送指令、外部RAM数据传送指令、查表等三类共有29条指令。数据传送指令一般不影响标志位(这里的标志是指CY,AC和OV,不包括检验累加器奇偶性的标志P),只有目的操作数为A的数据传送指令将影响奇偶标志位P,学习中应加以区别。本任务中讨论了各种传送指令的功能、格式以及具体应用。下一页返回3.3任务3数据传送类指令3.3.2任务实施1.内部RAM数据传送指令(1)通用的传送指令MOV指令格式:MOV[目的操作数〕,[源操作数〕功能:把源操作数传送到目的操作数指定的存储单元之中,而不改变源操作数。即该指令是“复制”而不是“搬家”。通用传送指令共有16条,如表3一3所示。以累加器A为目的操作数的传送指令会影响PSW中的奇偶标志位。其余传送指令对所有标志位均无影响。MOV指令的数据传送路线如图3.7所示。从图上可以看出立即数#data只能作源操作数,寄存器寻址和寄存器间接寻址不能同时出现在操作数中,必须通过A间接实现数据传送。上一页下一页返回3.3任务3数据传送类指令(2)数据交换指令①字节交换指令XCHXCHA,Rn;(A)H(Rn)XCHA,direct;(A)。(direot)XCHA,@Ri;(A)H((Ri))这组指令的功能是将累加器A的内容和源操作数互相交换。②半字节交换指令XCHDXCHDA,@Ri;(A)3~O←→((Ri))3~0功能:将累加器A的低4位与源操作数的低4位进行交换,各自的高4位不变。上一页下一页返回3.3任务3数据传送类指令③累加器高低半字节交换指令。SWAPA;(A)7~4←→(A)~0功能:将累加器A中的高4位与低4位交换。④栈操作指令。堆栈的操作原则遵循“先进后出”的原则,由堆栈指针SP自动跟踪栈顶地址。微控制器堆栈编址采用向上生成方式,即栈底占用较低地址,栈顶占用较高地址。数据写入堆栈称为入栈,数据从堆栈读出称为出栈。上一页下一页返回3.3任务3数据传送类指令入栈指令PUSHPUSHdirect;SP←(SP)+1,(SP)←(direct)功能:把堆栈指针加1后,将直接地址单元的内容送进栈顶单元,原直接地址单元内容不变。该指令的操作数只有一个为源操作数,目的操作数已默认为堆栈区的栈顶位置。2.外部RAM数据传送指令(1)用@RI进行间接寻址的指令MOVXA,@Ri;A←((Ri))MOVX@Ri,A;(Ri)←(A)功能:通过累加器A与外部RAM低256字节单元进行数据传送。上一页下一页返回3.3任务3数据传送类指令(2)用@DPTR进行间接寻址的指令MOVXA,@DPTR;A←((DPTR))MOVX@DPTR,A;(DPTR)←(A)功能:通过累加器A与外部RAM进行数据传送。DPTR为16位数据指针,该指令可寻址外部RAM64KB范围(0000H~OFFFFH)。注意:m片内和片外数据传送用的助记符是不一样的,MOV用于片内RAM,MOVX用于片外RAM忽片外数据传送与累加器A有关③若片外RAM的地址小于256字节,常采用@Ri;若片外RAM的地址大于256字节,则常采用@DPTR角MOVX常用于对外部数据存储器及外设的读写操作上一页下一页返回3.3任务3数据传送类指令3.3.3任务扩展数据传送类指令是程序设计中使用最多的一类指令,正确灵活地应用它们,是保证程序设计质量的重要环节。下面通过例题说明使用这类指令的方法和技巧。上一页返回3.4任务4算术运算类指令3.4.1任务内容算术运算指令包括加法、减法、乘法和除法指令,这四类指令能够完成最基本的算术运算功能,使用时要注意根据不同的要求,选择正确的运算指令。尤其在多字节运算过程中注意计算的结果对标志位的影响等问题,学习过程中要结合数制知识进行理解。本任务讨论了算术运算指令的功能和格式,并结合具体实例进行了应用。下一页返回3.4任务4算术运算类指令3.4.2任务实施1.加法指令(1)不带进位的加法指令ADD若运算结果中D7位产生进位,则进位标志CY被置1,否则CY被清叭若结果中的D3位产生进位,则辅助进位标志AC被置1,否则AC被清0。上一页下一页返回3.4任务4算术运算类指令对溢出标志OV的影响是:如果结果的D6位有进位而D7位无进位,或者D7位有进位而D6位无进位,则OV标志被置1,否则被清0。从另一方面看,若把参加运算的数看作是带符号数,如果出现两个正数相加得到的是负数,或两个负数相加为正数,说明运算结果超过八位二进制补码所表示的范围,OV被置1,否则OV被清0。奇偶标志位P将随累加器A中1的个数的奇偶性变化,若A中1的个数为奇数,则P置1,否则P置0。上一页下一页返回3.4任务4算术运算类指令(2)带进位加法指令ADDC带进位加法运算指令常用于多字节加法运算。指令如下ADDCA,Rn;A←(A)+(Rn)+(CY)ADDCA,direct;A←(A)+(direot)+(CY)ADDCA,@Ri;A←(A)+((Ri))+(CY)ADDCA,#data;A←(A)+data+(CY)上一页下一页返回3.4任务4算术运算类指令2.减法指令带进位减法指令SUBB该指令的执行会对PSW中的进位标志CY、辅助进位标志AC,溢出标志OV及奇偶校验标志P产生影响。如果运算中被减数D7位需要借位,则CY=1,否则CY=叭如果D3需要借位,则AC=1,否则AC=0。如果D6位需要借位而D7位不需借位或者D7位需要借位而D6位不需借位,则溢出标志位OV-1,否则OV清0。上一页下一页返回3.4任务4算术运算类指令若把参加运算的数看作是带符号数,如果出现一个正数减一个负数得到的是负数,或一个负数减一个正数结果为正数,说明运算结果超过八位二进制补码所表示的范围,则OV被置1,否则OV被清0}

3.乘除指令乘法指令MULMULAB;BA←(A)x(B)这条指令的功能是把累加器A和寄存器B中的无符号8位整数相乘,其16位积的低位字节存放在累加器A中,高位字节存放在寄存器B中。该指令会影响进位标志CY,溢出标志OV及奇偶校验标志P。如果积大于255(OFFH),则溢出标志OV-1,否则OV清零。进位标志CY总是清零。奇偶校验标志P取决于累加器A中1的个数。上一页下一页返回3.4任务4算术运算类指令

4.除法指令DIV除法指令DIVDIVAB;A←(A)/(B)的商,B←(A)/(B)的余数这条指令的功能是用累加器A的无符号8位整数除以寄存器B中的无符号8位整数,所得商的整数部分存放在累加器A中,商的余数部分存放在寄存器B中。该指令会影响进位标志CY,溢出标志OV及奇偶校验标志P如果除数B中的内容为0(即除数为0),则A和B中的内容不变,溢出标志OV-1,否则OV清零。进位标志总是清零。奇偶校验标志P取决于累加器A中1的个数。上一页返回3.5任务5控制转移类指令3.5.1任务内容MCS-51系列微控制器的控制转移类指令相对丰富,有可对64KB程序空间地址单元进行访问的长调用、长转移指令,也有可对2KB字节进行访问的绝对调用和绝对转移指令,还有在一页范围内短相对转移及其他无条件转移指令,这些指令的执行一般都不会对标志位产生影响。这些指令的灵活使用对于程序结构的优化、执行效率的提高具有重要作用。本任务主要讨论、学习以及应用该类指令的功能、格式。下一页返回3.5任务5控制转移类指令3.5.2任务实施1.无条件短跳转指令格式:AJMPaddr11这是2KB范围内的无条件跳转指令。它把程序存储器划分为32个区,每个区为2KB。转移的口标地址必须与AJMP后面一条指令的第一个字节在同一个2KB的范围之内(即转移目标地址必须与AJMP下一条指令的地址A15一All相同),否则将引起混乱。该指令执行时先将PC的内容加2,然后将11位地址送入PC.10~PC.0,而PC.15~PC.11保持不变。上一页下一页返回3.5任务5控制转移类指令2.相对转移指令格式:SJMPrel这是一条无条件跳转指令。执行时在(PC)+2后,把指令中有符号的相对偏移量rel加到PC上,计算出偏移地址。因此,转移的口标地址可以在这条指令前128字节到后127字节之间。

3.长跳转指令格式:LJMPaddrl6这条指令的功能是直接将指令中的操作数,即16位地址,装入PC,使程序无条件转移到指定的地址处执行。这条指令是一条可以在64KB范围内转移的指令,该指令不影响标志位。上一页下一页返回3.5任务5控制转移类指令

4.散转指令格式:JMP@A+DPTR这条指令的功能是把累加器A中的8位无符号数据指针DPTR中的16位数相加,结果作为下一条指令的地址送入PC,不改变累加器A和数据指针DPTR的内容,也不影响标志位。条件转移指令是当满足某一特定条件时执行转移操作的指令。条件满足时转移(相当于一条相对转移指令),条件不满足时则顺序执行下面一条指令。转移的目的地址在以下一条指令的起始地址为中心的256字节范围内(-128~+127)。当条件满足时,把PC的值加到下一条指令的第一个字节地址,再把有符号的相对偏移量:e1加到PC上,计算出转移地址。上一页下一页返回3.5任务5控制转移类指令5.条件转移指令格式:JZrel;(A)=0时转移JNZrel;(A)≠0时转移JCrel;CY=1时转移JNCrel;CY=0时转移JBbit,rel;(bit)=1时转移JNBbit,rel;(bit)=0时转移JBCbit,rel;(bit)=1时转移,并清“0"bit位89C51微控制器没有专门的比较指令,但是提供了如下4条比较不相等转移指令:C.TNEA.direct.rel上一页下一页返回3.5任务5控制转移类指令C.TNEA.#data.relC.TNERn.#data.rel;n=0~7C.TNE@Ri.#data.rel;i=0或1这级指令的功能是比较前面两个操作数的大小,如果不相等则转移。在把PC值加到下一条指令的起始地址后,再把指令最后一个字节的有符号的相对偏移量加到PC上。

6.减1不为0转移指令格式:DJNZRn,rel;n=0~7DJNZdirect,rel这组指令把源操作数(Rn,direct的内容减1,并将结果回送到源操作数中。如果相减的结果不为0,则转移到由相对偏移量rel计算得到的目的地址。上一页下一页返回3.5任务5控制转移类指令

7.子程序短调用指令格式:ACALLaddr11这是一条2KB范围内的子程序调用指令。执行时先把PC的值加2获得下一条指令的地址,然后把获得的16位地址压进堆栈(PCL先进栈,PCH后进栈),并将堆栈指针SP的值加2,最后把PC值的高5位与指令提供的11位地址addr11相连接(PC15PC11,A10~AO),形成子程序的入口地址并送入PC,使程序转向子程序。所调用的子程序的起始地址必须在与ACALL指令后面一条指令的第一个字节在同一个2KB区域的程序存储器中。上一页下一页返回3.5任务5控制转移类指令

8.子程序长调用指令格式:LCALLaddrl6这条指令无条件地调用位于16位地址addrl6处的子程序。它把PC的值加3以获得下条指令的地址并将其压入堆栈(先低位字节后高位字节),同时把SP的值加2,接着把指令的第2和第3字节(A15~A8,A7~AO)分别装入PC的高8位和低8位字节中,然后从PC所指出的地址开始执行程序。LCALL指令可以调用64KB范围内程序存储器中的任何一个子程序,不影响任何标志位。9.子程序返回指令格式:RET这条指令的功能是从堆栈中弹出PC的高8位和低8位字节,同时把SP的值减2,并从PC指向的地址开始继续执行程序,不影响任何标志位。上一页下一页返回3.5任务5控制转移类指令10.中断返回指令格式:RETI这条指令的功能与RET指令相似,不同的是它还对微控制器的内部中断状态标志清0。11.空操作指令格式:NOP这条指令只完成任务(PC)+1,而不执行任何其他操作。3.5.3任务扩展除上述讨论的各种指令外,MCS-51微控制器内部RAM中有一个位寻址区,还有一些特殊功能寄存器也可以进行位寻址,提供了丰富的位操作指令,这些指令也是较为常用的。上一页下一页返回3.5任务5控制转移类指令

1.位数据传送指令格式:MOVC,bitMOVbit,C这组指令的功能是把由源操作数指出的位变量送到目的操作数指定的位单元中。其中一个操作数必须为进位标志,另一个操作数可以是任何可寻址位。上一页下一页返回3.5任务5控制转移类指令2.位变量修改指令格式:CLRC;0→CYCLRbit;0→bitCPLC;对CY的内容取反CPLbit;对bit位取反SETSC;1→CYSETSbit;1→bit这组指令对操作数所指出的位进行清零、取反、置“1”的操作,不影响其他标志位。上一页下一页返回3.5任务5控制转移类指令3.位变量逻辑与指令格式:ANLC,bitANLC,/bit这组指令的功能是将进位标志与指定的位变量(或位变量的取反值)相“与”,结果送到进位标志,不影响别的标志位。4.位变量逻辑或指令格式:ORLC,bitORLC,bit这组指令的功能是将进位标志与指定的位变量(或位变量的取反值)相“或”,结果送到进位标志,不影响别的标志位。上一页返回3.6任务6汇编语言程序设计3.6.1任务内容汇编语言程序设计具有广泛的应用,本任务中主要包括了汇编语言程序格式、常用伪指令的格式及使用、应用程序设计的要求和步骤等内容,通过学习和讨论,能够独立分析一个简单的工程问题,较为规范地规划并编制程序。3.6.2任务实施1.汇编语言格式MCS-51微控制器汇编语言程序由若干指令行组成,其一般格式如下:[标号:〕操作码[操作数〕[;注释]其中:“标号”是可选项,可用来表示程序的地址。“操作码”是MCS一51微控制器的指令助记符。下一页返回3.6任务6汇编语言程序设计“操作数”是可选项,它依赖于不同的89C51指令。有些指令不需要操作数,有些指令则需要1~3个操作数。操作数可以是数字、符号或地址。十进制数以字符“C”为后缀,十六进制数以字符“H”为后缀,八进制数以字符“0”为后缀,二进制数以字符“B”为后缀。省略后缀时则默认为十进制数。立即数的前面须冠以符号“#”。“注释”也是可选项,它是为理解程序含义而加上的文字解释,注释文字前面必须有一个分号。2.常用伪指令在对汇编语言源程序进行汇编时,MCS-51指令行将被转换为一一对应的口标代码,它们可以被微控制器CPU执行。另外,汇编语言源程序还包含一些不能被微控制器CPU执行的指令,称为“汇编伪指令”。它们提供汇编控制信息,用于在汇编过程中执行一些特殊操作,而不会被转换为口标代码。下面介绍一些常用的汇编伪指令。上一页下一页返回3.6任务6汇编语言程序设计

(1)设置起始地址一ORG一般格式:ORGXXXXH其中,XXXX为4位十六进制数,表示程序的起始地址。ORG伪指令总是出现在每段程序的开始处,用于对该段程序在程序存储器中进行定位。需要注意的是,由ORG设置的程序空间地址应从小到大,不能重复。

(2)定义字节一DB一般格式:[标号:〕DB项或项表其中,“项或项表”是单个字节数据或多个由逗号隔开的单字节数据,它们可以是数值,也可以是用引号括起来的ASCII字符串。DB伪指令的功能是将项或项表的数据存入由标号(地址)开始的连续存储器单元之中。上一页下一页返回3.6任务6汇编语言程序设计(3)定义字一DW一般格式:[标号:〕DW项或项表DW的基本含义与DB相似,不同之处在于DW用于定位16位数据。

(4)保留存储器空间一DS一般格式:[标号:]DS表达式DS伪指令的功能是从标号指定的存储器地址开始,保留由表达式的值规定的存储器空间单元。

(5)为标号赋值一EQU一般格式:字符名EQU表达式EQU焦指令的功能是将表达式的值赋给“字符名”。“字符名”一旦赋值之后,它的值在整个程序中就不能再改变。注意,这里“字符名”与标号不同,它后面没有冒号。上一页下一页返回3.6任务6汇编语言程序设计(6)源程序结束——END格式:ENDEND是一个程序结束标志,通常出现在汇编语言源程序的结尾。

3.应用程序设计步骤和要求在进行实际的应用程序设计时,首先要对任务进行抽象理解并建立用以描述其特性或规律的数学模型;其次要确定算法,算法的优劣很大程度上决定了程序的效率,可以说算法是程序的“核心”。另外,画出程序框图,便于用图解的形式描述程序流程。选择好编程语言,并对内存资源进行合理分配,保证程序运行和使用效率,同时,也为后期进行模块化的分工编程打下基础。上一页下一页返回3.6任务6汇编语言程序设计程序设计包含了对主程序和子程序的设计。主程序是完成某个完整任务的程序,它通常包含了初始化和无穷循环两部分(简单的任务,主程序中可以包含处理功能),它可以调用子程序。子程序是能完成一个处理任务或过程的程序,能被其他程序反复调用。它可以是各种独立功能子程序,如中断、数据采集、显示、存储、运算子程序等。一般在主程序的循环体中根据需要不断调用各种独立功能子程序,从而完成微控制器应用系统规定的任务。在源程序编制好以后还要进行调试,参照相关评价指标对程序的结构、算法以及代码进行优化。具体程序设计步骤如下:①分析问题,明确要求。②建立数学模型,确定算法。③选择程序设计语言。④画程序流程图,用图解来描述和说明解题步骤。上一页下一页返回3.6任务6汇编语言程序设计⑤分配内存单元,正确、合理使用存储器和寄存器。⑥编写源程序。⑦调试程序、优化、修改和最后确定源程序。评价程序优劣的因素有

温馨提示

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

评论

0/150

提交评论