单片微型计算机原理与接口技术 髙锋版 课后答案第4章

发布时间 : 星期二 文章单片微型计算机原理与接口技术 髙锋版 课后答案第4章更新完毕开始阅读

.专业整理.

第4章 【单片机的程序设计】 思考与练习题解析

【4—1】简述下列基本概念:程序、程序设计、机器语言、汇编语言及高级语言。 【答】各基本概念如下。

·程序:为计算某一算式或完成某一工作的若干指令的有序集合。

·程序设计:单片机的全部工作概括起来,就是执行程序的过程。为单片机准备这一程 序,即编制程序的工作过程。 ’ ·机器语言:用二进制代码表示的指令系统称为“机器语言系统”,简称为“机器语言”。 ·汇编语言:用英文字符来代替机器语言,这些英文字符称为“助记符’’。用这种助记符表示指令系统的语言称为“汇编语言”或“符号语言”。

·高级语言:参照数学语言而设计的、近似于人们日常用语的语言。它是面向问题或者 面向过程的语言。这种语言不仅直观、易学、易懂,而且通用性强,易于移植到不同类型的机器中。 【4—2】在单片机领域,目前最广泛使用的是哪几种语言?有哪些优越性?单片机能否直接执行这几种语言?

【答】在单片机领域,目前最广泛使用的是汇编语言和高级语言。

汇编语言编写的程序效率高,占用存储空间小,运行速度快,而且能反映单片机的实际运行情况。但编程比使用高级语言困难,通用性差。单片机不能直接执行汇编语言程序,必须通过人工(或机器)汇编把汇编语言程序转换为机器语言程序。 高级语言不受具体机器的限制,而且使用了许多数学公式和习惯用语,从而简化了程序设计的过程,通用性强,易于移植到不同类型的单片机中。

单片机不能直接识别和执行高级语言,需要将其转换为机器语言程序才能识别和执行。 对于高级语言,这一转换工作通常称为“编译”或者“解释”。进行编译或者解释的专用程序称为“编译程序”或者“解释程序”。

【4—3】什么叫伪指令?8OC51单片机程序设计中主要有哪些伪指令语句? 【答】伪指令又称为“汇编程序控制译码指令”。“伪”体现在汇编时不产生机器指令代码,不影响程序的执行,仅指明在汇编时执行一些特殊的操作。例如.为程序指定一个存储区,将 一些数据、表格常数存放在指定的存储单元,说明源程序开始或结束等.。不同的单片机开发装置所定义的伪指令不全相同。

80C51单片机程序设计中主要有伪指令语句如下。 1.ORG(Origin)一汇编起始地址伪指令 , 指令格式为:ORG <表达式> ’ 其含义是向汇编程序说明,下述程序段的起始地址由表达式指明。表达式通常为十六进 制地址码。

2.END(END 0f Assembly)一汇编结束伪指令 。 其含义是通知汇编程序,该程序段汇编至此结束。 3.EQU(EQUate)—赋值伪指令 。 指令格式为:<标号> EQU <表达式>

其含义是把表达式赋值于标号,这里的标号和表达式是必不可少的。用EQU语句给一 个标号赋值以后,在整个源程序中该标号的值是固定的,不能更改。 4.DL--定义标号值伪指令

指令格式为:<标号> DL <表达式>

其含义也是说明标号等值于表达式。同样,标号和表达式是必不可少的。用DL语句在 同一源程序中给同一标号赋予不同的值,即可更改已定义的标号值。

.学习帮手.

.专业整理.

5.DB(Define Byte)—定义字节伪指令 指令格式为:<标号>DB <表达式或表达式表>

其含义是将表达式或表达式表所表示的数据或数据串存入从标号开始的连续存储单元 中。标号为可选项,它表示数据存储单元地址。表达式或表达式表是指一个字节或用逗号分 开的字节数据。可以是用引号括起来的字符串,字符串中的字符按ASCII码存于连续的 ROM中。

6.DW(Define Word)---定义字伪指令

