版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章:MCS-51程序设计计算机与通信工程学院李耀明一、汇编语言概述1、指令系统语句格式[<标号>]:<操作码>[<操作数>];[<注释>]指令编码长短:单字节,双字节,三字节执行周期:一个机器周期占12个振荡周期,单周期指令,双周期,4周期寻址方式:指令中所规定的寻找操作地址的方式立即、直接、寄存器、寄存器间接寻址、基址加变址、相对寻址、位寻址指令分类:数据传送、算术、逻辑、位操作、控制转移2、程序设计的步骤(1)分析问题,编制说明要解决问题的程序框图。(2)确定数据结构、算法、工作单元、变量设定(与高级语言不同)(3)根据所用的指令系统,按照已编制的程序框图用汇编语言编制出源程序。(4)将编制出的程序在计算机上调试,直至实现预定的功能。二、程序设计分类1、顺序程序:执行时按顺序一条条地执行指令2、分支程序:当程序不再顺序执行,而向一个方向或多个方向转移时,叫分支程序。3、循环程序:对于需要反复的程序段,常采用循环办法,以缩短程序。4、子程序及其调用程序主程序使用子程序时,用调用指令(ACALL),子程序最后放一条RET指令。三、程序设计准则结构清晰:便于分析层次分明:便于阅读语言简洁:便于分析易于理解:便于阅读4.1简单程序设计简单程序又称顺序程序。计算机是按指令在存储器中存放的先后次序来顺序执行程序的。除非用特殊指令让它跳转,不然它会在PC控制下执行。例4-1两个8位无符号数相加ORG0000HAJMPBEGINORG0030HBEGIN:MOV40H,#01HMOV41H,#02HLOOP:MOVR0,#40HMOVA,@R0INCR0ADDA,@R0INCR0MOV@R0,AJMPLOOPEND开始R0←40HA←(R0)A送(42H)(40H)+(41H)和送A返回图4-1例1流程图例:将加数和被加数分别送入40H、41H单元,加完后和送入42H单元例4-2将两个半字节数合并成一个单字节数程序ORG0000HAJMPstartORG0030HSTART:MOVsp,#60HMOV40h,#01hMOV41h,#02hloop:MOVR1,#40HMOVA,@R1ANLA,#0FH;取第一个半字节SWAPAINCR1XCHA,@R1;取第二字节ANLA,#0FH;取第二个半字节ORLA,@R1;拼字INCR1MOV@R1,A;存放结果AJMP$END执行完后如何不改变内存和寄存器的值?开始(40H)内容送A,屏蔽高位,交换高低位A←(R0)A与(R1)或后送(42H)取(41H)内容,屏蔽高位,送A返回图4-2例2流程图4.2分支程序设计在处理实际事务中,只用简单程序设计的方法是不够的。因为大部分程序总包含有判断、比较等情况。根据判断、比较的结果转向不同的分支例4-3:两个无符号数比较大小设两个连续外部RAM单元ST1和ST2中存放不带符号的二进制数,找出其中的大数存入ST3单元中。ST1EQU8040HORG0000HJMPSTARTORG0030HSTART:MOVDPTR,#ST1MOVA,#12HMOVX@DPTR,AINCDPTRMOVA,#34HMOVX@DPTR,ALOOP:CLRC;进位位清零MOVDPTR,#ST1;设数据指针MOVXA,@DPTR;取第一数MOVR2,A;暂存R2INCDPTRMOVXA,@DPTR;取第二个数SUBBA,R2;两数比较JNCBIG1XCHA,R2;第一数大BIG0:INCDPTRMOVX@DPTR,A;存大数SJMP$BIG1:MOVXA,@DPTR;第二数大SJMPBIG0END开始设置指针DPTR初始值取第一个数存入R2取第二个数后者减前者进位标志是否为0?存后者结束存前者YN图5-3例4流程例4-4:编制计算符号函数y=SGN(x)的程序AREEQU8040HBUFEQU8060HORG0000HJMPSTARTORG0030HSTART:MOVDPTR,#AREMOVA,#0F0HMOVX@DPTR,ALOOP:MOVDPTR,#ARE;进位位清零MOVXA,@DPTR;取第一数JZSULJBACC.7,NEGMOVA,#01HSUL:MOVDPTR,#BUFMOVX@DPTR,AJMPLOOPNEG:MOVA,#0FFHSJMPSULEND4.3循循环程序设计计简单程序,每每条指令只执执行一次分支程序则根根据条件的不不同,会跳过过一些指令,,执行另一些些指令。它们的特点是是,每一条指指令至多执行行一次。在处理实际事事务时,有时时会遇到多次次重复处理的的问题,用循循环程序的方方法来解决就就比较合适。。循环程序中中的某些指令令可以反复执执行多次。采用循环程序序,使程序缩缩短,节省存存储单元。重重复次数越多多,循环程序序的优越性就就越明显。程序的执行时时间并不节省省。由于要有有循环准备、、结束判断等等指令,速度度要比简单程程序稍慢些。。循环程序组成成循环程序一般般由五部分组组成:1、初始化部部分:为循环程序做做准备。如:设置循环环次数计数器器的初值,地地址指针置初初值,为循环环变量赋初值值等。2、处理部分分:为反复执行的的程序段,是是循环程序的的实体。3、修改部分分:每执行一次循循环体后,对对指针作一次次修改,使指指针指向下一一数据所在位位置,为进入入下一轮处理理作准备。4、控制部部分:根据循环次次数计数器器的状态或或循环条件件,检查循循环是否能能继续进行行,若循环环次数到或或循环条件件不满足,,应控制退退出循环,,否则继续续循环。通常2、3、4部分分又称为循循环体。5、结束部部分:分析及存放放执行结果果。循环程序的的结构循环程序的的结构一般般有两种形形式:先进入处理理部分,再再控制循环环。至少执执行一次循循环体。先控制循环环,后进入入处理部分分。即先根根据判断结结果,控制制循环的执执行与否,,有时可以以不进入循循环体就退退出循环程程序。主要语句寻址方式寄存器间接接寻址MOVA,@RiMOVXA,@DPTRMOVXA,@Ri基址寄存器器+变址寄寄存器间接接寻址MOVCA,@A+DPTRMOVCA,@A+PC循环计数DJNZRn,relDJNEA,direct,relJZ(JNZ,JC,JNC,JB,JNB)rel例4-5工作单元清清零将40H为为起点的8个单元清清“0”ORG0000HCLEAR:CLRA;;A清0MOVR0,#40H;;确确定清0单单元起始地地址MOVR7,#08;;确确定要清除除的单元个个数LOOP::MOV@R0,A;;清单单元INCR0;;指向下下一个单元元DJNZR7,,LOOP;控制制循环END例4-5工作单元清清零例如:设有有50个外外部RAM单元要清清“0”,,即为循环环次数存放放在R2寄寄存器中,,其首址存存放在DPTR中,,设为2000HORG0000HMOVDPTR,#2000HCLEAR:CLRAMOVR2,#32H;;置置计数值LOOP::MOVX@DPTR,AINCDPTR;;修修改地地址指针DJNZR2,,LOOP;;控制制循环END例4-5工作单元清清零写成通用子子程序形式式:CLEAR:CLRALOOP::MOVX@DPTR,AINCDPTR;;修改改地址指针针DJNZR2,LOOP;;控控制循环RET完整调用ORG0000HMOVDPTR,#2000HMOVR2,#50ACALLCLEARSJMP$CLEAR:CLRALOOP::MOVX@DPTR,,AINCDPTR;;修改改地址指针针DJNZR2,LOOP;;控控制循环RETEND例4-6多个单字节节数据求和和已知有n个个单字节数数据,依次次存放在内内部RAM40H单元开始始的连续单单元中。要要求把计算算结果存入入R2,R3中(高高位存R2,低位存存R3)。。程序如下::ORG8000HSAD:MOVR0,,#40H;;设数据据指针MOVR5,#NUM;;计计数值0AH→R5SAD1::MOVR2,,#0;;和和的高8位位清零MOVR3,#0;;和的的低8位清清零LOOP::MOVA,R3;;取加加数ADDA,@R0MOVR3,A;;存和的的低8位JNCLOP1;;无无进位,直直接计算高高8位INCR2;;有有进位,,和的高8位+1LOP1::INCR0;;指向下下一数据地地址DJNZR5,,LOOPRETNUMEQU0AHEND上述程序中中,用R0作间址寄寄存器,每每作一次加加法,R0加1,数数据指针指指向下一数数据地址,,R5为循循环次数计计数器,控控制循环的的次数。例4-7测试字符串串长度设有一串字字符依次存存放在从50H单元元开始的连连续单元中中,该字符符串以回车车符(0DH)为结结束标志,,测得的字字符串长度度存入R2中。测字符串长长度程序是是将该字符符串中的每每一个字符符依次与回回车符相比比,若比较较不相等,,则统计字字符串长度度的计数器器加1。继继续比较,,若比较相相等,则表表示该字符符串结束,,计数器中中的值就是是字符串的的长度。程序如下::ORG0000HCONT::MOVR2,,#00H;;初始长长度设置MOVR0,#50H;;数据指针针R0置初初值NEXT::CJNE@R0,#0DH,,LOOP1RETLOOP1:INCR0INCR2SJMPNEXTEND待测字符以以ASCII码形式式存放在RAM中,,回车符的的ASCII码为0DH,程程序中用一一条CJNE@R0,#0DH,LOOP指指令实现字字符比较及及控制循环环的任务,,当循环结结束时,R2的内容容为字符串串长度例4-910秒延延时程序延时程序与与MCS-51执行行指令的时时间有关,,如果使用用6MHz晶振,一一个机器周周期为2μμs,计算算出执行一一条指令以以至一个循循环所需要要的时间,,给出相应应的循环次次数,便能能达到延时时的目的。。程序如下::DEL:MOVR5,,#100DEL0::MOVR6,,#200DEL1::MOVR7,,#248DEL2::DJNZR7,DEL2;;248*2+4DJNZR6,DEL1;;(248*2+4)*200+4DJNZR5,DEL0;;(248*2+4)*200+4)*100+4RET上例延时程程序实际延延时为10.000406秒秒。它是一一个三重循循环程序,,利用程序序嵌套的方方法对时间间实行延迟迟是程序设设计中常用用的方法。。使用多重重循环程序序时,必须须注意以下下几点:(1)循环环嵌套,必必须层次分分明,不允允许产生内内外层循环环交叉。(2)外循循环可以一一层层向内内循环进入入,结束时时由里往外外一层层退退出。(3)内循循环体可以以直接转入入外循环体体,实现一一个循环由由多个条件件控制的循循环结构方方式。例4-10冒冒泡泡程程序序MOVR6,#CNTDECR6LOOPA:MOVR0,#30HMOVA,R6MOVR7,ACLR20H.0NEXT:MOVA,@R0INCR0CLRCSUBBA,@R0JCNXCHMOVA,@R0DECR0XCHA,@R0INCR0MOV@R0,ASETB20H.0CNTEQU07HORG0000HAJMPSTARTORG0030HSTART:MOVDPTR,#LISTMOVR0,#30HMOVR7,#CNTLOOPD:CLRAMOVCA,@A+DPTRMOV@R0,AINCDPTRINCR0DJNZR7,LOOPDNXCH:DJNZR7,NEXTJNB20H.0,OVERDJNZR6,LOOPAOVER:AJMP$LIST:DB70H,13H,3H,90H,27H,32H,11Hend例4-13无无符号数双双字节乘法R2R3×R6R7--------------------------------R3×R7R2×R7R3×R6R2×R6-------------------------------------R4R5R6R7例4-13无无符号数双双字节乘法ORG0000HAJMPMAINORG0030HMAIN:MOVSP,#60HSTART:MOVR2,#0FFHMOVR3,#0FFHMOVR6,#0FFHMOVR7,#0FFHLCALLDBMULAJMPSTARTDBMUL:MOVA,R3MOVB,R7MULABXCHA,R7MOVR5,BMOVB,R2MULABADDA,R5MOVR4,ACLRAADDCA,BMOVA,R5MOVA,R6MOVB,R3MULABADDA,R4XCHA,R6XCHA,BADDCA,R5MOVR5,AMOVF0,CMOVA,R2MULABADDA,R5MOVR5,ACLRAMOVACC.0,CMOVC,F0ADDCA,BMOVR4,ARETEND4.4散转转程序设计散转程序是分分支程序的一一种。它由输入条件件或运算结果果来确定转入入各自的处理理程序。有多种方法能能实现散转程程序,但通常常用逐次比较较法,即把所所有各个情况况逐一进行比比较,若有符符合便转向对对应的处理程程序。由于每一个情情况都有判断断和转移,如如对n个情况况,需要n个个判断和转移移,因此它的的缺点是程序序比较长。MCS-51指令系统中中有一条跳转转指JMP@A+DPTR,用它它可以容易地地实现散转功功能。该指令是把累累加器A的8位无符号数数(作地址的的低8位)与与16位数据据指针的内容容相加,其和和送入程序计计数器,作为为转移指令的的地址。执行JMP@A+DPTR指令后后,累加器和和16位数据据指针的内容容均不受影响响。例4-16用转移指令表表实现散转根据某一单元元的值0,1,2,…,,n分别转向向处理程序0,处理程序序1,……处处理程序n。。这时可以用转转移指令AJMP(或LJMP)组组成一个转移移表例4-16::根据R6的内内容,转向各各个处理程序序MOVDPTR,#TAB1MOVA,R6ADDA,R6PAD:JMP@A+DPTRTAB1:AJMPLOP0AJMPLOP1AJMPLOP2本例仅适用于于散转表首地地址TAB1和处理程序序入口地址LOP0,LOP1,………LOPn在同一个2K范围的存存储区的情况况。如果一个2K范围的存储储区内放不下下所有的处理理程序时,把把一些较长的的处理程序放放在其他存储储区域,只要要在该处理程程序的入口地地址内用LJMP指令即即可。例4-16用LJMP指指令组成转移移表PJ2:MOVDPTR,,#TAB2CLRCMOVR5,,#0MOVA,R6RLCA;;R6*2JNCAD1INCR5;;有进进位,,高8位加加1AD1:ADDA,R6;;R6*3JNCAD2INCR5;;有进进位,,高8位加加1AD2:MOVA,,R5ADDA,DPH;;DPTR高高8位位调整整MOVA,R6JMP@A+DPTR;;得得散转转地址址TAB2::LJMBLOP0LJMPLOP1……LJMPLOPnEND用AJMP组成成的散散转表表为二二字节节一项项,而而用LJMP组组成的的散转转表则则为三三字节节一项项,根根据R6中中的内内容或或乘2,或或乘3得每每一处处理程程序的的入口口地址址表指指针。。PJ2:MOVDPTR,,#TAB2CLRCMOVR5,,#0MOVA,R6RLCA;;R6*2JNCAD1INCDPH;;AD1:ADDA,R6;;R6*3JNCAD2INCDPH;;AD2:JMP@A+DPTRTAB2::LJMBLOP0LJMPLOP1……LJMPLOPnEND例4-17用转移移地址址表实实现散散转例4-17:根据R3的的内容容转向向对应应处理理程序序。处处理程程序的的入口口分别别是LOP0~~LOP2。PJ3:MOVDPTR,#TAB3MOVA,R3ADDA,R3;;R3*2JNCCADINCDPH;;有进进位DPTR高高位加加1CAD:MOVR2,,A;;暂存存R2MOVCA,,@A+DPTRXCHA,R2;;处处理程程序入入口地地址高高8位位暂存存R2INCAMOVCA,,@A+DPTRMOVDPL,,A;;处处理程程序入入口地地址低低8位位暂存存DPLMOVDPH,,R2CLRAJMP@A+DPTRTAB3::DWLOP0DWLOP1DWLOP24.5子子程序序和参参数传传递方方法在程序序中,,会多多次进进行一一些相相同的的计算算和操操作,,一般般把他他们写写成子子程序序如数制制转换换、函函数式式计算算等。。一些常常用的的程序序段,,以子子程序序的形形式,,事先先存放放在存存储器器的某某一区区域主程序序在运运行时时,需需要用用子程程序时时,只只要执执行调调用子子程序序的指指令,,使程程序转转至子子程序序。子程序序处理理完毕毕,返返回主主程序序,继继续进进行以以后的的操作作。调用子子程序序有几几个优优点::1、避避免对对相同同程序序段的的重复复编制制。2、简简化程程序的的逻辑辑结构构,同同时也也便于于子程程序调调试。。3、节节省存存储器器空间间。有两条条调用用子程程序指指令ACALL及LCALL,和和一条条返回回主程程序的的指令令RET。。子程序序的调调用,,一般般包含含两个个部分分:保保护现现场和和恢复复现场场。参数的的传递递调用子子程序序时,,主程程序先先把有有关的的参数数(入入口参参数))存放放在约约定的的位置置,子程序序在执执行时时,从从约定定的位位置取取得参参数,,当子程程序执执行完完,将将得到到的结结果((出口口参数数)存存入约约定的的位置置,返回主主程序序后,,主程程序可可以从从这些些约定定的位位置上上取到到需要要的结结果。。1、工工作寄寄存器器或累累加器器传递递参数数把入口口参数数或出出口参参数放放工作作寄存存器或或累加加器中中。使用这这种方方法程程序最最简单单,运运算速速度也也最高高。缺点工作寄寄存器器数量量有限限,不不能传传递太太多的的数据据;主程序序必须须先把把数据据送到到工作作寄存存器;;参数个个数固固定,,不能能由主主程序序任意意改定定。例:请编编出能能把R5单单元内内两个个BCD数数变换换成相相应ASCII码放放在R6((高位位BCD数数的ASCII码))和R7((低位位BCD数数的ASCII码))单元元的程程序。。根据ASCII字符符表,,0--9的的BCD数数和它它们的的ASCII码码之间间仅相相差30H。因因此,,仅需需把R5单单元中中两个个BCD数数拆开开,分分别和和30H相相加就就行了了,可可以编编出程程序如如下::ASCH::MOVA,R5ANLA,#0F0HORLA,#30HMOVR6,AMOVA,R5ANLA,#0FHORLA,#30HMOVR7,ARET2、用用指针针寄存存器来来传递递参数数由于数数据一一般存存放在在存贮贮器中中,而而不是是工作作寄存存器中中,故故可用用指针针来指指示数数据的的位置置,可以节节省传传递数数据的的工作作量,,并可可实现现可变变长度度运算算。一般如如参数数在内内部RAM中,,可用用R0或R1作作指针针。可变长度运运算时,可可用一个寄寄存器来指指出数据长长度,也可可在数据中中指出其长长度(如使使用结束标标记符)。。例:将(R0)和((R1)指指出的内部部RAM中中两个3字字节无符号号整数相加加,结果送送(R0))指出的内内部RAM中。入口口时,(R0),((R1)分分别指向加加数和被加加数的低位位字节,出出口时(R0)指向向结果的高高位字节。。利用MS-51的的带进位加加法指令,,可以直接接编写出下下面的程序序。NADD::MOVR7,,#3CLRCNADD1:MOVA,,@R0ADDCA,,@R1MOV@R0,ADECR0DECR1DJNZR7,NADD1INCR0INCR0INCR0RET3、用堆栈栈来传递参参数堆栈可以用用于传递参参数。调用时,主主程序用PUSH指指令把参数数压入堆栈栈子程序可按按栈指针访访问堆栈中中的参数,,同时可把把结果参数数送回堆栈栈中。返回主程序序后,可用用POP指指令得到这这些结果参参数。这种方法的的优点是简简单,能传传递大量参参数,不必必为特定的的参数分配配存贮单元元。使用这种方方法时,由由于参数在在堆栈中,,故大大简简化了中断断响应时的的现场保护护。例4-19一位十六进进制数转换换为ASCII码子子程序HASC::MOVR0,SPDECR0DECR0;;R0为为参数指针针XCHA,@R0;;保护护ACC,,取出参数数ANLA,#0FHADDA,#2;;加加偏移量MOVCA,@A+PCXCHA,@R0;;查表表结果放回回堆栈中RETDB‘‘0123456789’;;十六进进制数的ASCII字符表DB‘‘ABCDEF’例4-21一个字节的的两位十六六进制数为为转换为两两个ASCII码子子程序ORG0000HAJMPSTARTORG0030HSTART:MOVSP,#60HMOV40H,#7FHPUSH40HMOVA,#78hLCALLHTA2AJMPSTARTHTA2:MOVR0,SPDECR0DECR0PUSHACC;保保护累加器器内容(?????)MOVA,@R0;取出参参数ANLA,#0FHMOVDPTR,#DATA1MOVCA,@A+DPTRXCHA,@R0;低低位HEX的ASCII码放放入堆栈中中SWAPAANLA,#0FHMOVCA,@A+DPTRINCR0XCHA,@R0;高位HEX的ASCII码码放入堆栈栈中INCR0XCHA,@R0;高位返回回地址放入入堆栈,并并恢复累加加器内容RETDATA1:DB'0123456789'DB'ABCDEF'END例22将内部RAM中50H、51H中的内内容以4位位十六进制制数的ASCII形形式在串行行发送出去去,可如下下调用HTA2程序序:ORG0000HSCOT4:PUSH50HACALLHTA2POPACCACALLCOUTPOPACCACALLCOUTPUSH51HACALLHTA2POPACCACALLCOUTPOPACCACALLCOUTCOUT::JNBTI,,COUT;;字符发送送子程序CLRTIMOVSBUF,ARETEND4、程序段段参数传递递参数传递方方法,多数数是在调用用子程序前前,把值装装入适当的的寄存器传传递参数。。如果有许多多常数参数数,这种技技术不太有有效,每个个参数需要要一个寄存存器传递,,并且在每每次调用子子程序时需需分别用指指令把它们们装入寄存存器中。如果需要大大量参数,,并且这些些参数均为为常数时,,程序段参参数传递方方法(有时时也称为直直接参数传传递)是传传递常数的的有效方法法。调用时,常常数作为程程序代码的的一部分,,紧跟在调调用子程序序后面。子程序根据据栈内的返返回地址,,决定从何何处找到这这些常数然后在需要要时,从程程序存贮器器中读出这这些参数。。例22字符串发送送子程序。。实际应用中中,需要发发送各种字字符串。这这些字符串串,通常放放在EPROM(程程序存贮器器)中。按通常方法法,需要先先把这些字字符装入RAM中,,然后用传传递指针的的方法来实实现参数传传递。为了简便,,也可把字字符串放在在EPROM独立区区域中,然然后用传递递字符串首首地址的方方法来传递递参数。子程序可按按该地址用用MOVC指令从EPROM中读出并并发送该字字符串。最简单的方方法是采用用程序段参参数传递方方法。下例中,字字符串全以以0结束。。SOUT::POPDPH;;栈中指指针POPDPLSOT1::CLRAMOVCA,,@A+DPTRINCDPTRJZSENDJNBTI,,$;;$为本条条指令地址址CLRTIMOVSBUF,ASJMPSOT1SEND::JMP@A+DPTRRET下面从发送送字符串‘‘MCS-51CONTROLLER’为例例,说明该该子程序使使用方法。。ACALLSOUTDB‘‘MCS-51CONTROLLER’DB0AH,,0DH,,0后面紧接其其他程序。。例22:总总结上面子程序序有几个特特点:它不以一般般的返回指指令结尾,,而是采用用基寄存器加加变址寄存存器间接转转移指令来来返回到参参数表后的的第一条指指令。一开始的的POP指指令已调整整了栈指针针的内容。。它可适用与与ACALL或LCALL,,因为这两两种调用指指令均把下下一条指令令或数据字字节的地址址压入栈中中。调用程程序可位于于MCS-51全部部地址空间间的任何地地方,因为为MOVC指令能访访问所有64K字节节。传递到子程程序的参数数可按最方方便的次序序列表,而而不必按使使用的次序序排列。子子程序在每每一条MOVC指指令前累加加器装入适适当的参数数,这样基基本上可““随机访问问”参数表表。子程序只使使用累加器器A和数据据指针DPTR,应应用程序可可以在调用用前,把这这些寄存器器压入堆栈栈中,保护护它们的内内容。4.6查表表程序设计计查表程序是是一种常用用程序,它它广泛使用用于LED显示器控控制、打印印机打印以以及数据补补偿,计算算、转换等等功能程序序中,具有有程序简单单、执行速速度快等优优点。查表,就是是根据变量量x在表格格中查找y,使y=f(x))。1、用MOVCA,@A+PC查表表指令编程程例:用查表方法法编写彩灯灯控制程序序,编程使使彩灯先顺顺次点亮,,再逆次点点亮,然后后连闪三下下,反复循循环。TAB:DB01H,02H,04H,08H,10H,20H,40H,80HDB80H,40H,20H,10H,08H,04H,02H,01HDB00H,0FFH,,00H,,0FFH,00H,0FFH,03HDEL:MOVR7,#0FFHDEL1:MOVR6,#0FFHDEL2:DJNZR6,DEL2DJNZR7,DEL1RETENDORG0000HSTART:MOVR0,,#00HLOOP:CLRAMOVA,,R0ADDA,,#0CHMOVCA,@A+PCCJNEA,#03H,,LOOP1JMPSTARTLOOP1:MOVP1,AACALLDELINCR0JMPLOOP2、用MOVCA,@A+DPTR查表指令令编程例:用查表方法法编写彩灯
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年低压电机采购合同范本
- 2024年承接竹林砍伐合同范本
- 贵州省黔东南苗族侗族自治州剑河县第四中学2024-2025学年九年级上学期11月期中物理试题(含答案)
- 中医护理培训
- 产前的观察与护理
- 中医营养护理
- 冠心病人居家管理方案
- 2024装修施工合同范本标准
- 2024客户合同遗失证明
- 2024装修合同维权范文
- 经营异常授权委托书范本
- 工程投入的劳动力、主要物资、施工机械设备进场计划
- 大班劳动教育课教案反思总结(3篇模板)
- 机械原理智慧树知到期末考试答案章节答案2024年兰州理工大学
- 肿瘤化疗导致的中性粒细胞减少诊治中国专家共识(2023版)解读
- 走进故宫 知到智慧树网课答案
- 《新能源汽车概论》课件-6新能源汽车空调系统结构及工作原理
- 安川g7变频器说明书-安川变频器g7面板操作说明
- 国开2024年《法律基础》形考作业1-4答案
- 《剧院魅影:25周年纪念演出》完整中英文对照剧本
- 蒋诗萌小品《谁杀死了周日》台词完整版
评论
0/150
提交评论