单片机汇编程序设计练习一、存储器之间的数据传送1、编程实现将单片机内部RAM60H开始的连续32个单元置为FFH。MOVR0,#60HMOVR7,#32MOVR1,#0FFHMOVA,R1LOOP:MOV@R0,AINCR0DJNZR7,LOOPSJMP$END2、编程实现将内部RAM30H开始的连续16个数传送到内部RAM50H开始的连续单元中。MOVR0,#30HMOVR1,#50HMOVR7,#16LOOP:MOVA,@R0MOV@R1,AINCR0INCR1DJNZR7,LOOPSJMP$END3、编程实现将单片机外部RAM2000H为首地址的数据块传送到单片机内部RAM30H开始的单元中,数据块的长度为32个字节。4、编程实现将单片机内部RAM30H为首地址的数据块传送到外部RAM2000H开始的单元中,数据块的长度存放于内部RAM的20H单元。5、编程实现将单片机外部RAM2000H为首地址的数据块传送到单片机内部RAM30H开始的单元中,直到数据内容为0DH时停止传送。6、编程实现将ROM1000H地址的内容传送到内部RAM的25H单元。7、编程实现将ROM2000H开始的连续10个地址的内容传送到内部RAM的25H开始的单元。8、编程实现将ROM1000H开始的连续100个地址的内容传送到外部RAM2000H开始的连续单元中。二、查表程序设计1、编写查表程序,要查表的数据存放在R7中,其范围为0~9。编程查其平方值,并存放于40H。2、编写查表程序,要查表的数据存放在R7中,其范围为0~9。编程查其立方值,并存放于R6。3、单片机外部ROMTAB1地址开始存放一组ASCII码表,试用查表方法,将R2的内容(范围为0~F转换为与其对应的ASCII码,并从P1口输出。4、使用8051的P1口作为段控驱动共阳LED数码管,硬件连接如图。编程实现将8051R7单元内容(在00H-09H之间显示在数码管上。00H-09H的共阳字形代码如下表所示。三、多字节无符号数的加减法1、编一个三字节无符号数的减法程序。被减数存放在内部RAM的30H开始的连续三个单元中(高位在高地址,减数存放在内部RAM的40H开始的连续三个单元中(高位在高地址,请将差存放在内部RAM的50H开始的连续三个单元中(高位在高地址,借位存放在01H位地址2、编一个四字节无符号数的加法程序。被加数存放在内部RAM的25H开始的连续四个单元中(高位在高地址,加数存放在内部RAM的55H开始的连续四个单元中(高位在高地址,请将和存放在内部RAM的25H开始的连续四个单元中(高位在高地址,进位存放29H字节地址中。3、编一个N字节无符号数的加法程序。被加数存放在内部RAM的符号地址AAA开始的连续单元中(高位在低地址,加数存放在内部RAM的符号地址BBB开始的连续单元中(高位在低地址,请将和存放在内部RAM的AAA开始的连续单元中,进位存放符号地址JWEI字节。四、多路散转1、请编程实现根据A的值进行多路散转的程序。即当A=0时,调用PRO0子程序;当A=1时,调用PRO1子程序„„,当A=10时,调用PRO10子程序。2、请编程实现根据R7的值进行128路散转的程序。即当(R7=0时,调用CHULI0子程序;当(R7=1时,调用CHULI1子程序„„,当A=128时,调用CHULI128子程序。五、软件定时程序设计计算下面程序的延时时间:1、MOVR6,#TIMELOOP:NOPNOPDJNZR6,LOOP计算当TIME=0、1、2、255时的延时时间2、MOVR7,#TIME1LOOP0:MOVR6,#TIME2LOOP1:NOPNOPDJNZR6,LOOP1DJNZR7,LOOP0六、数据检索程序设计1、在内RAM20H~3FH地址的32个单元中,存放一批数据,试检索是否有与R0寄存器内容相等的数,若检索成功,将该数据地址存放在R1,否则将FFH存放在R1中。2、在内RAM20H~29H地址的10个单元中,存放一批数据,试检索是否含有立即数30H,若检索成功,将该数据地址存放在31H,否则将FFH存放在31H。3、统计内RAM20H—4FH单元中内容为“0”的个数,并把结果存入50H单元。七、极值查找1、将内部RAM50H、51H单元两个无符号数中较大的数存入60H单元。2、在内部RAM40-4FH中存在16个无符号数,找出其中的最小数,存放到50H单元。先画出程序框图,再编程。3、内部RAM中有一个数据块,首地址为30H,长度存放在2BH单元,要求把其中的最大值找出,并放到以20H单元。、4、内部RAM以30H为首地址的一个数据块,第一个数据为该数据长度。试求该数据的最大值,把结果放在内部RAM的70H单元中。画出程序流程图并编写程序。*5、内部RAM20H开始存放一组有符号的数,数据个数存放在内部RAM1FH单元中,请编程统计其中大于0、等于0、小于0的数的个数,分别存放于70H、71H、72H。*6、内部RAM20H开始存放一组有符号的数,数据个数存放在内部RAM1FH单元中,请编程将其中大于0、等于0、小于0的数分别存放于70H、60H、50H开始的连续单元中。