第3章习题参考答案
3-1 设内部RAM中59H单元的内容为50H,写出当执行下列程序段后寄存器A,R0和内部RAM中50H,51H单元的内容为何值?
MOV A,59H ;A=50H MOV R0,A ;R0=50H MOV A,#00H ;A=00H MOV @R0,A ;50H=00H MOV A,#25H ;A=25H MOV 51H,A ;51H=25H MOV 52H,#70H ;52H=70H A=25H R0=50H 50H=00H 51H=25H
3-2 访问外部数据存储器和程序存储器可以用哪些指令来实现?举例说明。 答:访问外部数据存储器指令有:
MOVX @DPTR,A MOV DPTR,#0100H MOV @DPTR,A MOVX A,@DPTR MOV DPTR,#0200H MOV A,@DPTR MOVX A,@Ri MOVX A,@R0 MOVX @Ri,A MOVX @R1,A 访问程序存储器指令有: MOVC A,@A+PC A,@A+PC
MOVC A,@A+DPTR
3-3 设堆栈指针SP中的内容为60H,内部RAM中30H和31H单元的内容分别为24H和10H,执行下列程序段后,61H,62H,30H,31H,DPTR及SP中的内容将有何变化?
PUSH 30H ;61H=24H
PUSH 31H ;62H=10H SP=62H POP DPL ;DPL=10H
POP DPH ;DPH=24H SP=60H MOV 30H,#00H ;30H=00H MOV 31H,#0FFH ;31H=0FFH 3-4 设(A)=40H,(R1)=23H,(40H)=05H。执行下列两条指令后,累加器A和R1以及内部RAM中40H单元的内容各为何值?
XCH A,R1 ;A=23H R1=40H XCHD A,@R1 ;A=25H 40H=03H
3-5 两个四位BCD码数相加,被加数和加数分别存于50H,51H和52H,53H单元中(千位、百位在低地址中,十位、个位在高地址中),和存放在54H,55H和56H中(56H用来存放最高位的进位),试编写加法程序。
ORG 0000H LJMP START ORG 0100H START: MOV A,53H ADD A,51H DA A
MOV 55H,A
MOV A,52H ADDC A,50H DA A MOV 56H,C SJMP $ END 3-6 设(A)=01010101B,(R5)=10101010B,分别写出执行下列指令后结果。 ANL A , R5 ; 00000000B ORL A , R5 ; 11111111B XRL A , R5 ; 11111111B
3-7指令SJMP rel中,设rel=60H,并假设该指令存放在2114H和2115H单元中。当该条指令执行后,程序将跳转到何地址?
答: 2116H+60H=2176H
3-8 简述转移指令AJMP addr11、SJMP rel、 LJMP addr16及JMP @A+DPTR的应用场合。
答:AJMP addr11 为2K字节范围内的无条件转跳指令,把程序的执行转移到指定的地址。SJMP rel是无条件转跳指令,执行时在PC加2后,把指令中补码形式的偏移量值加到PC上,并计算出转向目标地址。转向的目标地址可以在这条指令前128字节到后127字节之间。
LJMP addr16执行这条指令时把指令的第二和第三字节分别装入PC的高位和低位字节中,无条件地转向指定地址。转移的目标地址可以在64K程序存储器地址空间的任何地方,不影响任何标志。
JMP @A+DPTR 指令的功能是把累加器中8位无符号数与数据指针DPTR中的16位数相加,将结果作为下条指令地址送入PC,利用这条指令能实现程序的散转。
3-9 试分析下列程序段,当程序执行后,位地址00H,01H中的内容将为何值?P1口的8条I/O线为何状态?
CLR C ;CY=0 MOV A,#66H ;A=66H JC LOOP1
CPL C ;CY=1 SETB 01H ;20H.1=1 LOOP1: ORL C, ACC.0 ;CY=1 JB ACC.2,LOOP2 ; CLR 00H
LOOP2: MOV P1,A ;P1=01100110B SJMP $
20H.0=0 20H.1=1 P1=66H 3-10 查指令表,写出下列两条指令的机器码,并比较一下机器码中操作数排列次序的特点。
MOV 58H,80H
85(80)(58) 直接寻址字节送直接寻址字节: 汇编时源操作数在目标操作数之前。 MOV 58H,#80H
75(58)(80) 立即数送直接寻址字节: 汇编时目标操作数在原操作数之前。
第4章习题参考答案
4-1 什么是单片机的程序设计语言。 答:单片机的程序设计语言是指计算机能理解和执行的语言,人与CPU、MCU交流的语言。MCS-51系列单片机的程序设计语言,按照语言的结构及其功能可以分为三种:机器语言、汇编语言、高级语言。
4-2 单片机的程序设计包括哪几个步骤。 答:程序设计步骤如下:
(1) 分析问题。即仔细分析任务书中要实现的功能和性能指标。 (2) 确定算法。即找到解决问题思路、方法。
(3) 分配内存单元。即确定数据结构。这一步往往与算法同时考虑。 (4) 根据算法和数据结构,画出程序流程图。
(5) 根据流程图编写汇编语言源程序。编辑录入,保存为*.ASM文件。 (6) 汇编。排除语法错误。 (7) 调试(DEBUG)。找出错误并更正,再调试,直至通过。 (8) 编写相关说明文档。
4-3 画出单片机的三种基本程序结构。 答:
A B 是 条件成立吗? 否 条件成立吗? 是 否 A B A
顺序结构流程图 分支结构流程图 循环结构流程图
4-4 单片机的分支结构程序指令有哪几条?
答:分支结构程序指令有JB、JNB、JC、JNC、JZ、JNZ、CJNE、JBC 4-5 什么是单片机的程序嵌套?生活中有哪些现象与单片机的嵌套类似? 答:一个程序中还会调用别的程序,这称为程序嵌套。
生活例子:在学习,有电话了,去接电话,水开了,放下电话去关掉电水壶,接着打电话,打完电话,接着学习。
4-6 能否从一个子程序内部使用转移指令直接跳转到另一个子程序执行?
答:可以,为了保证正确地从子程序2返回子程序1,再从1返回主程序,每次调用子程序时必须将下条指令地址保存起来,返回时按后进先出原则依次取出旧PC值。 4-7 能否使用转移指令从主程序跳到子程序?
答:不可以,当主程序需要执行某子程序的功能时,只需执行一条调用指令。而并非使用转移指令
4-8 能否使用转移指令从子程序跳到主程序?
答:不可以,子程序的最后一条指令应该是返回指令RET或RETI,以确保子程序能够正确返回主程序。执行RET指令时单片机将原来存在堆栈中的断点地址弹出给PC,保证子程序
返回主程序中调用子程序的地方继续执行主程序。
子程序从子程序的标号开始,到RET或RETI指令结束。 RET指令是一般子程序的返回指令。
RETI指令是中断服务子程序的返回指令。 4-9 画出主程序的一般流程图。 答:主程序流程图
上电/复位 初始化模块 人机接口(键盘显示)模块 输入模块 运算模块 输出模块
4-10 画出子程序的一般流程图。 答:子程序流程图
开始 模块A 模块B 模块C 返回
4-11 子程序的规范化设计包括那几个部分? 答:子程序的规范化设计包括:
(1) 子程序名称。给子程序起名字,起名的原则是子程序名能够反映子程序功能,该名字就是子程序的入口地址标识符。
(2) 子程序功能,对子程序的功能给予简要的描述。
(3) 入口参数,子程序所要运算或处理的数据(加工前的原料),在调用子程序之前,主程序要先准备好入口参数。
(4)出口参数,子程序运算或处理的结果(加工完成的数据),子程序结束之前,最终结果(出口参数)存放在约定的RAM单元,供主程序取用。
(5) 资源占用情况,指出该子程序运行时所使用的片内工作寄存器(R0~R7)、SFR(特殊功能寄存器)、片内RAM单元及片外RAM单元,以便在主程序调用该子程序之前,考虑将这些资源中的哪些字节保护入栈。
4-12 在片内RAM地址40H到4FH的存储单元中存有16个无符号数,找出其中的最大值,放入50H单元,请用“循环结构”和“分支结构”编程。 答:流程图:
开始
初始化: R2=15赋判断次
数,R0指针指向40H单元
指针加1
N B @R0+1
判断A>B?
A 中放大值 Y
N R2-15=0?
Y
A 50H
结束
源程序:
ORG 0000H
LJMP MAIN ORG 0100H
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库单片机习题答案(1章-9章)[1](2)在线全文阅读。
相关推荐: