资源预览内容
第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
第9页 / 共10页
第10页 / 共10页
亲,该文档总共10页全部预览完了,如果喜欢就下载吧!
资源描述
昆明学院 第四章单片机作业姓 名:学 号:班 级:2009级机制3班4.3 已知从内部RAM的BLOCK单元开始存放有一组有符号数,数的个数存放在LEN单元。请编写可以统计其中正数和负数个数并分别存入NUM和(NUM+1)单元的程序。 ORG 1000HNUM DATA 30HLEN DATA 20HBLOCK DATA 40HMOV R0 #BLOCKMOV NUM #00HMOV B #00HLOOP: MOV A R0 INC R0 JB ACC.7 NEG INC NUM SJMP NEXTNEG INC BNEXT DNJZ LEN LOOP MOV NUM+1 B SJMP $END4.4 已知内存单元有16个无符号数,分别存放30H3FH中,试求它们的累加和,并将存放在R4和R5中。编程说明:存放16个二进制无符号数的首地址为30H,此程序的循环次数为16次,和数放在R4,R5中。STAT : MOV R0, #30H MOV R2 ,#10H MOV R4 ,#00H M0V R5 ,#00H LOOP : MOV A , R5 ADD A , R0 MOV R5 ,A MOV A , #00H ADDC A , R4 MOV R4 , A INC R0 DJNZ R2 , LOOP SJMP $ END 4.6 用调用子程序的方法计算c=a2+b2。编程说明;a事先存在内部RAM的31H单元,b事先存在32H单元,把c存入 33H 单元。 ORG 0000HMOV SP #3FHLCALL SQRMOV R1, AMOV A , 32HLCALL SQRADD A, , R1MOV 33H , ASJMP $SQR : PUSH DPH PUSH DPL MOV DTR , TABLE MOV A , A+DPTR POP DPL POP DPH RET TABLE :0,1,4,9,16,25,36,49,64,814.9 某系有200名学生参加外语统考,若成绩已存放在MCS51外部RAM起始地址为ENGLISH的连续存储单元,现决定给成绩在95100分之间的学生颁发A级合格证书和成绩在9094分之间的学生颁发B级合格证书。试编制一个程序,可以统计A级和B级证书的学生人数,并把统计结果存入内部RAM的GRADA和GRADB单元。 编程说明 A级调用LOOP1 B级调用LOOP2 GRADA 存A级 GRADAB级 ORG 1000HSTART MOV DPTR ,ENGLISH MOV R0 , #5AH MOV R2 , #5FHLOOP1 : MOV A , R0 INC DPTR INC R0LOOP3 : CJNE #5DH LOOP1LOOP2 : MOV A , R2 INC DPTR INC R2LOOP4 : CJNE #64H LOOP2MOV GRADB R0MOV GRADA R2END 4.11 设计程序,把片外RAM从2000H开始存放的10个数据传送到片外RAM 005H开始的连续单元中。 ORG 0000H MOV DPTR ,#2000H MOVX A , DPTR MOV R2 , #10 MOV R0 , #005HL1 : MOV A , R0 MOVX DPTR , A INC DPTR INC R0DJNZ R2 , L1END4.12 设加数和加数分别存放在片内RAM从50H开始的连接单元中,均为无符号数。数的字节数N放在R2寄存器中,编程求出这两个是的和,并存和放在原被加数的位置,和的字节数放在R3寄存器中。MOV R2 , #NMOV R0 , #50HMOV R1 , #50HMOV R3 , #0CLR C LOOP : MOV A , R1 ADDC A , R0 MOV R0 , A INC R3 INC R0 INC R1 DJNZ R2 , LOOP JNC ADD_END INC R3 MOV R0 , #1 ADD_END RET4.13 有两个单字节无符号数分别存放在RAM的30H和31H单元,试编计算它们的乘积,并将结果存放在内部RAM的32H和33H单元中。MOV R0 , #30HMOVX A , R0MOV B , AINC R0MOVX A , R0MUL ABINC R0MOVX R0 , AINC R0MOV A , BMOVX R0 , A4.14 编写延时20ms的子程序,设单元的晶振频率为12MHz。 DELAY : MOV R2 , #20 LOOPS : MOV R1 , #125 NOP LOOPR : DJNZ R1 , LOOPR DJNZ R2 , LOOPS RET补充思考题1 编程将外部RAM地址从1000H开始的100个单元清零。 MOV DPTR , #1000H MOV R0 , #64H MOV A , #60HLOOP : MOV DPTR , A INC DPTR DJNZ R0 , LOOP END2 编程从外RAM 2000H单元开始建立099(BCD码)的100的数。ORG 1000HMOV R1 , #00HMOV R0 , #00HMOV DPTR , #2000HMOV R7 , #51HLOOP2 : MOVX A , DPTR INC DPTR CJNE A , # 88H,LOOP1 INC R1LOOP1 : DJNZ R7 , #51,LOOP2 SJMP $ END3 编程从30H单元开始建立A Z的ASCII码表。 ORG 1000H MOV DPTR ,#30H MOV R1 #41H MOV R0 , #26HL1 : MOV A , R0 INC DPTR INC R0CJNE 5AH , L1END4 编程SUM=1+2+3+100,SUM存于30H,31H单元(低在前,高在后)。ORG 1000HSUM : MOV R0 , #100HMOV A , #00HMOV R1 , #01H MOV 31H , A LOOP 1 : ADD A , R1 JNC LOOP2 INC R1 LOOP 2 :INC R0 DJNZ R0 , LOOP1 MOV 30H AEND5 编程实现P1.0=ACC.5*(B.0+P2.1)+P3.2逻辑关系的程序。 ORG 4000H MOV C , B.0 ORL C , P2.1 ANL C , ACC.5 ORL C , P3.2 MOV P1.7 , C END6 编写完整的MCS51汇编语言程序,计算公式:Y= 0 X=0设X存在30H单元中,结果Y存在31H单元中。ORG 1000HMOV A , 30HJNB ACC.7 POSTMOV A , #00HSJMP COMPPOST : MOV A , #1COMP :MOV 31H , A AJMP $
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号