指令格式为:<标号> DW <表达式或表达式表>

其含义是把字或字串值存人由标号开始的连续存储单元中,并且把字的高字节数存人低 地址单元,低字节数存入高地址单元。按顺序连续存放。 7.DS(Define Stonage)—定义存储区伪指令 指令格式为:<标号>DS <表达式>

· 其含义是通知汇编程序,在目标代码中,以标号为首地址保留表达式值的若干存储单元以备源程序使用。汇编时,对这些单元不赋值。

注意:对于80C51单片机,DB、DW和DS等伪指令只能应用于程序存储器,而不能应用于数据存储器。

8.BIT—位定义伪指令

用于给字符名称赋予位地址。

命令格式为:<字符名称> BIT <位地址>

其中,位地址可以是绝对地址,也可以是符号地址。 【4—4】什么是结构化程序设计?它包含哪些基’本结构程序?

【答】 程序设计有时可能是一件很复杂的工作,但往往有些程序结构是很典型的。采用结 构化程序编程时,规律性极强,简单清晰,易读/写,具有调试方便、生成周期短、可靠性高等特点。

根据结构化程序设计的观点,功能复杂的程序结构一般采用三种基本控制结构,即顺序结构、分支结构和循环结构,再加上子程序结构及中断服务子程序结构,共包含五种基本程序结构。

【4—5】顺序结构程序的特点是什么?试用顺序结构编写三字节无符号数的加法程序段,最高字节的进位存入用户标志F0中。

【答】顺序结构是按照逻辑操作顺序,从某一条指令开始逐条顺序执行,直至某一条指令为止。比如数据的传送与交换、简单的运算、查表等程序的设计。顺序结构是所有程序设计中 最基本、最单纯的程序结构形式,因而是一种最简单、应用最普遍的程序结构。在顺序结构程序中没有分支,也没有子程序,但它是组成复杂程序的基础和主干。

例如:三字节无符号数的加法程序段,最高字节的进位存人用户标志FO中。

假设加数存放在内存20H、21H和22H中,被加数存放在内存3OH、31H和32H中,和存放在内存40H、41H和42H中。数据存放次序为低字节在前。 MOV A,3 0H ;取被加数低字节数 ADD A,20H ;求和

M07 40H,A ;和存入 MOV A,31H

ADDC A,21H ;带进位求和 MOV 41H,A MOV A,32H

ADDC A,22H ;带进位求和

.学习帮手.

.专业整理.

MOV 42H.A ,

MOV F0,C ;最高字节的进位存入用户标志F0中

【4—6】80C51单片机有哪些查表指令?它们有何本质区别?请编写按序号i 值查找Di(1 6位长度)的方法。设值i存放在R7中,将查找到的数据存放于片内RAM的30H、31H单元中。请画出程序流程图,编写查表程序段,加上必要的伪指令,并对源程序加以注释。 【答】80c51有两种查表指令,即近程查表指令“MOVC A,@A+PC”和远程查表指令 “MOVC A,@AA+ DPTR\这两条指令的功能均是从程序存储器中读取数据(如表格、常数等),执行过程相同,其差别是基址不同,因此,适用范围也不同。

累加器A为变址寄存器,而PC、DPTR为基址寄存器。DPTR为基址寄存器时,允许数表存放在程序存储器的任意单元,称为“远程查表”,编程比较直观;而PC为基址寄存器时,数表只能放在该指令单元往下的256个单元中,称为“近程查表”。编程时需要计算累加器A中的值与数表首址的偏移量。

例如,按序号i值查找Di(1 6位长度)的源程序如下所示: ORG XXXXH

MOV DPTR,#TABLE 指向表首址 MOV A,R7 ;取值i RL A ;Di为二个字节 MOV R7,A ;i x 2

MOVC A,@A+DPTR ;查表获得Di的高字节 MOV 30H.A MOV A,R7

INC A 指向表的下一个地址

