单片机课后题答案(霍孟友主编)(2)
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字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [基础教育]2016-2022年中国钢芯铝绞线市场现状调
- [基础教育]语文部编版初一语文下册练习题 句式变
- [基础教育]南京继续教育参考答案--深入学习贯彻习
- [基础教育]国旗下讲话稿——珍惜时间好读书
- [基础教育]北师大版六年级数学下册圆锥的体积教学
- [基础教育]人教版-音乐-四年级下册-四年级下册音
- [基础教育]乔布斯2019年斯坦福大学毕业典礼致辞.d
- [基础教育]2015年加油站安全知识竞赛试题及答案
- [基础教育]2020年教师年度考核个人工作总结
- [基础教育]2019年中考历史试题-2019年大庆市初中
- [基础教育]初三仁爱英语第一轮总复习教案
- [基础教育]SG-A094电气配管安装工程隐蔽验收记录
- [基础教育]冀教版小学数学三年级下册第六单元教材
- [基础教育]青岛版(五制)小学科学二年级下册16《制
- [基础教育]2018-2019年初中科学初一中考真卷测试
- [基础教育]幼儿园大班期末简短评语精选
- [基础教育]2018云南临沧公务员考试申论技巧:这样
- [基础教育]学校食堂经营管理方案
- [基础教育]新中国砥砺奋进的七十年原文
- [基础教育]真空泵的选型及常用计算公式
- 高职田径课程教学现状与对策
- 全髋关节置换术在老年股骨颈骨折患者中
- 青人社厅函〔2016〕576号(附件)工资
- cp101-07砂子检验作业指导书 - secret
- 微观经济学 第八章 博弈论 习题
- 2014高考真题(词语运用)汇编及答案
- 2018年人教版七年级语文下册《第三单元
- 苏教版数学四年级上册第一单元试题 - M
- 四川大学新闻与传播考研2000-2010年真
- 浙江万里学院英语专业四年制本科教学计
- 最新2018马年事业祝福语-范文word版(2
- 最全模具行业术语英文翻译
- 皮亚杰的发展心理学理论
- 64篇高考情景式默写 练习题及答案
- 仿写(学生稿)
- 《SQL Server数据库技术》试卷A
- 第七章作业答案
- 江苏省赣榆县海头高级中学高中语文必修
- 浙江省2001年10月自考正常人体解剖学答
- 2012英语重点短语




