单片微型计算机原理及接口技术答案.docx
- 文档编号:3654622
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:12
- 大小:24.54KB
单片微型计算机原理及接口技术答案.docx
《单片微型计算机原理及接口技术答案.docx》由会员分享,可在线阅读,更多相关《单片微型计算机原理及接口技术答案.docx(12页珍藏版)》请在冰豆网上搜索。
单片微型计算机原理及接口技术答案
单片微型计算机原理及接口技术答案
【篇一:
单片微型计算机原理与接口技术髙锋版课后答案第4章】
txt>思考与练习题解析
【4—1】简述下列基本概念:
程序、程序设计、机器语言、汇编语言及高级语言。
【答】各基本概念如下。
【4—2】在单片机领域,目前最广泛使用的是哪几种语言?
有哪些优越性?
单片机能否直接执行这几种语言?
【答】在单片机领域,目前最广泛使用的是汇编语言和高级语言。
汇编语言编写的程序效率高,占用存储空间小,运行速度快,而且能反映单片机的实际运行情况。
但编程比使用高级语言困难,通用性差。
单片机不能直接执行汇编语言程序,必须通过人工(或机器)汇编把汇编语言程序转换为机器语言程序。
高级语言不受具体机器的限制,而且使用了许多数学公式和习惯用语,从而简化了程序设计的过程,通用性强,易于移植到不同类型的单片机中。
单片机不能直接识别和执行高级语言,需要将其转换为机器语言程序才能识别和执行。
对于高级语言,这一转换工作通常称为“编译”或者“解释”。
进行编译或者解释的专用程序称为“编译程序”或者“解释程序”。
【4—3】什么叫伪指令?
8oc51单片机程序设计中主要有哪些伪指令语句?
【答】伪指令又称为“汇编程序控制译码指令”。
“伪”体现在汇编时不产生机器指令代码,不影响程序的执行,仅指明在汇编时执行一些特殊的操作。
例如.为程序指定一个存储区,将一些数据、表格常数存放在指定的存储单元,说明源程序开始或结束等.。
不同的单片机开发装置所定义的伪指令不全相同。
80c51单片机程序设计中主要有伪指令语句如下。
1.org(origin)一汇编起始地址伪指令,
指令格式为:
org表达式’
其含义是向汇编程序说明,下述程序段的起始地址由表达式指明。
表达式通常为十六进制地址码。
2.end(end0fassembly)一汇编结束伪指令。
其含义是通知汇编程序,该程序段汇编至此结束。
3.equ(equate)—赋值伪指令。
指令格式为:
标号equ表达式
其含义是把表达式赋值于标号,这里的标号和表达式是必不可少的。
用equ语句给一个标号赋值以后,在整个源程序中该标号的值是固定的,不能更改。
4.dl--定义标号值伪指令
指令格式为:
标号dl表达式
其含义也是说明标号等值于表达式。
同样,标号和表达式是必不可少的。
用dl语句在同一源程序中给同一标号赋予不同的值,即可更改已定义的标号值。
5.db(definebyte)—定义字节伪指令
指令格式为:
标号db表达式或表达式表
其含义是将表达式或表达式表所表示的数据或数据串存入从标号开始的连续存储单元中。
标号为可选项,它表示数据存储单元地址。
表达式或表达式表是指一个字节或用逗号分开的字节数据。
可以是用引号括起来的字符串,字符串中的字符按ascii码存于连续的rom中。
6.dw(defineword)---定义字伪指令
指令格式为:
标号dw表达式或表达式表
其含义是把字或字串值存人由标号开始的连续存储单元中,并且把字的高字节数存人低地址单元,低字节数存入高地址单元。
按顺序连续存放。
7.ds(definestonage)—定义存储区伪指令
指令格式为:
标号ds表达式
注意:
对于80c51单片机,db、dw和ds等伪指令只能应用于程序存储器,而不能应用于数据存储器。
8.bit—位定义伪指令
用于给字符名称赋予位地址。
命令格式为:
字符名称bit位地址
其中,位地址可以是绝对地址,也可以是符号地址。
【4—4】什么是结构化程序设计?
它包含哪些基’本结构程序?
【答】程序设计有时可能是一件很复杂的工作,但往往有些程序结构是很典型的。
采用结构化程序编程时,规律性极强,简单清晰,易读/写,具有调试方便、生成周期短、可靠性高等特点。
根据结构化程序设计的观点,功能复杂的程序结构一般采用三种基本控制结构,即顺序结构、分支结构和循环结构,再加上子程序结构及中断服务子程序结构,共包含五种基本程序结构。
【4—5】顺序结构程序的特点是什么?
试用顺序结构编写三字节无符号数的加法程序段,最高字节的进位存入用户标志f0中。
【答】顺序结构是按照逻辑操作顺序,从某一条指令开始逐条顺序执行,直至某一条指令为止。
比如数据的传送与交换、简单的运算、查表等程序的设计。
顺序结构是所有程序设计中最基本、最单纯的程序结构形式,因而是一种最简单、应用最普遍的程序结构。
在顺序结构程序中没有分支,也没有子程序,但它是组成复杂程序的基础和主干。
例如:
三字节无符号数的加法程序段,最高字节的进位存人用户标志fo中。
假设加数存放在内存20h、21h和22h中,被加数存放在内存3oh、31h和32h中,和存放在内存40h、41h和42h中。
数据存放次序为低字节在前。
mova,30h;取被加数低字节数
adda,20h;求和
m0740h,a;和存入
mova,31h
addca,21h;带进位求和
mov41h,a
mova,32h
addca,22h;带进位求和
mov42h.a,
movf0,c;最高字节的进位存入用户标志f0中
【4—6】80c51单片机有哪些查表指令?
它们有何本质区别?
请编写按序号i值查找di(16位长度)的方法。
设值i存放在r7中,将查找到的数据存放于片内ram的30h、31h单元中。
请画出程序流程图,编写查表程序段,加上必要的伪指令,并对源程序加以注释。
【答】80c51有两种查表指令,即近程查表指令“movca,@a+pc”和远程查表指令“movca,@aa+dptr这两条指令的功能均是从程序存储器中读取数据(如表格、常数等),执行过程相同,其差别是基址不同,因此,适用范围也不同。
累加器a为变址寄存器,而pc、dptr为基址寄存器。
dptr为基址寄存器时,允许数表存放在程序存储器的任意单元,称为“远程查表”,编程比较直观;而pc为基址寄存器时,数表只能放在该指令单元往下的256个单元中,称为“近程查表”。
编程时需要计算累加器a中的值与数表首址的偏移量。
例如,按序号i值查找di(16位长度)的源程序如下所示:
orgxxxxh
movdptr,#table指向表首址
mova,r7;取值i
rla;di为二个字节
movr7,a;ix2
movca,@a+dptr;查表获得di的高字节
mov30h.a
mova,r7
inca指向表的下一个地址
movca,@a+dptr;{表获得di的低字节
mov31h,a
table:
dw?
?
;表(dw为双字节,高字节在前)
ret
查表程序流程图如图4-1所示。
【4—7】根据运算结果给出的数据到指定的
数据表中查找对应的数据字。
运算结果给出的
数据在片内ram的40h单元中,给出的数据大
小在00~0fh之间,数据表存放在20h开始的
片内存储器中。
查表所得数据字为双字节(高字
节在后),高字节存于42h、低字节存于41h单
元。
其对应关系为:
给出数据:
00h01h02h?
0dh0eh0fh
对应数据:
00a0h7dc2hff09h?
3456h89abh5678h
请编制查表程序段,加上必要的伪指令,并加以注释。
【答】程序如下:
org0000h
ajmpmain,
0rg0020h
tab:
dboaoh,ooh,0c2h,7dh,09h,offh,...,56h,34h,0.abh,89h,db78h,56h;数据字表
org0050h
main:
mova,40h;运算结果给出的数据放在40h中
movdptr,#tab;指向数据字表首地址
rla;由于是双字节,所以a左移1位(乘2)
mov40h,a;结果放在40h’
movca,@a+dptr;查表,找出对应的值
mov41h,a;查找出的数据值低字节放入41h
mova.40h
adda,#01h;查找数据的高位字节
movdptr,#tab
movca,@a+dptr
mov42h,a。
;查找出的数据值高字节放入42h
sjmp$
注意:
数据表存放在20h开始的片内存储器中,该存储器应为内部程序存储器,因为查表指令movc的功能是从程序存储器中读数据。
【4—8】什么是分支结构程序?
8oc1的哪些指令可用于分支结构程序编程?
有哪些多分支转移指令?
由累加器a中的动态运行结果值进行选择分支程序,分支转移指令选用ljmp,请编写散转程序段和画出程序流程图,加上必要的伪指令,并加以注释。
【答】分支结构程序的主要特点是程序执行流程中必然包含有条件判断指令。
符合条件要求和不符合条件要求的有不同的处理路径。
编程的主要方法和技术是合理选用具有逻辑判断功能的指令。
在程序设计时,往往借助程序框图(判断框)来指明程序的走向。
一般情况下,每个分支均需要单独执行一段程序,对分支程序的起始地址赋予一个地址标号,以便当条件满足时转向指定地址单元去执行程序,条件不满足时仍顺序往下执行程序。
80c51的条件判跳指令极其丰富,功能极强,特别是位处理判跳指令,对复杂问题的编程提供了极大方便。
程序中每增加一条条件判跳指令,就应增加一条分支。
分支结构程序的形式有单分支结构和多分支结构两种。
(a)散转指令:
jmp@a+dptr
散转指令由数据
指针dptr决定多分支转移程序的首地址,由累加器a中内容动态地选择对应的分支程序。
因此,可以从多达256个分支中选择一个分支散转。
(b)比较指令:
cjnea,direct,rel(共有4条)
比较两个数的大小,必然存在大于、等于、小于三种情况,这时就需要从三个分支中选择一个分支执行程序。
例如:
由累加器a中的动态运行结果值进行选择分支程序,分支转移指令选用ljmp。
orgxxxxh
movdptr,#jptab;分支转移表首地址
clrc
movb,a
rlca
jnctab
incdptr
tab:
adda,b;(a)*3
jnctable
incdptr
table:
jmp@a+dptr;多分支转移
jptab:
ltmploopl;长转移指令为3个字节
ljmploop2
注意:
长转移指令为3字节,因此,a中内容应乘以3。
若大于一个字节,则dph要加1。
分支程序流程图如图4-2所示。
【4-9】循环结构程序有何特点?
80c51的循环转移指令有什么特点?
何谓循环嵌套?
编程时应注意什么?
【答】循环是强制cpu重复多次地执行一串指令的基本程序结构。
从本质上看,循环程序结构只是分支程序中的一个特殊形式。
循环程序由4个部分构成,即循环初始化、循环体、循环控制和结束部分。
循环次数已知情况下,采用计数循环程序,其特点是必须在初始化部分设定计数的初值,循环控制部分依据计数器的值决定循环次数。
根据控制循环结束的条件,决定是否继续循环程序的执行。
所谓的结束条件可以是搜索到某个关键字(比如回车符cr),也可以是发生的某种变化(如故障引起电路电平变化)等,什么时候结束循环是不可预知的。
80c51设有功能强的循环转移指令:
djnzrn,rel..;以工作寄存器作为控制计数器
djnzdirect,rel.;以直接寻址单元作为控制计数器
cjnea,direct,rel;比较不相等转移
这几条基本指令可派生出很多条不同控制计数器的循环转移指令,大大扩充了应用范围和多重循环层次。
循环嵌套就是在循环内套用循环的结构形式,也称“多重循环”。
循环的执行过程是从内向外逐层展开的。
内层执行完全部循环后,外层则完成一次循环,逐次类推。
层次必须分明,层次之间不能有交叉,否则将产生错误。
编程时要注意循环的正确退出,要防止出现“死循环”。
【4-10】什么是子程序?
它的结构特点是什么?
什么是子程序嵌套?
【答】在编制应用程序时,往往将需要多次应用但完成的运算或操作相同的程序段,编制成一个子程序,并尽量使其标准化,存放于某存储区域。
调用子程序的程序称为“主程序”或“调用程序”。
子程序是由专门的子程序调用指令call调用,而以子程序返回指令ret结束的程序段。
子程序的第一条指令地址,通常称为“子程序首地址”或“人口地址”,往往采用标号(可用助记符)加以表示,调用(转子)指令的下一条指令地址,通常称为“返回地址”或“断
【篇二:
单片微机原理与接口技术答案(宋跃版)】
xt>1.1写出下列二进制数的原码、反码和补码(设字长为8位)。
(1)001011
(3)-001011
答:
(1)原码:
00001011反码:
00001011补码:
00001011
(2)原码:
00100110反码:
00100110补码:
00100110
(3)原码:
10001011反码:
11110100补码:
11110101
(4)原码:
10111111反码:
11000000补码:
11000001
1.2已知x和y,试计算下列各题的[x+y]补和[x-y]补(设字长为8位)。
(1)x=1011
(2)x=1011
(3)x=1000
答:
(1)x补码=00001011y补码=00000011[–y]补码=11111101
[x+y]补=00001110[x-y]补=00001000
(2)x补码=00001011y补码=00000111[–y]补码=11111001
[x+y]补=00010010[x-y]补=00000100
(3)x补码=00001000y补码=00001100[–y]补码=11110100
[x+y]补=00010100[x-y]补=11111100
1.3微型计算机由那几部分构成?
答:
微型计算机由微处理器、存储器和i/o接口电路构成。
各部分通过地址总线(ab)、数据总线(db)和控制总线(cb)相连。
(2)100110(4)-111111y=0011y=0111y=1100
1.48086的寻址范围有多大?
其物理地址是如何形成?
答:
8086有20根地址总线,它可以直接寻址的存储器单元数为1m字节,其地址区域为00000h—fffffh。
1.5什么叫单片机?
它有何特点?
答:
单片机就是在一块硅片上集成了cpu、ram、rom、定时器/计数器和多种i/o口(如并行、串行及a/d变换器等)的一个完整的数字处理系统。
单片机主要特点有:
品种多样,型号繁多;存储容量大;频率高,速度快;控制功能强,集成度高;功耗低;配套应用软件多。
第2章思考题及习题参考答案:
2.1.说明rom、eprom、eeprom和flash之间的主要区别
解:
rom为只读存储器,在一般情况下只能读出所存信息,而不能重新写入。
信息的写入是通过工厂的制造环节或采用特殊的编程方法进行的,一旦写入,就能长期保存。
eprom芯片一般允许用户多次编程和擦除。
擦除时,通过向芯片窗口照射紫外光的方法来进行。
eeprom,也称e2prom。
该类芯片允许用户多次编程和擦除。
擦除时,可采用加电方法在线进行。
flash是一种新型的大容量、速度快、电可擦除可编程只读存储器。
2.2.eprom、prom、动态ram、静态ram等存储器中,哪几类是可以随时读写的?
解:
动态ram、静态ram这几类是可以随时读写的。
2.3某rom芯片中有12根地址输入端和8个数据输出端,该芯片的存储容量是多少位?
解:
芯片的存储容量是4k*8位。
2.4.说明动态ram和静态ram的主要区别,使用时应如何选用?
解:
静态(static)ram,即sram。
它以触发器为基本存储单元,所以只要不掉电,其所存信息就不会丢失。
该类芯片的集成度不如动态ram,功耗也比动态ram高,但它的速度比动态ram快,也不需要刷新电路。
在构成小容量的存储系统时一般选用sram。
在微型计算机中普遍用sram构成高速缓冲存储器。
动态(dynamic)ram,即dram。
一般用mos型半导体存储器件构成,最简单的存储形式以单个m0s管为基本单元,以极间的分布电容是否持有电荷作为信息的存储手段,其结构简单,集成度高。
但是,如果不及时进行刷新,极间电容中的电荷会在很短时间内自然泄漏,致使信息丢失。
所以,必须为它配备专门的刷新电路。
动态ram芯片的集成度高、价格低廉,所以多用在存储容量较大的系统中。
目前,微型计算机中的主存几乎都是使用动态ram。
2.5.说明norflash与nandflash的主要区别,使用时应如何选用?
解:
norflash具有以下特点:
(1)程序和数据可存放在同一芯片上,拥有独立的数据总线和地址总线,能快速随机读取,允许系统直接从flash中读取代码执行,而无需先将代码下载至ram中再执行;
(2)可以单字节或单字编程,但不能单字节擦除,必须以块为单位或对整片执行擦除操作,在对存储器进行重新编程之前需要对块或整片进行预编程和擦除操作。
但是norflash的擦除和编程速度较慢,块尺寸又较大,因此擦除和编程操作所花费的时间很长,在纯数据存储和文件存储的应用中,nor技术显得力不从心。
nandflash具有以下特点:
(1)以页为单位进行读和编程操作,1页为256或512b(字节);以块为单位进行擦除操作,1块为4k、8k或16kb。
具有快编程和快擦除的功能,其块擦除时间是2ms;而nor技术的块擦除时间达到几百ms。
(2)数据、地址采用同一总线,实现串行读取。
随机读取速度慢且不能按字节随机编程。
(3)芯片尺寸小,引脚少,是位成本(bitcost)最低的固态存储器,将很快突破每兆字节1美元的价格限制。
(4)芯片包含有失效块,其数目最大可达到3~35块(取决于存储器密度)。
失效块不会影响有效块的性能,但设计者需要将失效块在地址映射表中屏蔽起来。
norflash具有可靠性高、随机读取速度快的优势,在擦除和编程操作较少而直接执行代码的场合,尤其是纯代码存储的应用中广泛使用,如pc的bios固件、移动电话、硬盘驱动器的控制存储器等。
nandflash结构的闪速存储器适合于纯数据存储和文件存储,主要作为smartmedia卡、compactflash卡、pcmciaata卡、固态盘的存储介质,并正成为闪速磁盘技术的核心。
2.7.什么是地址重叠区?
它对存储器扩展有什么影响?
解:
基本地址和前面全译码连接的地址范围是相同的,但两者还是有区别的。
区别在于全译码连接时各芯片的地址是唯一的,而部分译码连接时各芯片地址不是唯一的,也就是可以由若干个地址都选中同一芯片的同一单元,既所谓的地址重叠区。
由于存在的地址重叠,影响了地址区的有效使用,也限制了存储器的扩展。
因此,在选用部分译码时,也要尽可能多选一些高位地址线来作为译码器的输入。
解:
a15a14a13a12a11a10a9a8a7a6a5a4a3a2a1a0地址
g1abc
1010000000000000片1:
a000h
1010001111111111片1:
a3ffh
a15a14a13a12a11a10a9a8a7a6a5a4a3a2a1a0地址
g1abc
1011000000000000片2:
b000h
1011001111111111片2:
b3ffh
a15a14a13a12a11a10a9a8a7a6a5a4a3a2a1a0地址
g1abc
1011010000000000片3:
b400h
1011011111111111片3:
b7ffh
所以各片地址范围为:
片1:
a000h-a3ffh,
片2:
b000h-b3ffh,
片3:
b400h-b7ffh
解:
线译码法:
寻址范围:
2000h~5fffh
【篇三:
单片微机原理与接口技术作业参考答案(5)】
1、子程序调用时,参数的传递方法有哪几种?
答:
子程序调用时,参数的传递方法有:
(1)利用累加器a或寄存器;
(2)利用存储器;
(3)利用堆栈。
2、编写程序把外部ram的2000-20ffhram空间置零。
答:
org000h
movr0,#00h
movdptr,#2000h;空间首地址送dptr
loop:
mova,#00h
movx@dptr,a;清零
incdptr;dptr加1
incr0;字节数加1
cjner0,#00h,loop;连续清256个字节
loop1:
sjmploop1
end
3、编写一段程序,把外部ram中1000h~1030h单元的内容传送到内部ram的30h~60h单元中。
答:
org0030h
movr1,#49
movr0,#30h
movdptr,#1000h
loop:
movxa,@dptr
mov@r0,a
incdptr
incr0
djnzr1,loop
sjmp$
end
4、在内部ram的21h单元开始存有一组单字节不带符号数,数据长度为30h,要求找出最大数存入big单元。
答:
start:
movr7,#30h;30是立即数
decr7
movr0,#21h
mova,@r0
loop:
incr0
clrc
subba,@r0;(a)-(r0)-c给a
jncloop1;c=0,够减跳转loop1,a还原
mova,@r0;c=1,不够减,把r0给a
next:
djnzr7,loopmovr5,a
sjmp$
loop1:
addca,@r0
sjmpnextend
5、编程统计累加器a中“1”的个数。
答:
movr1,#0
pushacc;存放a
loop1:
jzdone
clrc
rlca;a=0转到done;c清0;a带进位c右移
;c=0跳转loop1jncloop1
incr1;c不=0,r1+1,结果放在r1,计算出a有一位1
;跳转回loop1sjmploop1
done:
popacc
sjmp$
end
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片 微型计算机 原理 接口 技术 答案