MOVC A,@A+DPTR ;{表获得Di的低字节 MOV 31H, A

TABLE: Dw …… ;表(Dw为双字节,高字节在前) RET

查表程序流程图如图4-1所示。

【4—7】根据运算结果给出的数据到指定的 数据表中查找对应的数据字。运算结果给出的 数据在片内RAM的40H单元中,给出的数据大 小在00~0FH之间,数据表存放在20H开始的 片内存储器中。查表所得数据字为双字节(高字 节在后),高字节存于42H、低字节存于41H单 元。其对应关系为:

给出数据: 00 H 0 1 H 0 2 H …0DH 0EH 0FH

对应数据:00 A0 H 7DC2 H FF09 H … 3456H 89ABH 5678 H 请编制查表程序段,加上必要的伪指令,并加以注释。 【答】程序如下: ORG 0000H

AJMP MAIN , 0RG 0020H

TAB:DB OAOH,OOH,0C2H,7DH,09H,OFFH,...,56H,34H,0.ABH,89H,DB 78H,56H; 数据字表 ORG 0050H

.学习帮手.

.专业整理.

MAIN: MOV A,40H ;运算结果给出的数据放在40H中 MOV DPTR,#TAB ;指向数据字表首地址

RL A ;由于是双字节,所以A左移1位(乘2) MOV 40H,A ;结果放在40H ’

MOVC A,@A+DPTR ;查表,找出对应的值

MOV 41H,A ;查找出的数据值低字节放入41H MOV A.40H

ADD A,#01H ;查找数据的高位字节 MOV DPTR,#TAB MOVC A,@A+DPTR

MOV 42H,A 。 ;查找出的数据值高字节放入42H SJMP$

注意:数据表存放在20 H开始的片内存储器中,该存储器应为内部程序存储器,因为查表指令MOVC的功能是从程序存储器中读数据。

【4—8】什么是分支结构程序?8OC 1的哪些指令可用于分支结构程序编程?有哪些多分支转移指令?由累加器A中的动态运行结果值进行选择分支程序,分支转移指令选用LJMP,请编写散转程序段和画出程序流程图,加上必要的伪指令,并加以注释。 【答】分支结构程序的主要特点是程序执行流程中必然包含有条件判断指令。符合条件要求和不符合条件要求的有不同的处理路径。编程的主要方法和技术是合理选用具有逻辑判断功能的指令。在程序设计时,往往借助程序框图(判断框)来指明程序的走向。 一般情况下,每个分支均需要单独执行一段程序,对分支程序的起始地址赋予一个地址标号,以便当条件满足时转向指定地址单元去执行程序,条件不满足时仍顺序往下执行程序。 80C51的条件判跳指令极其丰富,功能极强,特别是位处理判跳指令,对复杂问题的编程提供了极大方便。程序中每增加一条条件判跳指令,就应增加一条分支。 分支结构程序的形式有单分支结构和多分支结构两种。 ①在80C51指令系统中·可实现单分支程序转移的指令有位条件转移指令,如JC、JNC、 JB、JNB和JBC等,还有一些条件转移指令,如JZ、JNZ和DJNZ等。 . ②80C51设有两条多分支选择指令。 (a)散转指令:JMP @A+DPTR

散转指令由数据指针DPTR决定多分支转移程序的首地址,由累加器A中内容动态地选择对应的分支程序。因此,可以从多达256个分支中选择一个分支散转。 (b)比较指令:CJNE A,direct,rel (共有4条)

比较两个数的大小,必然存在大于、等于、小于三种情况,这时就需要从三个分支中选择一 个分支执行程序。

例如:由累加器A中的动态运行结果值进行选择分支程序,分支转移指令选用LJMP。 ORG XXXXH

MOV DPTR,#JPTAB ;分支转移表首地址 CLR C MOV B, A RLC A JNC TAB INC DPTR

TAB: ADD A,B ;(A)* 3 JNC TABLE

.学习帮手.

联系合同范文客服:xxxxx#qq.com(#替换为@)