资源预览内容
第1页 / 共173页
第2页 / 共173页
第3页 / 共173页
第4页 / 共173页
第5页 / 共173页
第6页 / 共173页
第7页 / 共173页
第8页 / 共173页
第9页 / 共173页
第10页 / 共173页
亲,该文档总共173页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第三章第三章 指令系统及程序设计举例指令系统及程序设计举例Exit3.3 89C513.3 89C51指令系统指令系统3.1 3.1 汇编语言汇编语言3.2 3.2 寻址方式寻址方式3.4 3.4 程序设计举例程序设计举例3.1 3.1 汇编语言汇编语言3.1.1 3.1.1 指令和程序设计语言指令和程序设计语言3.1.2 3.1.2 指令格式指令格式BACK3.1.1 3.1.1 指令和程序设计语言指令和程序设计语言指令:指令:是是CPU根据人的意图来执行某种操作的命令。根据人的意图来执行某种操作的命令。程序设计语言:程序设计语言:是实现人机交换信息的基本工具,是实现人机交换信息的基本工具,分为机器语言、汇编语言和高级语言。分为机器语言、汇编语言和高级语言。机器语言:机器语言:用二进制编码表示每条指令,是计算机用二进制编码表示每条指令,是计算机能直接识别和执行的语言。能直接识别和执行的语言。汇编语言:汇编语言:是用助记符、符号和数字等来表示指令是用助记符、符号和数字等来表示指令的程序设计语言。它与机器语言指令是一一对应的。的程序设计语言。它与机器语言指令是一一对应的。BACK3.1.2 3.1.2 指令格式指令格式89C51汇编语言指令格式汇编语言指令格式操作码操作码 目的操作数目的操作数,源操作数,源操作数;注释;注释汇编语言指令对应的二进制代码格式汇编语言指令对应的二进制代码格式单字节指令单字节指令双字节指令双字节指令三字节指令三字节指令BACK单字节指令单字节指令1、指令码中隐含着对某一种寄存器的操作、指令码中隐含着对某一种寄存器的操作如:指令如:指令“INC DPTR”的指令代码格式为:的指令代码格式为:A3H=1 0 1 0 0 0 1 12、由指令中的、由指令中的rrr三位的不同编码指定某三位的不同编码指定某一寄存器一寄存器如:指令如:指令“MOV A,Rn”的指令代码格式为:的指令代码格式为:1 1 1 0 1 r r r BACK双字节指令双字节指令用一个字节表示操作码,另一个字节表用一个字节表示操作码,另一个字节表示操作数或操作数所在的地址。示操作数或操作数所在的地址。格式为:格式为:操作码操作码立即数或地址立即数或地址BACK三字节指令三字节指令一个字节操作码,两个字节操作数。一个字节操作码,两个字节操作数。格式为:格式为:操作码操作码立即数或地址立即数或地址立即数或地址立即数或地址BACK3.2 3.2 寻址方式寻址方式一、什么是寻址方式:一、什么是寻址方式:如何找到存放操作数如何找到存放操作数的地址,把操作数提取出来的方法。的地址,把操作数提取出来的方法。二、寻址方式的种类:二、寻址方式的种类:三、寻址空间及符号注释:三、寻址空间及符号注释:BACK二、寻址方式的种类:二、寻址方式的种类:1、寄存器寻址、寄存器寻址2、直接寻址、直接寻址3、立即数寻址、立即数寻址4、寄存器间接寻址、寄存器间接寻址 5、变址寻址、变址寻址6、相对寻址、相对寻址 7、位寻址、位寻址BACK1、寄存器寻址、寄存器寻址寄存器寻址:寄存器寻址:由指令指出寄存器组由指令指出寄存器组R0R7中的某一个或其他寄存器中的某一个或其他寄存器(A,B,DPTR等等)的内容的内容作为操作数。作为操作数。例如:例如:MOV A,R0;(R0)A MOV P1,A;(A)P1口 ADD A,R0;(A)+(R0)ABACK2、直接寻址、直接寻址直接寻址方式:直接寻址方式:在指令中直接给出操作数所在存储在指令中直接给出操作数所在存储单元的地址。指令中操作数部分是操作数所在地址。单元的地址。指令中操作数部分是操作数所在地址。直接寻址方式可访问片内直接寻址方式可访问片内RAM的的128个单元以及所有个单元以及所有的的SFR。对于。对于SFR,既可以使用它们的地址,也可以,既可以使用它们的地址,也可以使用它们的名字。使用它们的名字。例如:例如:MOV A,3AH;(3A) A MOV A,P1;(P1口口) A 或:或: MOV A,90H; 90H是是P1口的地址口的地址BACK3、立即数寻址、立即数寻址立即数寻址:立即数寻址:指令操作码后面紧跟的是一字节指令操作码后面紧跟的是一字节或两字节操作数,用或两字节操作数,用“#”号表示,以区别直号表示,以区别直接地址。接地址。例如:例如:MOV A,3AH;(;(3AH)AMOV A,#3AH;3AHAMOV DPTR,#2000H;2000HDPTR ;(;(DPH)=20H ;(;(DPL)=00HBACK4、寄存器间接寻址、寄存器间接寻址 寄存器间接寻址:寄存器间接寻址:操作数的地址事先存放在某个寄操作数的地址事先存放在某个寄存器中,寄存器间接寻址是把指定寄存器的内容作为存器中,寄存器间接寻址是把指定寄存器的内容作为地址,由该地址所指定的单元内容作为操作数。地址,由该地址所指定的单元内容作为操作数。89C51规定规定R0或或R1为间接寻址寄存器,它可寻址内为间接寻址寄存器,它可寻址内部地址部地址RAM低位的低位的128B单元内容。还可采用单元内容。还可采用DPTR作作为间接寻址寄存器,寻址外部数据存储器的为间接寻址寄存器,寻址外部数据存储器的64KB空间。空间。例如例如BACK例如:例如:将片内RAM 65H单元内容47H送A,可执行指令“MOV A,R0”。其中R0内容为65H。如图所示:65H47HR0A47H数据存储器数据存储器地址65H以指令中所指定以指令中所指定的的R0内容内容(65H)为指针)为指针将片内将片内RAM 65H单元内容单元内容47H送送ABACK5、变址寻址、变址寻址(基址寄存器基址寄存器+变址寄存器间接寻址变址寄存器间接寻址)变址寻址:变址寻址:以某个寄存器的内容为基地址,在这个基地址的基础上加上地址偏移量形成真正的操作数地址。89C51中采用DPTR或PC为变址寄存器,A的内容为地址偏移量。变址寻址只能访问程序存储器,访问范围为64KB。例如例如BACK例如:例如:MOVC A,A+DPTR;(A)+(DPTR)A如图所示如图所示1EH0302HROMDPTRAA02F1H11H1EH+DPTR内容与内容与A的内容之的内容之和为程序存储器地址和为程序存储器地址程序存储器内容送程序存储器内容送ABACK6、相对寻址、相对寻址 相对寻址:相对寻址:是以当前的PC值加上指令中规定的偏移量rel而形成实际的转移地址。相对寻址只出现在相对转移指令中。当前的PC值是指执行完相对指令后的PC值;相对转移指令操作码所在地址称为源地址;转移后的地址称为目的地址。目的地址目的地址=源地址源地址+相对转移指令字节数相对转移指令字节数+relrel为补码表示的有符号数。例如:例如:BACK7、位寻址、位寻址位寻址:位寻址:采用位寻址方式的指令的操作数是8位二进制数中的某一位,指令中给出的是位地址。位地址在指令中用bit表示。例如:CLR bit;位地址的两种表示方法:位地址的两种表示方法:直接使用位地址,如D3H;直接用寄存器名字加位数,如。位寻址区域:位寻址区域:片内RAM的20H-2FH的16个单元中的128位;字节地址能被8整除的SFR。BACK三、寻址空间及符号注释三、寻址空间及符号注释1、寻址空间:、寻址空间:见表见表3-2。2、符号注释:符号注释:BACK表表3-2 操作数寻址方式和有关空间操作数寻址方式和有关空间BACK符号注释符号注释Rn(n=0-7):当前选中的工作寄存器组:当前选中的工作寄存器组R0-R7。Ri(I=0,1):作为地址指针的两个工作寄存器:作为地址指针的两个工作寄存器R0,R1。#data:8位立即数。位立即数。#data16:16位立即数。位立即数。direct:8位片内位片内RAM单元(包括单元(包括SFR)的直接地址。)的直接地址。addr11:11位目的地址,用于位目的地址,用于ACALL和和AJMP指令中。指令中。addr16:16位目的地址。用于位目的地址。用于LCALL和和LJMP指令中。指令中。rel:补码表示的:补码表示的8位地址偏移量。范围:位地址偏移量。范围:-128-+127D。bit:片内:片内RAM或或SFR的直接寻址位地址。的直接寻址位地址。:间接寄存器的符号。:间接寄存器的符号。/:位操作指令中对该位先取反再参与操作,不影响原值。:位操作指令中对该位先取反再参与操作,不影响原值。():中的内容。中的内容。():指出的地址单元中的内容。指出的地址单元中的内容。:指令操作流程方向。:指令操作流程方向。BACKBACKMCS-51MCS-51指令系统可分为五大类指令系统可分为五大类1 1 数据传送指令:数据传送指令:2828条条2 2 算术运算指令:算术运算指令:2424条条3 3 逻辑运算及移位指令:逻辑运算及移位指令:2525条条4 4 控制转移指令:控制转移指令:1717条条5 5 位操作指令(布尔操作):位操作指令(布尔操作):1717条条Back 3.3.1 3.3.1 数据传送指令数据传送指令 (4 (4条条, ,即即4 4种寻址方式种寻址方式) ) 2.2.以寄存器以寄存器RnRn为目的操作数的指令(为目的操作数的指令(3 3条)条) 3.3.以直接地址为目的操作数的指令(以直接地址为目的操作数的指令(5 5条)条) 4.4.以间接地址为目的操作数的指令(以间接地址为目的操作数的指令(3 3条)条)Back 5.5.十六位数据传送指令十六位数据传送指令(1(1条条) ) 6.6.查表指令(查表指令(2 2条)条) 7.7.累加器累加器A A与片外与片外RAMRAM传送指令传送指令(4(4条条) ) 8.栈操作指令(二条) 9.9.交换指令交换指令(4(4条条) )BackBack(4(4条条, ,即即4 4种寻址方式种寻址方式) )例:例: MOV A MOV A,#30H #30H ;(;(A A)=30H=30H MOV A MOV A, 30H 30H ;(;(A A)=11H=11H MOV A MOV A,R1 R1 ;(;(A A)=11H=11H MOV A MOV A,R1 R1 ;(;(A A)=30H=30H MOV A MOV A,#30H #30H ;(;(A A)=30H=30H MOV A MOV A, 30H 30H ;(;(A A)=11H =11H MOV A MOV A,R1R1 ;(;(A A)=11H=11H MOV A MOV A,R1 R1 ;(;(A A)=30H=30HBack 2 2 、以寄存器、以寄存器RnRn为目的操作数的指令(为目的操作数的指令(3 3条)条)Back 直接寻址和立这组指令的功直接寻址和立这组指令的功能是把源操作数所指定的内容送能是把源操作数所指定的内容送到当前工作寄存器组到当前工作寄存器组R0R7R0R7中的某中的某个寄存器。源操作数有寄存器寻个寄存器。源操作数有寄存器寻址,即数寻址三种方式。址,即数寻址三种方式。如:(如:(A A)=78H=78H,(,(R5R5)=47H=47H,(,(70H70H)=F2H=F2H,执行指令:,执行指令:MOV R5MOV R5,A A ;(;(A A)R5R5, (R5R5)=78H=78HMOV R5MOV R5,70H 70H ;(;(70H70H)R5R5, (R5R5)=F2H=F2HMOV R5MOV R5,#A3H#A3H; A3H A3HR5R5, (R5R5)=A3H=A3H注注意意,在在89C5189C51指指令令系系统统中中没没有有“MOV “MOV RnRn,Rn”Rn”传送指令。传送指令。Back 3 3 、以直接地址为目的操作数的指令(、以直接地址为目的操作数的指令(5 5条)条)BackBack4 4 、以间接地址为目的操作数的指令(、以间接地址为目的操作数的指令(3 3条)条)BackBackRidirectRn#dataACC图36 传送指令在片内存储器的操作功能5 5、 十六位数据传送指令十六位数据传送指令(1(1条条) ) 这这条条指指令令的的功功能能是是把把1616位位常常数数送送入入DPTRDPTR。DPTRDPTR由由DPHDPH和和DPLDPL组成。组成。BackBack6 6 、查表指令(、查表指令(2 2条)条)Back基地址寄存器+变址寄存器间接寻址PC+A(程序存储器0-64K)基地址寄存器+变址寄存 器间接寻址DPTR+A(程序存储器0-64K)A寄存器图图3-7 3-7 程序存贮器传送(查表)程序存贮器传送(查表)例: 执行下面程序段后结果如何?执行下面程序段后结果如何?MOV DPTR, #2000H MOV DPTR, #2000H ;(;(DPTRDPTR)=2000H=2000HMOV A , #0AH MOV A , #0AH ;(;(A A)=0AH=0AHMOVC MOVC A A , , A+DPTR A+DPTR ; (A A)= =(A A)+ +(DPTRDPTR)= =(200AH200AH)则:则:(A)=(200AH)=11H(A)=(200AH)=11H例例: : 所以,最后结果为:所以,最后结果为:(A)=01 (A)=01 (R0)=01 (PC)=1004(R0)=01 (PC)=1004Back7 7、 累加器累加器A A与片外与片外RAMRAM传送指令传送指令(4(4条条) )Back 第第2 2,4 4两两条条指指令令以以DPTRDPTR为为片片外外数数据据存存储储器器1616位位地地址址指指针针,寻寻址址范范围围达达64KB64KB。其其功功能能是是DPTRDPTR所所指指定定的的片片外外数数据据存存储储器器与与累累加加器器A A之之间间传送数据。传送数据。第第1 1,3 3两两条条指指令令是是用用R0R0或或R1R1作作低低8 8位位地地址址指指针针,由由P0P0口口送送出出,寻寻址址范范围围是是256256字字节节。这这两两条条指指令令完完成成以以R0R0或或R1R1为为地地址址指指针针的的片片外外数数据据存存储器与累加器储器与累加器A A之间的传送数据。之间的传送数据。上述四条指令的操作如图上述四条指令的操作如图3-83-8所示所示: :寄存器寄存器间接寻址 寄存器间接寻址 R1.R0DP(外RAM0-255) ( 外RAM0-64K)图 3-8 外部数据存储器传送操作例例: : 若:片内若:片内RAM (30H)=01HRAM (30H)=01H,片外,片外RAM RAM (30H)=02H(30H)=02H,执行下面程序段后的结果如何,执行下面程序段后的结果如何。Back 8 、栈操作指令(二条)Back 例:例:继续上例继续上例: :Back 9 9、 交换指令交换指令(4(4条条) )Back(1)字节变换指令例例:(2) (2) 半字节交换指令半字节交换指令Back3.3.2 3.3.2 算术运算指令算术运算指令 1 .1 .不带进位加法指令不带进位加法指令( (四条四条) ) 2 .2 .带进位加法指令(四条)带进位加法指令(四条) 3 .3 .带借位减法指令(四条)带借位减法指令(四条) 4 . 4 . 乘法指令(乘法指令(1 1条)条)Back 5 5、 除法指令(除法指令(1 1条)条) 6 6、 加加1 1指令(指令(5 5条)条) 7 7、 减减1 1指令指令(4(4条条) ) 8 8、 十进制调整指令十进制调整指令(1(1条条) )Back1 1 、 不带进位加法指令不带进位加法指令( (四条四条) )Back例:例:Back2 2 、带进位加法指令(四条)、带进位加法指令(四条)Back例:设(A)=0C3H,(R0)=0AAH, (CY)=1。执行指令“ADDC A,R0”后的结果 及标志位如何? 例:编程,将(30H),(31H)单元中的数与 (40H),(41H)单元中的数相加,结 果存于(30H),(31H)单元中。Back3 3 、带借位减法指令(四条)、带借位减法指令(四条)Back 这这组组指指令令的的功功能能是是从从累累加加器器A A中中减减去去源源操操作作数数所所指指出出的的数数及及进进位位位位CYCY的的值值, ,差保留在累加器差保留在累加器A A中。中。由由于于89C5189C51指指令令系系统统中中没没有有不不带带借借位位的的减减法法指指令令,如如需需要要的的话话,可可以以在在“SUBB”“SUBB”指指令令前前用用“CLR “CLR C”C”指指令令将将CyCy清清0 0,这一点必须注意。,这一点必须注意。例:设(例:设(A A)=0C9H,=0C9H,(R2R2)=54H,Cy=1=54H,Cy=1。 执行指令执行指令“SUBB A“SUBB A, R2” R2”的结果如何的结果如何?Back 4 4、 乘法指令(乘法指令(1 1条)条)该该指指令令若若乘乘积积大大于于0FFH0FFH,则则OVOV置置1 1,否否则则OVOV清清0 0。CyCy位总是被清位总是被清0 0。Back例:(A)=4EH,(B)=5DH, 执行指令“MUL AB”后结果如何?Back5 5、 除法指令(除法指令(1 1条)条)BackBack 6 6、 加加1 1指令(指令(5 5条)条)Back例:例: 若:(若:(R1R1)=30H =30H ,(,(30H30H)=11H=11H 求执行下面指令后的结果。求执行下面指令后的结果。INC R1INC R1; (30H)=12H (30H)=12HINC R1 INC R1 ; (R1)=31H (R1)=31HBack7 7、 减减1 1指令指令(4(4条条) )Back8 8、 十进制调整指令十进制调整指令(1(1条条) )Back例例: : 设累加器设累加器A A内容为:内容为:01010110B01010110B(即为(即为5656的的BCDBCD码),寄存器码),寄存器R3R3的内容为的内容为01100111B01100111B(即(即6767的的BCDBCD码),码),CYCY内容为内容为1 1。求执行下列指令后的结果。求执行下列指令后的结果。 ADDC AADDC A,R3R3; DA A DA A;Back3.3.3 3.3.3 逻辑操作指令逻辑操作指令Back 1 .1 .简单操作指令(简单操作指令(2 2条)条) 2 .2 .移位指令(移位指令(4 4条)条) 3 .3 .累加器半字节交换指令累加器半字节交换指令 4. 4. 逻辑逻辑“与与”指令(指令(6 6条)条) 5. 逻辑逻辑“或或”指令(指令(6条)条) 6 .6 .逻辑逻辑“异或异或”指令(指令(6 6条)条)Back1 .1 .简单操作指令(简单操作指令(2 2条)条)Back(1) (1) 累加器累加器A A清清0 0指令指令(2)(2)累加器累加器A A取反指令取反指令Back2 .2 .移位指令(移位指令(4 4条)条)Back(1)(1)累加器累加器A A循环左移指令循环左移指令(2) (2) 累加器累加器A A循环右移指令循环右移指令 (3) (3) 累加器累加器A A连同进位位循环左移指令连同进位位循环左移指令 RLCRLCA A ;(4) (4) 累加器累加器A A连同进位位循环右移指令连同进位位循环右移指令 RRCRRCA A ;Back3 . 3 . 累加器半字节交换指令累加器半字节交换指令 Back4. 4. 逻辑逻辑“与与”指令(指令(6 6条)条)Back 这这组组指指令令中中前前四四条条指指令令是是将将累累加加器器A A的的内内容容和和操操作作数数所所指指出出的的内内容容按按位位进进行行逻逻辑辑“与与”,结果存放在,结果存放在A A中。中。后后两两条条指指令令是是将将直直接接地地址址单单元元中中的的内内容容和和操操作作数数所所指指出出的的单单元元的的内内容容按按位位进进行行逻逻辑辑“与与”,结结果果存存入入直直接接地地址址单单元元中中。若若直直接接地地址址正正好好是是I/OI/O端端口口,则则为为“读读改改写写”操作。操作。Back5. 逻辑逻辑“或或”指令(指令(6条)条)Back 这这组组指指令令的的功功能能是是将将两两个个指指定定的的操操作作数数按按位位进进行行逻逻辑辑“或或”,前前四四条条指指令令的的操操作作结结果果存存放放在在累累加加器器A A中中,后后两两条条指指令令的的操操作结果存放在直接地址单元中。作结果存放在直接地址单元中。Back6 .6 .逻辑逻辑“异或异或”指令(指令(6 6条)条)Back 这这组组指指令令的的功功能能是是将将两两个个指指定定的的操操作作数数按按位位进进行行“异异或或”,前前四四条条指指令令的的结结果果存存放放在在累累加加器器A A中中,后后两两条条指指令令的的操操作作结结果存放在直接地址单元中果存放在直接地址单元中。上上述述逻逻辑辑操操作作类类指指令令归归纳纳如如图图。这这类类指指令的操作均只影响标志位令的操作均只影响标志位P P。Back3.3.4 控制程序转移类指令控制程序转移类指令 1 . 无条件转移指令(无条件转移指令(4条条) 2 . 空操作指令(空操作指令(1条)条) 3 . 条件转移指令(条件转移指令(8条)条) 4 . 调用和返回指令调用和返回指令Back Back1、无条件转移指令(、无条件转移指令(4条)条)Back(1)短转移指令短转移指令 Back 这条指令提供了11位地址,可在2K范围内无条件转移到由a10-a0所指出的地址单元中。因为指令只提供低11位地址,高5位为原PC11-15位值,因此,转移的目标地址必须在AJMP指令后面指令的第一个字节开始的同一2K字节范围内。Back (2) 长转移指令长转移指令BackBack(3) 相对转移(短转移)指令相对转移(短转移)指令BackSJMP rel ;1000 00001001rel (相对地址) 先(PC)+2 PC 后(PC)+rel PCBack(4) 间接转移指令间接转移指令BackBack2 空操作指令(空操作指令(1条)条)Back3 条件转移指令(条件转移指令(8条)条)Back(1) (1) 判零转移指令判零转移指令BackBack(2)比较转移指令(比较转移指令(4条)条)BackBack(3)循环转移指令(循环转移指令(2条)条)Back 程序每执行一次本指令,将第一操作数的字节变量减1,并判字节变量是否为零,若不为0,则转移到目标地址,继续执行循环程序段;若为0,则结束循环程序段的执行,程序往下执行。其中,rel为相对于DJNZ指令的下一条指令的第一个字节相对偏移量,用一个带符号的8位数表示。所以,循环转移的目标地址应为DJNZ指令的下条指令地址和偏移量之和。Back4 调用和返回指令调用和返回指令Back(1)短调用指令短调用指令Back例如:设符号地址“SUBRTN”所对应的程 序存储器实际地址为0345H,在 (PC)=0123H处 执行指令ACALL SUBRTNBack(2)长调用指令长调用指令Back例如:设(SP)=07H,符号地址“SUBRTUN” 指向程序存储器的5678H(PC)=0123H。从0123H处执行指令 LCALL SUBRTUNBack(3)返回指令(返回指令(2条)条)BackBack3.3.5 3.3.5 位操作位操作( (布尔处理布尔处理) )类指令类指令(17(17条条) ) 1 1、位数据传送指令(、位数据传送指令(2 2条)条) 2、位修正指令(位修正指令(6 6条)条) 3 3、逻辑运算指令(、逻辑运算指令(4 4条)条) 4 4、位条件转移类指令(、位条件转移类指令(5 5条)条)Back在进行位操作时,进位标志位CY布尔累加器(位累加器),简写成C。位寻址区: 片内RAM字节地址20H2FH单元中连续的128位(位地址00H7FH)和部分特殊功能寄存器SFR。 位地址的表达方式:位地址的表达方式:l接写位地址: 如D4H;l点操作符号: 如PSW.4(D0H).4;l位名称方式: 如RS1;l用户定义名方式:如用伪指令bitBack1 1、 位数据传送指令(位数据传送指令(2 2条)条)Back2、位修正指令(位修正指令(6 6条)条)Back(1)(1)位清0指令(2)位置位置1 1指令(指令(2 2条)条)Back(3)位取反指令(位取反指令(2 2条)条)Back3 3、 逻辑运算指令(逻辑运算指令(4 4条)条)Back(1 1)位逻辑)位逻辑“与与”指令(指令(2 2条)条)Back(2 2)位逻辑)位逻辑“或或”指令(指令(2 2条)条)Back4 4、位条件转移类指令(、位条件转移类指令(5 5条)条)BackBack(2 2)判位变量转移指令()判位变量转移指令(2 2条)条)Back(3)判位变量并清判位变量并清0 0转移指令(转移指令(1 1条)条)Back 程序设计举例程序设计举例一 简单程序设计举例二 分支程序三 循环程序四 子程序设计举例五 代码转换程序设计举例六 运算类程序设计举例Back一一 简单程序设计举例简单程序设计举例例1 :拆字。将片内RAM 20H单元的内容拆成两段,每段四位。并将它们分别存入21H与22H单元中。程序如下:Back 例2:16位数求补。设16位二进制数在R1R0中,求补结果存3于R3R2中。Back例1:片内RAM ONE和TWO两个单元中存有两个无符号数,将两个数中的小者存入30H单元。程序如下:二二 分支程序分支程序Back Back其流程如 图3.3-1示,为典型的分支程序三三 循环程序循环程序例1:统计字串长度。内存从STRING开始有一字串,该字串以$结束,试统计该字串长度,结果存于NUM单元中。 BackBack四四 子程序设计举例子程序设计举例例1:用查表法编一子程序,将40H单元中的BCD码转换成ASCII码。入口:待转换数在(40H)出口:转换后的数(40H) Back若将30H单元BCD码转换成ASCII码,利用SUB1子程序。Back五五 代码转换程序设计举例代码转换程序设计举例例1:R1中存有一个BCD码,编一子程序将其转换为ASCII码,存入片外RAM1000H单元中去。Back片外RAM2000H单元中有一BCD码,编一子程序将其转换成ASCII码。Back六六 运算类程序设计举例运算类程序设计举例例1:片内RAM30H单元开始有10个字节的二进制数。编一子程序,求它们的和。(和256)将和存入20H单元中。Back例2:编写将30H,31H单元中的两字节二进制数乘以2的程序(积小于65536)Back
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号