微机原理与嵌入式系统基础--练习答案1_第1页
微机原理与嵌入式系统基础--练习答案1_第2页
微机原理与嵌入式系统基础--练习答案1_第3页
微机原理与嵌入式系统基础--练习答案1_第4页
微机原理与嵌入式系统基础--练习答案1_第5页
免费预览已结束,剩余27页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、练习题(首先,在批改作业的过程中发现存在大量的抄袭问题,错误都是千篇一律,特此警戒)1、简述冯诺依曼体系结构计算机的要点和工作过程。答:冯诺依曼体系结构计算机的要点:计算机中的信息(程序和数据)以二进制方式表示。 程序预存储,机器自动执行。计算机由运算器、控制器、存储器、输入设备和输出设备五大部分组成。计算机通过执行预存储在存储器中的程序来完成预定的运算。程序由计算机的指令序列构成,计算机在处理器的控制下,首先从存储器读取一条待执行的指令到处理器中,接下来分析这条指令,而后发出该指令对应的电平脉码序列,即执行该指令。并以此递归运行程序。2、简述计算机各组成部分的功能。答:豊 中央处理单元(CP

2、U):主要由运算器、控制器构成。其中运算器主要用于完成诸如加、减、乘、除等算术运算和左右移位、与、或、非等逻辑运算;控制器主要用于完成机器指令的解析和执行,控制运算器进行相应的运算,控制数据在计算机各组成部分之间传送,控制计算机各组成 部分有条不紊地协调工作等。+ 存储器(Memory )是计算机系统中用来存储程序和数据的信息记忆部件。+ 输入/输出设备:信息进出计算机的数据通道。3、何谓总线?计算机中有哪几类总线?简述其用途。答:计算机的总线(Bus)就是连接计算机硬件各部件,用于计算机硬件各部件之间信息传输的公 共通道。按照其传送信号的用途属性,总线可细分为:地址总线(Address Bu

3、s)、数据总线(Data Bus)和控制总线(Control Bus)三类。地址总线(A_Bus):专用于在 CPU、存储器和 I/O 端口间传送地址信息的信号线。此类信号线传 送的信息总是从 CPU 到存储器或 I/O 端口,它是单向信号线。数据总线(D_Bus):专用于在 CPU、存储器和 I/O 端口间传送数据信息的信号线。此类信号线传 送的信息可以是从 CPU 到存储器或 I/O 端口(写”操作),也可能是从存储器或I/O 端口到 CPU(读”操作),它是双向信号线。控制总线(C_Bus):专用于 CPU 与其它部件之间传送控制信息和状态信息的信号线。此类信号 线的构成比较复杂,传送的

4、控制、状态信息可以是从CPU 到其它部件,也可能是从其它部件到CPU。此类总线中的某些具体的线是单向的(或从 CPU 到其它部件,或反之),但作为总线来说, 它是双向信号线。(总线是 ARM 核和外部的接口,是理解 ARM 体系结构的重要环节,答案中应该说明总线对系统的 影响,以及作为使用者来说应该怎样操作,应该重点掌握)4、简述计算机,真值?和 ,机器数?勺概念。答:各个信息在计算机中的二进制表示形式称之为机器数”,机器数所代表的值含义称为该机器数的 真值”。真值”可以是数值,也可以是字符,甚至是语音或图象等。5、什么是处理器的主频?什么是处理器的字长?答:CPU 主频也叫时钟频率,单位是

5、MHz (或 GHz),用来表示处理器的工作频率。CPU 字长是指运算器的位宽,单位是比特(bit),用于表示 CPU 一次运算可处理的二进制数据的位度。11、分别假设字长 n=8 , n=16,计算下列十进制数的补码:答:序号真值补码(n=8)补码(n=16)1560011 1000(0 x38)0000 0000 0011 1000(0 x0038)21150111 0011(0 x73)0000 0000 0111 0011(0 x0073)3-561100 1000(0 xC8)1111 1111 1100 1000 (0 xFFC8)4-1151000 1101(0 x8D)1111

6、 1111 1000 1101 (0 xFFC8)12、假设字长 n=16,写出下列补码的真值:答:0000 0100 0010 1001真=0 x0429真=1065 1000 0100 0010 1001真=0 x8429真=-317031111 1111 1111 1111真= 0 xffff 真=-16、 简述计算机接口在计算机系统中的作用。答: 输入/输出接口 ”是用于外设与计算机之间桥接和匹配的专用部件, 式存在。应用于计算机主机与外界的信息交互。通常以集成电路或板卡的形7、 将下列十进制数分别转换为十六进制数和二进制数: 123.85 ; 93.125 ; 23.625 ; 65

7、535答:123.85 = 0 x7B.D99 = 01111011.110110011001b93.125 = 0 x5D.2 = 01011101.001b23.625 = 0 x17.A = 00010111.101b65535 = 0 xFFFF =1111 1111 1111 1111b8、 将下列二进制数分别转换为十六进制数和十进制数: 1100 1101.1b ; 1000 1101.01b ; 11010.011b ; 101 1001 0111 0001b答:1100 1101.1b = 0 xCD.8 = 205.51000 1101.01b = 0 x8D.4 = 141

