教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 基础教育 >

单片机课后题答案(霍孟友主编)(2)

来源:网络收集 时间:2026-04-03
导读: R间址: MOV R0,#0FH; 2字节,单周期 MOV 0F0H ,@R0; 2字节,双周期 Direct寻址:MOV A,#0FH ; 2字节,单周期 MOV 0F0H,A ; 2字节,单周期 3-15 怎样把位40H的内容移至30H位? 答: MOV C,40H MOV 30H,C

R间址: MOV R0,#0FH; 2字节,单周期 MOV 0F0H ,@R0; 2字节,双周期

Direct寻址:MOV A,#0FH ; 2字节,单周期 MOV 0F0H,A ; 2字节,单周期 3-15 怎样把位40H的内容移至30H位? 答: MOV C,40H MOV 30H,C

3-16 编写一段程序,模拟如图3-1所示逻辑电路的逻辑功能。要求将4个输入与非门的功能模拟先写成一个子程序,然后多次调用得到整个电路的功能模拟。设X,Y,Z 、W和F都已定义为位地址,若程序中还需要其它位地址,也可另行定义。

提示:首先用伪指令定义X,Y, Z , W,F是单片机引脚端口位,然后再编程,注意34

操作对象是位单元,应该使用位逻辑指令。 4-1 两个4位BCD码数相加求和。设被加数存于内部RAM的40H、41H单元,加数存于45H、46H单元,要求和数存于50H、51H单元(均前者为低二位,后者为高二位)。请编制加法程序段。若进行BCD码减法运算,应如何考虑。 解:程序如下: CLR C

MOV A, 40H ADD A,45H DA A MOV 50H,A MOV A,41H ADDC A,46H DA A MOV 51H,A CLR A

ADDC A,#00H

MOV 52H,A

编写多字节十进制(BCD码)减法程序段:

设被减数低字节地址存R0中,减数低字节地址存R1中,字节数存R3中。相减的结果依次存于原被减数单

元。

START: SETB C

SUBA: CLR A

ADDC A,#99H ;加99 SUBB A,@R1 ;减去减数

ADD A,@R0 ;作加法,加上被加数 DA A ;十进制调整

MOV @R0,A ;存入对应的被减数单元 INC R0 ;指向下一个字节单元

INC R1

DJNZ R3,SUBA ;若(R3)一1≠0,继续作减法 RET 注意:80C51中的十进制调整指令(DA A)只能用于二进制加法指令之后,不能用于二进制减法结果的调整。进行十进制(BCD码)减法只能采用先求减数的十进制补码,然后把结果与被减数相加。

如果被减数为A,减数为B,十进制的位数为n,则A-B=A+Bbu=A+10n-B=A+9?9+1-B=9?9+1-B+A 式中:9?9的个数为n。

4-2 试编写程序,查找在内部RAM 20H-50H单元中出现00H的次数,并将查找的结果存入51H单元。 解:程序如下: MOV R0,#20H MOV R7,#31H

MOV 51H,#00H

LOOP1: CJNE @R0, #00H, LOOP INC 51H

LOOP: INC R0 DJNZ R7, LOOP1 HERE: SJMP HERE

4-3 晶振频率为12MHz,请用循环转移指令编制延时20ms的延时子程序。

解:一个机器周期为1us,延时20ms需要机器周期数20000us/1us=20000 延时程序如下:

MOV R5, #T1 ;1个机器周期

LOOP2: MOV R4,#T2 ;T1个机器周期 LOOP1: NOP ;T1*T2个机器周期 NOP ;T1*T2个机器周期

DJNZ R4,LOOP1 ;2* T1*T2个机器周期 DJNZ R5, LOOP2 ;2* T1个机器周期 RET ;1个机器周期

总计时:1+3×T1+4×T1×T2+1=20000

则:T1=202=0CAH, T2=24=18H (答案不唯一,T1与T2的值≤255)

4-4 已知两个八位无符号数a、b存放在BUF和BUF+1单元,编写程序计算5a+b,结果可能大于8位,仍放回BUF和BUF+1单元(BUF+1单元为高字节)。

解:根据题意,编写程序如下: MOV A, BUF MOV B,#05H MUL AB CLR C ADD A, BUF+1 MOV BUF,A MOV A,B

ADDC A,#00H MOV BUF+1,A

4-5 外部数据RAM从2000H到2100H有—个数据块,现要将它们传送到从3000H到3100H的区域,试编写有关程序。

方法1: MOV P2, #20H MOV R0, #00H

MOV R2, #00H

LOOP: MOVX A, @R0 ;P2口即高八位地址 SETB P2.4 ;20H→30H MOVX @R0, A

CLR P2.4 ;30H→20H INC R0 DJNZ R2, LOOP MOV DPTR, #2100H MOVX A, @DPTR MOV DPTR, #3100H MOVX @DPTR, A

方法2 MOV DPTR,#3000H PUSH DPL

PUSH DPH ;压栈保护目标地址 MOV DPTR, #2000H

MOV R2, #01H

MOV R3, #01H ;数据长度送R3R2 LOOP: MOVX A, @DPTR INC DPTR MOV R5,DPH

MOV R4,DPL ;源地址加1保护 POP DPH

POP DPL ;弹出目标地址 MOVX @DPTR, A

INC DPTR PUSH DPL

PUSH DPH ;目标地址加1 压栈保护 MOV DPH, R5

MOV DPL, R4 ; 取出源地址37 CLR C

MOV A, R2

SUBB A, #01H

MOV R2,A ;数据区长度低8位减1

MOV A, R3

SUBB A,#00H

MOV R3,A ;数据区长度高8位减借位位 ORL A, R2 ;(R3)与(R2)相或

JNZ LOOP ;两者全零时,101H个数传送完毕。 HERE: SJMP HERE

4-6 求16位带符号二进制补码数的绝对值。假定补码放在内部RAM的num和num+1单元,求得的绝对值仍放在原单元中。(设num+1中内容为高8位) 解:根据题意,编写子程序如下:

ABC: MOV A, num+1

JB ACC.7,FUSHU ;最高位为1,负数,转移处理 RET ;正数,补码即绝对值 FUSHU: MOV R0, #num MOV A, @R0

CPL A

ADD A, #01H ;低8位取反加1 MOV @R0,A INC R0 MOV A, @R0

CPL A

ADDC A, #00H ;高8位取反加1,同时加进位位 MOV @R0, A RET

4-7 下列程序段经汇编后,从1000H开始的各有关存储单元的内容是什么?

ORG 1000H

TAB1 EQU 1234H TAB2 EQU 3000H DB “START”

DW TAB1,TAB2,70H

答:1000H:53H;1001H:54H;1002H:41H;1003H:52H;1004H:54H

1005H:12H;1006H:34H;1007H:30H;1008H:00H;1009H:00H38 100AH:70H

4-8 编程将20H单元中的两个BCD数拆开,并变成相应的ASCII码存入21H和22H单元。 解:根据题意,编写程序如下: MOV R0,#22H MOV @R0,#00H MOV A, 20H XCHD A, @R0

ORL 22H,#30H ;转换低4位 SWAP A

ORL A, #30H ;转换高4位 MOV 21H,A HERE: SJMP HERE

4-9 存放在片内RAM的DAT单元中的自变量X中是一个

…… 此处隐藏:1282字,全部文档内容请下载后查看。喜欢就下载吧 ……
单片机课后题答案(霍孟友主编)(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/566002.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)