资源描述:
《单片机基础课后习题答案》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、(三)其它类型题 3.编写程序将RAM20H-23H单元的高4位写1,低4位写0。分析:就是把这四个单元写入F0H。用一个DJNZ的循环。 ORG0000HMOVR0,#1FH;R0指向20H单元MOVR5,#04H; 四个数LOOP:INCR0MOV@R0,#0F0H; 写入DJNZR5,LOOP; 循环4次END4.把m和m+1单元存有两个BCD数,将它们合并到m单元中,编写程序完成。(设m=30H,高位在30H,低数在31H) ORG0000HMOVA,30HANLA,#0FH ;把它的高四位清零S
2、WAPAMOV30H,A ;高低四位调一下,放回原处MOVA,31HANLA,#0FHORLA,30H ;合并起来MOV30H,AEND5.将内部RAM中从data单元开始的10个无符号数相加,其和送sum单元多,假定相加结果小于255。编写程序完成。(设data=30H,sun=50H)ORG0000HMOVR0,#2FH;指向前一个单元MOVR5,#0AH ;循环10次CLRA ;先加到A中LOOP:INCR0ADDA,@R0DJNZR5,LOOPMOV50H,AEND6.假定8位二进制带符号数丰于R0中
3、,要求编写一个求补程序,所得补码入入R1中。 ORG0000HMOVA,R0CPLA ;按位取反ADDA,#01H ;+1MOVR1,AEND第四章:一、填空题1. 25H 40H 03H2.2.914ms3.略4.(A)=((30H)(A)>(30H)(A)<(30H)5.32.87ms编程题 1.把长度为10H的字符串从内部RAM的输入缓冲区inbuf向位物外部RAM的输出缓冲区outbuf传送,一直进行到遇见回车或整个字符串传送完毕。试编程实现。 ORG 0030H MOV
4、R0,#inbuf MOV R1,#outbuf MOV R4,#10H LOOP:MOV A,@R0;从内部RAM取数CJNE A,#0DH,LL;是否为回车符CR SJMP STOP;是转停止传送 LL: MOVX @R1,A;不是则传送到外部RAM INC R0 INC R1 DJNZ R4,LL;沒传送完则循环STOP: SJMP$2、内部RAM从list单元开始存放一正数表,表中之数作无序排列,并以“-1”作结束标
5、志。编程实现在表中找出最小数。 (3AH存放在运行程序时的最小的数) ORG 0030H MOVR0,#list MOVA,@R0;取第一个正数 LOOP:INCR0;指向下一个正数 MOV3AH,@R0 CJNEA,3AH,CHK;前一个数与后一个数比较CHK: JC LOOP1;前一个数小,则转 MOVA,@R0;前一个数大,取后一个数LOOP1:XCHA,3AH CJNEA,#0FFH,LOOP XCHA,3AH;取最小数
6、MOV 3BH,A SJMP$3.内部RAM的X,Y 单元中各存放一个带符号的数,试编程实现按如下条件进行的运算,并将结果存入Z单元中。 若X为正奇数,Z =X+Y;若X为正偶数,Z =X∨Y;若X为负奇数,Z =X∧Y;若X为负偶数,Z =X⊕Y。 分析:负数:第7位为1,正数:第7位为0 奇数:第0位为1,偶数:第0位为0 ORG0000HMOVA,20HCLRCRLAJCFS;移到负数处处理RRARRA;第0位移到C 再判定一下是不是1JCZJS;到正奇数处MOVA,20HORLA,2
7、1HMOV22H,ASJMPOKZJS:MOVA,20HADDA,21HMOV22H,ASJMPOKFS:MOVA,20HCLRCRRAJCFJS;第0位是1,移到正 奇数处理MOVA,20HXRLA,21HMOV22H,ASJMPOKFJS:MOVA,20HANLA,21HMOV22H,AOK:END 4、把一个8位二进制数的各位用ASCII码表示之(亦即为“0”的位用30H表示,为“1”的位用31H表示)。该数存放在内部RAM中byte单元中。变换后得到的8个ASCII码存放在外部RAM以buf始的存储单元
8、中去。 ORG 0030H MOV R0,#byte MOV DPTR,#buf MOV R5,#08H MOV A,@R0 LOOP:RLC A MOV R7,A JC LOOP1 MOV A,#30H SJMP LOOP2 LOOP1: MOV A,#31H LOOP2:MOVX @DPTR,A