8、.2511010.011b = 0 x1A.6 = 26.375101 1001 0111 0001b = 0 x5971 = 22897(数值转换方面比较简单,掌握情况来看比较好,4 的错误率较高,是由于不认真做造成的)9、 完成下列二进制数的运算:答: 1010 0101b + 0011 1010 b=11011111b 1100 1011b -0010 0100 b= 10100111b 1000 0101.1b + 0001 1110.11 b=10100100.01b 1010 1101.01b -0100 1001.10b=1100011.11b10、完成下列十六进制数的运算:答:

9、 0 x39 + 0 x560 x800111 1111 1111 1111真= 0 x7FFF真=3276713、假设运算器的长度 n=16,完成下列补码运算,观察运算器内的结果值,观察CF、DF 和 OF 位的情况;再分别用真值运算验证,说明补码结果原因,总结OF 位于与补码运算溢出的关系。答:补码运算结果码真值比对CFDFOF说明0000 0100 0010 1001+1000 0100 0010 10011000 1000 0101 0010(0 x8852)1065+(-31703)=-30638-30638补=0 x8852000运算无溢出1000 0100 0010 1001+1

10、111 1111 1111 11111000 0100 0010 1000(0 x8428)(-31703)+(-1)=-31704-31704补=0 x8428110运算无溢出1111 1111 1111 1111+0111 1111 1111 11110111 1111 1111 1110(0X7FFE)(-1)+32767=3276632766补=0 x7FFE110运算无溢出0111 1111 1111 1111+0000 0000 0000 00011000 0000 0000 0000(0 x8000)32767+1=32768 (超出值域)-32768补=0 x8000011运算

11、有溢出14、什么是 ASCII 编码?写出引号内各字符的ASCII 编码“I Am a Student!。”答:ASCII 编码-美国标准信息交换标准码(American Standard Code for Information Interchange,ASCII),统一规定了常用符号的二进制数表示方式。计算机中常用ASCII 编码表示字符信息。I Am a Student!的 ASCII 编码-略。15、什么是嵌入式系统?有何特点?答:嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功 能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。其特点是:它是嵌

12、入到目标对象中的、 软硬件定制的专用计算机系统。16、举例在你的身边常见到的嵌入式系统产品,谈一谈你对嵌入式系统”的初步理解。答:略。17、简述嵌入式操作系统的特点。答:微内核、高可靠性、可裁减定制、满足实时性。18、简述你对嵌入式操作系统的基本认识,嵌入式操作系统在嵌入式系统开发中的必要性。 答:略。练习题(第二章基本上是问答题,作业中存在的问题是,最好用自己的语言来回答问题,如果一味抄书的话, 不能对问题理解透彻)1、何谓计算机体系结构?答:计算机体系结构是对计算机较高层次的抽象,是摆脱具体电路的实现而主要着眼于计算机系统 的逻辑特征、原理特征、结构特征和功能特征的抽象。2、什么是处理器的

13、指令?什么是处理器的指令系统?答:计算机中的“指令”就是CPU 执行某种操作的命令,它也是以二进制编码方式存在,每一条指令都对应着 CPU 要完成的特定操作。一台计算机中所有机器指令的集合称为该CPU 的“指令系统”。3、术语指令和语句有何差别?答:指令一般针对处理器而言, 它在物理操作级仅指示处理器完成一个具体操作,是计算机(处理器)编程的最细小的编程描述粒子。语句一般针对高级语言,一般是在算法级、逻辑级描述一个算逻运算;他们在描述程序时具有 不同的描述级别。4、什么是 RISC ?什么是 CISC ?简述他们的特点与差别。答:RISC 是 Reduced Instruction Set C

14、omputer,精简指令集计算机的缩写。它的特点是指令系统精 炼,处理器电路逻辑相对简单,且能够以更快的速度执行操作。对于负载的功能需要编程实现。CISC 是 Complex Instruction Set Computer,复杂指令集计算机的缩写。它的特点是指令系统中含有 大量的类似于高级程序设计语言结构的复合功能指令。指令系统庞大,处理器硬件电路的复杂度。5、ARM7 处理器是几级流水线?在 ARM7 处理器中,“ PC 旨向的是下一条要执行的指令”,这句话对吗?为什么?答:ARM7 处理器是三级流水线。在 ARM7 处理器中,“PC 旨向的是下一条要执行的指令”,这句话不对,因为流水线的

15、存在,指令码即使取送到处理器中也未必被执行;应该说“PC 指向的是下一条要取指的指令”。6、ARM7 中的状态、模式分别要说明什么问题?答:两种处理器状态”-分别用于支持两种指令系统。+ ARM 指令系统+ Thumbe 指令系统7 种处理器模式”-分别应用于 7 种场合,具有不同的寄存器资源、权限。7、 ARM 处理器的工作状态分为哪二种?ARM 处理器又是怎么定义和标志的?答:ARM 处理器的工作状态分为“ ARM 状态”和“ Thumbe”状态。在“ ARM 状态”下,处理器 执行 32位的指令码,在“ Thumbe 状态”下,处理器执行 16 位的指令码。“ARM 状态”和“ Thum

