单片机第4章习题参考答案.doc

上传人:s9****2 文档编号:562744384 上传时间:2023-10-27 格式:DOC 页数:7 大小:76.51KB
返回 下载 相关 举报
单片机第4章习题参考答案.doc_第1页
第1页 / 共7页
单片机第4章习题参考答案.doc_第2页
第2页 / 共7页
单片机第4章习题参考答案.doc_第3页
第3页 / 共7页
单片机第4章习题参考答案.doc_第4页
第4页 / 共7页
单片机第4章习题参考答案.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《单片机第4章习题参考答案.doc》由会员分享,可在线阅读,更多相关《单片机第4章习题参考答案.doc(7页珍藏版)》请在金锄头文库上搜索。

1、第4章部分习题答案- 7 -作业:7、8、9、10、11、15、17、19、204.7 设内部RAM 20H单元有两个非零的BCD数,编写求两个BCD数的积并把积送入21H单元的程序。ORG 1000HMOV A, 20HMOV B, A ; 保存SWAP AANL A, #0FH ; 取高4位ANL B, #0FH ; 取低4位MUL ABMOV B, #0AHDIV AB ; 转换成BCD码的形式SWAP AORL A, BMOV 21H, ASJMP $END4.8 已知从内部RAM BLOCK单元开始存放有一组带符号数,数的个数存放在LEN单元。编写可以统计正数和负数个数并分别存入NU

2、M和NUM+1单元的程序。org 1000hnum data 30hlen data 20hblock data 40hmov r0, #blockmov num, #00h ; 保存正数个数mov b, #00h ; 保存负数个数loop: mov a, r0inc r0jb acc.7, neginc numsjmp nextneg: inc bnext: djnz len, loopmov num+1, bsjmp $end4.9 设X为一无符号数,存放在内部RAM的VAX单元, Y存放在FUNC单元。编写满足如下关系的程序:org 2000hvax data 20hfunc data

3、30hmov a, vaxcjne a, #32h, comp1comp1: jc next1mov func, asjmp donenext1: cjne a, #14h, comp2comp2: jc next2mov b, #05hmul abmov func, asjmp donenext2: clr crlc amov func, adone: sjmp $end4.10 在例4.6的128分支程序中,若用LJMP指令代替AJMP指令,以便分支程序可以放在64KB地址范围的任何位置。修改原程序,修改后的程序最多可以实现多少分支。LJMP是三字节指令,最大分支数N应满足条件:N3 25

4、6(即不超过A的存储范围),所以N = 85。修改后的程序:ORG 2100HMOV A, R3RL AADD A, R3MOV DPTR, #BRTABJMP A + DPTRBRTAB: LJMP ROUT00 LJMP ROUT01 LJMP ROUT02 LJMP ROUT85ROUT00: ROUT85: END4.11 从外部RAM的SOURCE(二进制8位)开始有一数据块,该数据块以 $ 字符结尾,编写程序,把它们传送到以内部RAM的DIST为起始地址的区域($ 字符也要传送) org 2000hsource data 10hdist data 20h mov p2, #00h

5、mov r0, #source mov r1, #distnext: movx a, r0 inc r0 mov r1, a inc r1 cjne a, #24h, nextdone: sjmp $ end4.12 将习题4.11中的Source改为16位的,则将程序中的 r0 改成 dptr 即可。4.13 在外部RAM的低256地址单元区,有起始地址为SOUCE且长度在LEN单元的数据块。编写能对它们进行奇偶校验的程序。凡满足奇校验(奇数个1)的数据均送到内部RAM起始地址为DIST的存储区。 org 2000hlen data 10hsource data 20hdist data 5

6、0h mov r0, #source mov r1, #dist mov r2, #len mov p2, #00hloop: movx a, r0 inc r0 jnb psw.0, next mov r1, a inc r1next: djnz r2, loop sjmp $ end4.14 将习题4.13中的Source改为16位的,则将原来程序中的 r0 改成 dptr 即可。4.15 外部RAM从2000H到2100H有一数据块,编写程序将它们传送到从3000H到3100H区域。 ORG 0HMOV DPTR, #2000HNEXT: MOVX A, DPTR ORL DPH, #1

7、0H ; 将DPH从20H变成30H MOVX DPTR, A ANL DPH, #0EFH ; 将DPH从30H变成20H INC DPTR MOV A, DPH CJNE A, #21H, NEXT MOVX A, DPTR MOV DPH, #31H MOVX DPTR, A ;传送2100H单元中的内容到3100H SJMP $ END4.16 片内RAM中有一数据块起始地址为FIRST+1,长度存放在FIRST中且不为0,统计数据块中正偶数和负奇数的个数,分别存放在PAPE单元和NAOE单元。 ORG 0HPAPE DATA 20HNAOE DATA 21HFIRST DATA 30

8、H MOV PAPE, #00H MOV NAOE, #00H MOV R0, #FIRST INC R0 ; 数据块的起始地址LOOP: MOV A, R0 INC R0 JB ACC.7, NEXT ; 负数 JB ACC.0, PP ; 如果是正奇数,则取下一个数 INC PAPE SJMP PPNEXT: JNB ACC.0, PP ; 如果是负偶数,则取下一个数 INC NAOEPP: DJNZ FIRST, LOOP SJMP $ END 4.17 从内部RAM的BLOCK为起始地址的100个无符号数中找出最小值并把它送入MIN单元。 ORG 0HBLOCK DATA 20HMIN

9、 DATA 10H MOV R0, #BLOCK MOV R2, #64H MOV MIN, #0FFHLOOP: MOV A, R0 CJNE A, MIN, NEXTNEXT: JNC NEXT1 MOV MIN, ANEXT1: INC R0 DJNZ R2, LOOP SJMP $ END4.18 内部RAM区,6组无符号4字节被加数和加数分别存放在以FIRST和SECOND为起始地址的区域(低字节在前,高字节在后), 编程求和(设和也为4字节)并把和存于以SUM开始的区域。 ORG 0HFIRST DATA 20HSECOND DATA 40HSUM DATA 60H MOV R0,

10、 #FIRST MOV R1, #SECOND MOV R2, #06HLOOP: MOV R3, #04H CLR CLOOP1: MOV A, R0 ADDC A, R1 MOV R0, A ; 将和存放在以FIRST开始的区域 INC R0 INC R1 DJNZ R3, LOOP1 DJNZ R2, LOOP MOV R0, #FIRST MOV R1, #SUM MOV R2, #24LOOP2: MOV A, R0 MOV R1, A INC R0 INC R1 DJNZ R2, LOOP2 SJMP $ END4.19 内部RAM中,数据块以BLOCK为起始地址,块长放在LEN单

11、元。用查表指令编写程序,先检查它们是否是十六进制中的A-F,若是,则把它们变成ASCII码,若不是,则把它们变为00H。 ORG 0HLEN DATA 10HBLOCK DATA 20H MOV R0, # BLOCK MOV DPTR, # ASCTABLOOP: MOV A, R0 CJNE A, #0AH, NE1NE1: JNC NE2 ; 若大于等于A,则去与F比较 SJMP CHZERO ; 若小于A,则变成0NE2: CJNE A, #0FH, NE3 ;与F比较 SJMP CHASC ; 若等于F,则转成 ASCII 码NE3: JC CHASC ; 若小于F,则转成 ASCII 码CHZERO: CLR A ; 若大于F,则变成0 SJMP NEXTCHASC: ADD A, #07H ;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号