- 1
- 0
- 约4.27千字
- 约 5页
- 2026-03-06 发布于山东
- 举报
第4章《单片机原理与C51基础》赵丽清(课后习题及答案)
思考题:
【4-1】说明伪指令的作用。“伪”的含义是什么?常用伪指令有哪些,其功能如何?
【4-2】解释下列术语:
(1)手工编订(2)机器编订
【4-3】下列程序段经汇编后,从1000h开始的各有关存储单元的内容是什么?
org1000h
tab1equ1234htab2equ3000hdb0,1,4,5
dwtab1,tab2,70h
【4-4】设计子程序时应特别注意哪些问题?
【4-5】试编写一个程序,将内部ram中45h单元的高4位清0,低4位置1。
【4-6】未知程序执行前存有a=02h,sp=42h,(41h)=ffh,(42h)=ffh。下列程序
执行后,a=();sp=();(41h)=();(42h)=();pc=()。popdphpopdpl
movdptr,#3000hrlamovb,a
movca,@a+dptrpushaccmova,binca
movca,@a+dptrpushaccret
org3000h
db10h,80h,30h,80h,50h,80h
【4-7】先行编写程序,搜寻在内部ram的30h~50h单元中与否存有0aah这一数据。
若存有,则将51h单元用为“01h”;若未找到,则将51h单元用为“00h”。
【4-8】试编写程序,查找在内部ram的20h~40h单元中出现“00h”这一数据的次
数,并将查找到的结果存入41h单元。
【4-9】在内部ram的21h单元已经开始存一组单字节并无符号数,数据长度为20h,
编写程序,建议找到最大数取走max单元。
【4-10】若sp=60h,标号label所在的地址为3456h。lcall指令的地址为2000h,
执行如下指令:
2000hlcalllabel
后,堆栈指针sp和堆栈内容发生了什么变化?pc的值等于什么?如果将指令lcall
直接换成acall是否可以?如果换成acall指令,可调用的地址范围是什么?【4-11】若
80c51的晶振频率为6mhz,试计算延时子程序的延时时间?
delay:movr7,#0f6;1个机器周期lp:movr6,#0fa;1个机器周期djnzr6,$;2个机
器周期djnzr7,lp;2个机器周期
ret;2个机器周期
【4-12】撰写子程序,将r1中的2个十六进制数切换为ascii后取走r3和r4。
第四章思考题答案:
【4-1】答疑:程序设计者采用汇编语言撰写的源程序必须经过编程就可以在单片机
中运转,因此在汇编语言源程序中通常可以使用伪指令去向编译器收到命令(命令)信息,
说它如何顺利完成编订工作。
“伪”表示其不能命令cpu执行某种操作,也没有对应的机器代码。常用伪指令及其
功能(略)。【4-2】解答:
手工编订就是把程序用助记符指令写下后,人为搜寻指令代码表中,逐个把助记符指
令翻译成机器码。由于手工编订就是按绝对地址展开定位的,所以对于偏移量的排序和程
序的修正存有诸多不便,现在已经不被使用。
机器汇编是在计算机上使用编译软件对源程序进行汇编。整个工作由pc机来完成,
且最后生成一个*.hex或*.bin机器码形式的目标程序文件,整个传输过程既快捷又方
便。【4-3】解答:
首先,我们必须确切equ只是声明tab1代表1234h值,tab2代表3000h,而tab1和
tab2仅在后边在搞适当的替代时候,才可以分配内存空间。因此,在本题中只有db,dw分
配了适当的内存空间。
db,dw分别为定义字节和字,所以从1000h开始的空间分配如下所示:
存储单元地址1000h1001h1002h1003h1004h1005h1006h1007h1008h1009h存储单元放
置的内容00h01h04h05h34h12h00h30h70h00h共10个字节的存储单元。【4-4】答疑:
(1)要给每个子程序赋一个名字,实际上是子程序入口地址的符号。
(2)明晰入口条件、出口条件。所谓入口条件,说明子程序须要哪些参数,放到哪个
寄存器和哪个内存单元;
原创力文档

文档评论(0)