16、be” 状态下,处理器都是 32 位的处理器。 ARM 处理器中的 CPSR 寄存器的 T_bit (CPSR5)为 1 时, ARM 处理器的当前状态为“ ARM 状态”;ARM 处理器中的 CPSR 寄存器的 T_bit (CPSR5)为 0 时,ARM 处理器的当前状态为“ Thumbe 状态”。8、ARM7TDMI 支持哪几种指令集,各有什么特点?答:ARM7 处理器分别在“ ARM 状态”下执行 ARM 指令集指令码,在“ Thumbe 状态”下执行 Thumbe指令集指令码。+ ARM 指令集指令丰富、功能强大,Thumbe 指令集指令精简、功能紧凑;+ ARM 指令集指令码长都是

17、 32 位,Thumbe 指令集指令码长都是 16 位;+ ARM 指令集、Thumbe 指令集支持的都是 32 位运算指令。9、ARM7 处理器有哪些工作模式?不同工作模式下CPSR 寄存器的模式位如何设定?列表说明。答:ARM7 处理器有用户模式(usr)、系统模式(sys)、管理模式(svc)、终止模式(abt)、未定义 指令模式(und)、中断模式(irq)和快速中断模式(fiq)共 7 种模式。ARM 处理器使用 CPSR 寄存器的 CPSR 5:0来标示当前当前所处的工作模式,具体对应如下:序号M4:0处理器工作模式10b10000用户模式(0 x10)(usr )20b10001

18、FIQ 模式(0 x11 )(fiq )30b10010IRQ 模式(0 x12)(irq )40b10011管理模式(0 x13)(svc)50b10111中止模式(0 x17)(abt )60b11011未定义模式(0 x1b)(und )70b11111系统模式(0 x1f)(sys )10、描述 ARM7 处理器的内部寄存器结构,并分别说明R13、R14、R15 寄存器的作用。答:ARM7 处理器的内部寄存器寄存器 类别 奇存器 名各种模式下可见的寄存器用 户系 统管理终止未定义irqfiq通 用 寄 存器R0R0R1R1R2R2R3R3R4R4R5R5R6R6R7R7R8R8R8 f

19、iqR9R9R9 fiqR10R10R10 fiqR11R11R11 fiqR12R12R12 fiqR13(SP)R13R13 svcR13 abtR13 undR13 irqR13 fiqR14(LR)R14R14 svcR14 abtR14 undR14 irqR14 fiqR15(PC)R15状态寄 存器CPSRCPSRSPSR- -SPSR svcSPSR abtSPSR undSPSR irqSPSR fiq其中:R13 被处理器用作处理器堆栈指针SP; ARM 处理器中共有 6 个 R13,分别隶属于对应的处理器模式。如此,处理器可以同时开辟6 个处理器堆栈,分别服务于对应的处理

20、器模式。R14 被处理器用作连接寄存器LR ; LR 寄存器用于备份 PC,即用于记录程序的断点或调用点。ARM处理器中共有 6 个 R14,分别隶属于对应的处理器模式。R15 被处理器用作指令计数器 PCo ARM 处理器中只有一个 PC, PC 指向的是下一条要取指的指令。11、什么是堆栈?堆栈有几种类型,简述各类型堆栈的进/出栈过程。答:堆栈(Stack)是一种具有“后进先出”(LIFO-Last In First Out )特殊访问属性的存储结构。按照入栈时 SP 的变化方向和 SP 指向单元是否含有堆栈数据,堆栈共有满递增、空递增、满递减和空递 减四种方式。+满递增堆栈入出栈操作:略

21、!+空递增堆栈入出栈操作:入栈操作过程:SP XXSP SP+1;将入栈数据写入到堆栈指针SP 所指单元;递增调整堆栈指针 SP出栈操作过程:SPJSP-1XX SP;调整堆栈指针 SP;将堆栈指针 SP 所指单元中的数据弹出+满递减堆栈入出栈操作:入栈操作过程:SPJSP-1;调整堆栈指针 SPSPJXX;将入栈数据写入到堆栈指针SP 所指单元出栈操作过程:XXJSP ;将堆栈指针 SP 所指单元中的数据弹出SP- SP+1;调整堆栈指针 SP+空递减堆栈入出栈操作:12、 什么是字对齐”和半字对齐”数据存储?答:“半字”数据必须存放在存储器紧邻的两个字节单元,并且首字节地址必须能被2 整除

22、,这样存储的 16bit 数据称为半字对齐存储数据,16bit 数据这样的存储方式称为半字对齐存储。“字”数据必须存放在存储器紧邻的4 个字节单元,并且首字节地址必须能被4 整除,这样存储的32bit 数据称为字对齐存储数据,32bit 数据这样的存储方式称为字对齐存储。13、 简述程序计数器(PC)在处理器工作中的作用。答:CPU 总是按照 PC 的指向对指令序列进行取指、译码和执行,也就是说,最终是PC 决定了程序运行流向。在计算机运行中,处理器依据当前的情况和程序指令自动地修改PC,以实现程序预存储,计算机自动执行。14、 简述 ARM 处理器中的返回连接寄存器(LR )在处理器工作中的

23、作用。答:在 ARM 处理器中使用 R14 实现对断点和调用点的记录,即使用 R14 用作返回链接寄存器(LinkRegister,LR)。在硬件上 CPU 自动完成相应返回点的记录。需要时,可依据 LR 寄存器中的值追溯返回 点。(LR 寄存器的使用时 ARM 汇编的重点和难点,在启动代码中大量使用,应该重点掌握)15、 分别简述 ARM 处理器中的 CPSR、SPSR 在处理器工作中的作用。答:ARM 处理器中只有一个 CPSR 寄存器,被各模式共用,它记录了处理器当前的状态、模式、中 断屏蔽状态以及处理器的运算状态标志。ARM 处理器中含有 5 个存储程序状态寄存器SPSR( Saved

24、Program Status Register),他们分另 U 为 SPSR_svc、SPSR_abt、SPSR_und、SPSR_irq、SPSR_fiq,分另 U 隶属 于 ARM 处理器的 5 种异常模式。当处理器因某种异常发生而进入到对应的异常模式时,相应模式的 SPSR将自动地备份 CPSR 的原值,将来可使用此 SPSR 中保存的备份值恢复 CPSR。16、 结合 CPSR 的结构,说明其中的 M4:0的作用和 T 位的作用。3130292827876543210NZCV FTM4M3M2M1M0答:M4:0位用于标志处理器的当前模式;T 位用于标志处理器的当前状态。17、结合 C

25、PSR 的结构,说明其中的 I 位和 F 位的作用。3130292827876543210N Z CI F | T | M4 M3 | M2 M1 M0答:I 位用于标志处理器对于IRQ 异常的屏蔽状态;1=1 时,表示处理器屏蔽了IRQ 异常,I=0 时,表示处理器可以响应 IRQ 异常。F 位用于标志处理器对于 FIQ 异常的屏蔽状态;F=1 时,表示处理器屏蔽了 FIQ 异常,F=0 时,表示处理器可以响应 FIQ 异常。18、简述 ARM7TDMI 内部有哪些寄存器及特点。答:ARM 微处理器内共有 37 个 32 位的程序可访问寄存器物理资源,其中31 个通用寄存器,6 个状态寄存器

26、。寄存器 类别 寄存器 名各种模式下可见的寄存器用 户系 统管理终止未定义irqfiq通 用 寄 存器R0R0R1R1R2R2R3R3R4R4R5R5R6R6R7R7R8R8R8 fiqR9R9R9 fiqR10R10R10 fiqR11R11R11 fiqR12R12R12 fiqR13(SP)R13R13 svcR13 abtR13 undR13 irqR13 fiqR14(LR)R14R14 svcR14 abtR14 undR14 irqR14 fiqR15(PC)R15状态寄 存器CPSRCPSRSPSRSPSR svcSPSR abtSPSR undSPSR irqSPSR fiq

27、R0R7 :是 7 个模式共用的数据寄存器;R8R12 : FIQ 模式具有私有的 R8R12,其他 6 种模式共用一套 R8R12;R13、R14:用户模式和系统模式公用一套R13、R14,其他 5 种模式各自具有私有的R13、R14。R15: 7 个模式共用 R15,用作为程序计数器寄存器PC;CPSR: 7 个模式共用 CPSR,用作为当前程序状态寄存器;SPSR: 5 种异常模式各自具有私有的SPSR。19、 什么是 ARM 处理器的异常? ARM 处理器中有哪几种异常?答:在 ARM 中,异常是一些事件,这些事件能导致正常的程序执行流程被暂时地停止,而进入到该 事件对应的处理器异常模

28、式并对该事件进行处理,这个过程称作异常响应。ARM 中定义了复位、未定义指令、SWI (软中断)、预取指终止、预取数终止、irq 以及 fiq 等7种异常。20、 分别简述 ARM7 的 IRQ、FIQ 异常处理过程,说明其异常向量地址。答:发生 FIQ 异常时,CPU 自动转移到 0 x0000 001C 地址单元取指执行,同时处理器会自动转换到快中断模式。发生 IRQ 异常时,CPU 自动转移到 0 x0000 0018 地址单元取指执行,同时处理器会自动转 换到 IRQ 中断模式。IRQ、FIQ 异常向量地址分别是:0 x0000 0018、0 x0000 001CIRQ 异常处理过程:

29、 R1)R0+ ;elseR1+ ;(2) if( (R0!=10)&(R1!=20)R0 = R0 + R1;11、使用 ARM 汇编指令的条件执行功能,翻译下面C 代码语句。 if(x = = y)a = b + c;elsea = b c;if(x = = y) & ( a = = b)c = c * 2;答:答:(1)MOV R0, x;(2)MOVR0, x;MOVR1, y;MOVR1, y;MOVR2, a;MOVR2, aMOVR3, b;MOVR3, bMOVR4, c;MOVR4, cCMPR1, R2;CMPR0, R1ADDEQR2, R3, R4;CM

30、PEQR2, R3SUBNER2, R3, R4;MOVR4, R4, LSL #2(从 11 题和 12 题结合来看,对于将汇编程序到C 程序的转变掌握较好,反之则有一些欠缺,说明已经有了读汇编的能力, 但是使用上还存在问题; 汇编指令是针对寄存器的, 不能在指令中同时使用两个数 据, 例如: CMPx,y,必须将数值首先存入寄存器中)12、下列代码段是实现开 IRQ 中断和关 IRQ 中断功能,试补齐空白处内容。R0,CPSRR1,CPSRBICR1, R0,ORRR1,CPSR c, R1CPSR c, R1答:(1) MRSR0,CPSR(2)MRSR1, CPSRBICR1,R0,#

31、0 x80ORRR1, #0 x80MSRCPSR_c, R1MSRCPSR_c, R113、若 ARM CPU 中各寄存器及存储单元参数如下图所示,试写出指令执行后,各寄存器及存储单 元中内容为多少。 STMIA R13!,R0-R3 LDMDBR13, R0-R3R3R2R1存储地址数据0 x000080 000 x000080 040 x000080 080 x000080 0C0 x000080 100 x000080 140 x000080 180 x000080 1C0 x000080 20存储地址数据0 x00008000 x111111110 x000080 04x222222

32、220 x000080 08x333333330 x000080血444444440 x00008010 x555555550 x000080 14x666666660 x00008018x777777770 x00008010 x888888880 x00008020 x99999999STMIAR13!,R0-R3LDMDBR13, R0-R3执行前0 x000000040 x000000030 x00000002RC 0 x00000001R130X00008000执行后R3R2执行前0 x000000040 x000000030 x00000002R1R0 0 x00000001R13

33、0X0000800C执行后(这道题同样的反映出了多寄存器的掌握不够熟练)使用 ARM 指令实现 2 个 128bit 数的减法的功能段(第一个数由高到低放在寄存器二个数由高到低放在寄存器R7R4,结果差由高到低放在寄存器R11R8 中。)答:SUBSR8, RO, R4;低 32bit 运算,可能产生借位SBCSR9, R1, R5;带借位计算次低32bitSBCSR10,R2,R6;带借位计算次高32bitSBCSR11,R3,R7;带借位计算高32bitR0存储地址数据0 x00008000 x0000000 x000080 04x0000000 x00008008x0000000 x00

34、0080 00 x0000000 x000080 100 x000080 140 x000080 180 x000080 1C0 x000080 20执行前R3 0 x00000004R2 0 x00000003R1 0 x00000002RC 0 x00000001R130 x00008010存储地址数据0 x0000800 )(0 x111111110 x0000800 )4)x222222220 x0000800 )8)x333333330 x0000801(0 x444444440 x0000801 (0 x555555550 x0000801 4)x666666660 x000080

35、1 8)x777777770 x0000801 (0 x888888880 x0000802 Ex99999999STMIAR13!,R0-R3LDMDBR13, R0-R314R3R0,第执行前R3 0 x000000R2 0 x000000R1 0 x0000000 x00000001R130 x000080 00执行后执行后0 x4444444R30 x333333pR20 x2222222R10 x1111111R0OxOOOO8O0R13练习题1、 什么是计算机语言? 答:机器语言是一种用二进制代码表示指令和数据,能被机器直接识别的计算机语言。2、 相对于高级语言, 汇编语言有何特点

36、? 答: 汇编语言是一种面向物理层操作的计算机语言。 不同的处理器类型,具有不同的汇编语言。使用汇编语言编写程序能够直接利用硬件系统的特性(如寄存器、标志、中断系统等) ,可直接对位、 字节、字寄存器或存储单元、 I/O 端口进行处理,同时也能直接使用 CPU 指令系统提供的各种寻址方 式,编制出高质量的程序,这样的程序不但占用内存空间少,而且执行速度快。当然,由于汇编语言 不直接支持复杂的抽象数据类型,在描述目标系统数学模型时, 还需要程序员在存储器单元组织各种 抽象数据类型的存储方式,使得汇编语言程序设计较高级语言困难得多,需要较多的软件开发时间, 也增加了程序设计过程中出错的可能性,程序

37、维护也困难。3、 如何在汇编程序中显示声明文字池?什么情况下需要显示声明文字池?一般应在程序的什么位置 显示声明文字池?为什么?答:使用 LTORG 汇编器伪指令用于显示声明一个文字池(literal pool )。实际应用中, 如果 ARM 需要处理的操作数不符合 8bit 位图立即数的要求时, 那么就需要使用文 字池来存放这个常量。在 ARM 汇编语言中,使用 LDR 加载指令相对寻址文字池中存放的任意 32bit 立即数。因为 LDR 指令的寻址范围是指令位置的前后 4KB ,所以如果 LDR 指令所在位置距离文字池超出 4KB 范围,那 么需要在程序中的适当位置,使用 LTORG 伪指

38、令显式声明文字池。解决方法: 一般总可以在 LDR 伪指令前后 4KB 的范围内找到分支指令, 文字池可声明在分支 ( B) 指令之后的紧邻位置, 因为 B 指令总是会将程序的执行转移到其它地方的, 所以这样做不会影响代码 的正常执行。4、 简述汇编程序设计的一般流程。 答:使用计算机通过编程序解决某一问题时,通常按以下步骤进行:。分析问题,建立数学模型;2确定算法;3设计程序流程图;合理分配寄存器、存储空间和外设资源;编制程序;6调试程序;7形成文档;5、 实现汇编程序分支的关键语句有哪几条?分别用于什么场合? 答:汇编程序分支结构的实现是通过在运行时由机器根据不同的条件自动作出判断,选择执

39、行相应的处理程序段。分支指令主要有 BL 指令、 B 指令和 BX 指令,分别用于调用子程序、直接跳转和 带状态的跳转场合。6、 循环控制有哪几种方法?各有什么应用特点? 答:循环控制有两种方法。计数控制循环:通过计数循环次数,判断是否已达到预定次数,控制循环。适合已知循环次数 的循环控制。2 条件控制循环:通过判断循环终止条件是否已成立,控制循环。适合仅知道结束条件的循环控制。7、 汇编子程序传递参数有哪几种方式?答:汇编子程序传递参数有三种方式,分别为:1寄存器传递参数方式;2存储区域传递参数方式;3堆栈传递参数方式;8、 用汇编语言编写程序将 R0 寄存器中的字数据分成 4 组,每组 8

40、 位,然后分别存放到 R1、R2、R3 和 R4 中。答:AREAdecode, CODE, READONLY;代码段名 decodeENTRY;程序的入口CODE32startLDRR0, =xLDRR0, R0;将 x 加载到寄存器 R0MOV R1, #OxFFAND R1, R1, R0;取 x 的低八位MOV R2,#0 xFFANDR2, R2,R0, ROR #8;取 x 的次低八位M OV R3, #0 xFFAND R3, R3, R0, ROR #16;取 x 的次高八位M OV R4, #0 xFFAND R4, R4, R0, ROR #24;取 x 的高八位stopM

41、OVR0, #0 x18;这三条指令是 ADS 调试环境特约LDRR1, =0 x20026;程序运行结束返回编译器调试环境SWI0 x123456AREAData, DATA, READWRITE;数据段的名字 Datax DCD123456789END;结束9、用汇编语言编写程序统计任意字符串包含的字符个数。(约定:字符串以 0 为结束标志)答:AREA count, CODE, READONLY;代码段名 countENTRY;程序的入口CODE32startLDR R0, =string;R0 指向字符串 string 中第一个字符MOV R2, #0CONTILDRB R1, R0;

42、将 string 中的一个字符加载到寄存器R1CMP R1, #0;是否是字符串结束标志ADDNE R2, R2, #1;如果不是,统计个数增加 1ADDNE RO, R0, #1;如果不是,指针拨向下一个字符BNE CONTILDREQ R3, =NUM;如果是,将统计的字符串个数,放入单元numSTREQ R2, R3stopMOVR0, #0 x18;这三条指令是 ADS 调试环境特约LDRR1, =0 x20026;程序运行结束返回编译器调试环境SWI0 x123456AREAData, DATA, READWRITE;数据段的名字 DatastringDCBhELLO EmBEddE

43、D WORId!,0NUMDCB0END;结束100Sum =瓦 2 XN10、用汇编语言编写程序计算:N2答:AREAsum2n, CODE, READONLY;代码段名 sum2nENTRY;程序的入口CODE32startLDRR0, =sum;R0 指向存储单元 sumMOV R1, #0;R1 存放累加和MOV R2, #1;R2 初始化起始值CONTIADDR1, R1, R2, LSL #1; 实现 R1=R1+R2*2CMP R2, #100; 判断 R2 是否等于 100ADDNE R2, R2, #1; 如果不等,R2 累加 1BNE CONTISTREQ R1, R0;

44、如果相等,将累加和 R1 放入存储单元 sum 中stopMOVR0, #0 x18;这三条指令是 ADS 调试环境特约LDRR1, =0 x20026;程序运行结束返回编译器调试环境SWI0 x123456AREAData, DATA, READWRITE;数据段的名字 DatasumDCD0END;结束11、用汇编语言编写程序实现:已知BUF1 中有 N1 个按从小到大顺序排列的互不相等的字符号数,BUF2 中有 N2 个从小到大顺序排列的互不相等的字符号数。试编写程序将 BUF1 和 BUF2 中的数合并到 BUF3 中,使得 BUF3 中的数互不相等且按从小到大顺序排列。答:AREA

45、GATHER,CODE,READONLYENTRYCODE32N1 EQU 5N2 EQU 6N3 EQU 11START LDR R0,=BUF1;数组一的起始指针始终不动LDR R1,=BUF2;数组二的起始指针始终不动LDR R2,=BUF3;数组三的起始指针始终不动MOV R3,#0;数组一,二,三的计数器MOV R4,#0MOV R5,#0LOOPI ADD R6,R0,R3,LSL #2;数组一,二,三的地址指针,要移动ADD R7,R1,R4,LSL #2ADD R8,R2,R5 ,L SL #2LDR R9,R6LDR R10,R7CMP R9,R10BLT LOOPJBGT

46、LOOPKBEQ LOOPCMP R5,#N3BEQ STOPLOOPJ STR R9,R8;数组一中的数小于数组二中的数,将数组一中的数放入数组三中ADD R3,R3,#1ADD R5,R5,#1CMP R3,#N1BLT LOOPI;B LOPILOPI STR R10,R8,#04!;数组一中的数已经合并到数组三中,将数组二中剩余的数存入数组三中ADD R4,R4,#1ADD R5,R5,#1ADD R7,R1,R4,LSL #2LDR R10,R7CMP R4,#N2BLT LOPILOOPK STR R10,R8;数组二中的数小于数组一中的数,将数组二中的数放入数组三中ADD R4,

47、R4,#1ADD R5,R5,#1CMP R4,#N2BLT LOOPI;B LOPJLOPJ STR R9,R8,#04!;数组二中的数已经合并到数组三中,将数组一中剩余的数存入数组三中ADD R3,R3,#1ADD R5,R5,#1ADD R6,R0,R3 ,L SL #2LDR R9,R6CMP R3,#N1BLT LOPJLOOP STR R9,R8;数组一中的数与数组二中的数相等,将数组一中的数放入数组三,三个计数器同 时加一ADD R3,R3,#1ADD R4,R4,#1ADD R5,R5,#1CMP R3,#N1BLT LOOPIBEQ LOPICMP R4,#N2BLT LOO

48、PIBEQ LOPJSTOP MOV R0,#0 x18LDR R1,=0X20026SWI 0X123456AREA Data,DATA,READWRITEBUF1 DCD 0X11,0X33,0X55,0X77,0X99BUF2 DCD 0X22,0X44,0X66,0X88,0XAA,0XBBBUF3 DCD 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00END12、用汇编语言编写程序实现:将字节变量BVAR 中的压缩型 BCD 数转换为二进制数,并存入原变量中。答:AREA tranx, CODE, READONLY ;代码

49、段名 tranxENTRY;程序的入口CODE32startLDR R0, =BVARLDR R1, R0;将 BVAR 的值加载到寄存器 R1MOV R2,#0 x0FAND R2, R2, R1;取 BVAR 的个位MOV R3, #0 x0FAND R3, R3, R1, LSR #4;取 BVAR 的十位MOV R4, R3, LSL #1;R4=R3*2MOV R5, R3, LSL #3;R5=R3*8ADD R3, R4, R5;R3=R4+R5=R3*10ADD R1, R3, R2;R 仁 R3+R2STR R1, R0; 将转换的值存到 BVAR 变量中stopMOVLDR

50、SWIAREABVARENDR0, #0 x18;这三条指令是 ADS 调试环境特约R1, =0 x200260 x123456Data, DATA, READWRITEDCB 0 x89;程序运行结束返回编译器调试环境;数据段的名字 Data结束练习题1 简述 SRAM 芯片与 DRAM 芯片的共同点与不同点。答:SRAM 芯片与 DRAM 芯片的共同点:都属于 RAM 芯片,能够随机读写,存贮的数据掉电就丢失。不同的:SRAM 属于静态 RAM,静态 RAM 与 CPU 连接时控制电路简单,集成度相对较低;DRAM 集成度很高,但需硬件刷新电路支持工作,CPU 与 DRAM 连接时必须有刷

51、新电路,如果 DRAM 不进行定期刷新,数据就可能丢失。2.简述 ROM 芯片的常见分类,各种 ROM 芯片的特点及其适用场合。只读存储器 ROM 目前常见的有:掩膜式 ROM,用户不可对其编程,其内容已由厂家设定好,不能更改;可编程 ROM(Programmable ROM,简称 PROM),用户只能对其进行一次编程,写入后不能更改;可擦除的 PROM(Erasable PROM, 简称 EPROM) , 其内容可用紫外线擦除, 用户可对其进行多次编程;电擦除的 PROM (ElectricallyErasable PROM,简称 EEPROM 或 E2PROM),能以字节为单位擦除和改写。

52、闪速存储器又称 Flash 存储器, 它是一种非易失性存储器 ( Non-Volatile Memory , NVM ) ,是在 EPROM 与 EEPROM基础上发展起来的。Flash 存储器集其它类非易失性存储器的特点于一身。与 EPROM 相比较,闪速存储器具有明显的优势一系统中可电擦除和可重复编程,而不需要特殊的高电压;与EEPROM 相比较,闪速存储器具有编程速度快,成本低、密度大的特点。Flash 存储器以其集成度高、 制造成本低、使用方便等诸多优点广泛地应用于办公设备、通信设备、医疗设备、家用电器等领域。Flash 存储器有多种实现技术,目前主要有两种技术类型:NOR 型 Fla

53、sh 存储器,以 In tel 和 AMD 为代表的 NOR 型 Flash 存储器是最早出现的一类;NAND 型 Flash 存储器,以三星和东芝为代表的NAND 型 Flash 存储器3 .某微机系统中 ROM 区的首地址是 9000H,末地址是 FFFFH,其 ROM 区域的存储容量是多少? 答:其 ROM 区域的存储容量是:28KB4.设有一个具有 20 位地址线和 32 位字长的存储器,问:(1)该存储器能存储多少个字节信息? (2)如果该存储器由 256KX8 位 SRAM 芯片组成,需要用多少片?需要多少位地址来作芯片选择?答:(1)该存储器能存储 1MB 信息;(2)如果该存储

54、器由 256KX8 位 SRAM 芯片组成,需要 4 片,其中片内地址需要 18 根地址线,片间 至少需要2 跟地址线进行译码来作芯片选择。5.若 CPU 访问由 256KX1 位的 DRAM 芯片构成的 512KX8 位的存储器子系统,问 CPU 需要使用多少根地址线?那些地址线用作片内寻址?那些地址线用作片选控制?答:CPU 至少需要使用 19 根地址线,其中 18 根用于片内,最高位地址用于片选控制。6某计算机由 2164 芯片(64K 1 位)组成 64K 8 位的内存系统,当 CPU 将内存中的某一个存储单元值 读出后,该存储单元的内容变成什么?该内存系统的刷新控制电路,需要在一个刷

55、新周期内,刷新多少行?答:CPU 将内存中的某一个存储单元值读出后,该存储单元的内容不变,读取数据不会改变存储单元的 内容。该内存系统的刷新控制电路,需要在一个刷新周期内,刷新多少行?7.某微机系统中,使用了 1 片 EPROM 2732,它与 CPU 的连接关系如图 5.38 所示,试计算该芯片在系 统中的地址空间范围,以及可访问多少个存储单元。答:地址空间范围 F000HF3FFH。可访问 1K 字节存储单元。&在某计算机系统中扩展 32K 字节的 RAM ,起始地址为 8000H ,设地址总线为 20 位,数据总线为 8 位。 选用 6264芯片,画出扩展的存储器的电路连接图。答

56、:分析,【分析】 6264 的容量为 8KX8,需用 4 片进行字扩展。 6264 有 8 条数据线 (07、 00) 正好与 CPU 的数 据总线 (D7Q0)连接;13 条地址线(A12-A0 )与 CPU 的低位地址线(A12、A0)连接。2864 选片 信号(CS)的连接是一个难点,需要考虑两个问题:一是与CPU 高位地址线(A19、A13 )和控制信号(10 / M、RD )如何连接,二是根据给定的地址范围如何连接。各组芯片的地址范围-H- LJK芯片A19/18 A17A16A15 A14A13 A12 - A0地址范围RAM100001000 0000 0000 0000(最低地

57、址)1 1111 1111 1111 最高地址)0000H 1FFFHRAM200001010 0000 0000 0000(最低地址)1 1111 1111 1111 最高地址)2000H 3FFFHRAM300011100 0000 0000 0000(最低地址)1 1111 1111 1111 最高地址)4000H 5FFFHRAM400011110 0000 0000 0000(最低地址)1 1111 1111 1111 最高地址)4000H 5FFFH74LS138G 仁 RD+IO/MAo Ao9.用 16KX8 位 DRAM 芯片构成 64KX32 位的存储器,试画出该存储器的电

58、路连接图。答:四片 16KX8 位 DRAM 芯片构成 64KX32 位的存储器,需要刷新电路等逻辑,存储器部分采用模块化 方法即可完成电路连接,刷新电路部分需要专门的电路。74LS138G2AG2BY1CS0CS1RDA2AoCSRAM6264PD/PGMOQ或门A19AA14A17A16CS2IO/MCS0074LS138G 仁 RD+IO/M10.由 8088 CPU 组成一个小型计算机系统,有 ROM 32KB ,地址范围为 00000H07FFFH ;有 RAM 8KB ,地址范围为 08000H09FFFH ;如果 ROM 选用 2764 (8KX8 位),RAM 选用 8KX1

59、位的 SRAM 芯片,试画出扩展的存储器的电路连接图。答:分析如下 ROM 2764 8KX8 芯片,需 4 片,做字扩展,片内寻址线13 根RAM 2114 1KX4 芯片,需 16 片,做字位扩展,片内寻址线10 根(2) 地址范围 :0 0 0 0 A15 A14 A13 A12 A11 A10ROM10000001FFF H0 00(一级译码 )ROM20200003FFF H0 01ROM3 0400005FFF H0 10ROM4 0600007FFFH0 11RAM1 组)08000083FFH1000 00 (二级译码 )RAM208400087FFH1 00001RAM308

60、80008BFFH1 0001 0RAM408C0008FFFH1 00011RAM509000093FFH1 00100RAM60940009FFFH1 001 01RAM70980009BFFH1 0011 0RAM809C0009FFFH1 00111(3)ROM1 Y0 (1 #译码器 A15A14 A13译码输入 )ROM2 Y1ROM3 Y2ROM4 Y3RAM1 Y0 (2 # 译码器 A12 A11 A10 译码输入 )RAM2 Y1RAM3 Y2RAM4 Y3RAM5 Y4RAM6 Y5RAM7 Y6RAM8 Y7(4) 2 4 译码器和 38 译码器 画图连接 略练习题1、 CPU 与外设交

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论