《微机原理与嵌入式系统基础--练习 - 答案》1 下载本文

练习题

(首先,在批改作业的过程中发现存在大量的抄袭问题,错误都是千篇一律,特此警戒)

1、 简述冯诺依曼体系结构计算机的要点和工作过程。 答:冯诺依曼体系结构计算机的要点:

计算机中的信息(程序和数据)以二进制方式表示。 程序预存储,机器自动执行。

计算机由运算器、控制器、存储器、输入设备和输出设备五大部分组成。

计算机通过执行预存储在存储器中的程序来完成预定的运算。程序由计算机的指令序列构成,计算机在处理器的控制下,首先从存储器读取一条待执行的指令到处理器中,接下来分析这条指令,而后发出该指令对应的电平脉码序列,即执行该指令。并以此递归运行程序。 2、 简述计算机各组成部分的功能。 答:

? 中央处理单元(CPU):主要由运算器、控制器构成。其中运算器主要用于完成诸如加、减、乘、

除等算术运算和左右移位、与、或、非等逻辑运算;控制器主要用于完成机器指令的解析和执行,控制运算器进行相应的运算,控制数据在计算机各组成部分之间传送,控制计算机各组成部分有条不紊地协调工作等。

? 存储器(Memory)是计算机系统中用来存储程序和数据的信息记忆部件。 ? 输入/输出设备:信息进出计算机的数据通道。

3、 何谓总线?计算机中有哪几类总线?简述其用途。

答:计算机的总线(Bus)就是连接计算机硬件各部件,用于计算机硬件各部件之间信息传输的公

共通道。

按照其传送信号的用途属性,总线可细分为:地址总线(Address Bus)、数据总线(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与其它部件之间传送控制信息和状态信息的信号线。此类信号线的构成比较复杂,传送的控制、状态信息可以是从CPU到其它部件,也可能是从其它部件到CPU。此类总线中的某些具体的线是单向的(或从CPU到其它部件,或反之),但作为总线来说,它是双向信号线。

(总线是ARM核和外部的接口,是理解ARM体系结构的重要环节,答案中应该说明总线对系统的影响,以及作为使用者来说应该怎样操作,应该重点掌握) 4、 简述计算机?真值?和?机器数?的概念。

答:各个信息在计算机中的二进制表示形式称之为“机器数”,机器数所代表的值含义称为该机器数

的“真值”。“真值”可以是数值,也可以是字符,甚至是语音或图象等。

5、 什么是处理器的主频?什么是处理器的字长? 答:CPU主频也叫时钟频率,单位是MHz(或GHz),用来表示处理器的工作频率。CPU字长是指

运算器的位宽,单位是比特(bit),用于表示CPU一次运算可处理的二进制数据的位度。

6、 简述计算机接口在计算机系统中的作用。

答:“输入/输出接口”是用于外设与计算机之间桥接和匹配的专用部件,通常以集成电路或板卡的形

式存在。应用于计算机主机与外界的信息交互。

7、 将下列十进制数分别转换为十六进制数和二进制数: ⑴ 123.85 ; ⑵ 93.125 ; ⑶ 23.625 ; ⑷ 65535 答:123.85 = 0x7B.D99 = 01111011.110110011001b 93.125 = 0x5D.2 = 01011101.001b 23.625 = 0x17.A = 00010111.101b

65535 = 0xFFFF =1111 1111 1111 1111b

8、 将下列二进制数分别转换为十六进制数和十进制数: ⑴ 1100 1101.1b ; ⑵ 1000 1101.01b ; ⑶ 11010.011b ; ⑷ 101 1001 0111 0001b 答:1100 1101.1b = 0xCD.8 = 205.5 1000 1101.01b = 0x8D.4 = 141.25 11010.011b = 0x1A.6 = 26.375

101 1001 0111 0001b = 0x5971 = 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.11b

10、 完成下列十六进制数的运算: 答:⑴ 0x39 + 0x56 = 0x80 ⑵ 0x7B – 0x3C = 0x3F ⑶ 0x5D.A1 + 15.75 = 0x48.2C ⑷ 0x83.02 – 1E.B3 = 0x64.4E

11、 分别假设字长n=8,n=16,计算下列十进制数的补码:

答: 序号 1 2 3 4 真值 56 115 -56 -115 补码(n=8) 0011 1000 (0x38) 0111 0011 (0x73) 1100 1000 (0xC8) 1000 1101 (0x8D) 补码(n=16) 0000 0000 0011 1000 (0x0038) 0000 0000 0111 0011 (0x0073) 1111 1111 1100 1000 (0xFFC8) 1111 1111 1000 1101 (0xFFC8)

12、 假设字长n=16,写出下列补码的真值:

答:⑴ [0000 0100 0010 1001]真 = [0x0429]真 = 1065

⑵ [1000 0100 0010 1001]真= [0x8429]真 = -31703 ⑶ [1111 1111 1111 1111]真 = [0xffff ]真 = -1 ⑷ [0111 1111 1111 1111]真 = [0x7FFF]真 = 32767

13、 假设运算器的长度n=16,完成下列补码运算,观察运算器内的结果值,观察CF、DF和OF位

的情况;再分别用真值运算验证,说明补码结果原因,总结OF位于与补码运算溢出的关系。 答: 补码运算 0000 0100 0010 1001 + 1000 0100 0010 1001 1000 0100 0010 1001 + 1111 1111 1111 1111 1111 1111 1111 1111 + 0111 1111 1111 1111 0111 1111 1111 1111 + 0000 0000 0000 0001 结果码 1000 1000 0101 0010 (0x8852) 1000 0100 0010 1000 (0x8428) 0111 1111 1111 1110 (0x7FFE) 1000 0000 0000 0000 (0x8000) 真值比对 1065+(-31703) = -30638 [-30638]补=0x8852 (-31703)+(-1) = -31704 [-31704]补=0x8428 (-1)+32767 =32766 [32766]补=0x7FFE CF DF OF 0 0 0 说明 运算无溢出 1 1 0 运算无溢出 1 1 0 运算无溢出 32767+1 =32768(超出值域) 0 [-32768]补=0x8000 1 1 运算有溢出 14、 什么是ASCII编码?写出引号内各字符的ASCII编码“I Am a Student!”。

答:ASCII编码----美国标准信息交换标准码( American Standard Code for Information Interchange, ASCII ),统一规定了常用符号的二进制数表示方式。计算机中常用ASCII编码表示字符信息。

I Am a Student! 的 ASCII编码-----略。

15、 什么是嵌入式系统?有何特点?

答:嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。其特点是:它是嵌入到目标对象中的、软硬件定制的专用计算机系统。

16、 举例在你的身边常见到的嵌入式系统产品,谈一谈你对“嵌入式系统”的初步理解。 答:略。

17、 简述嵌入式操作系统的特点。

答:微内核、高可靠性、可裁减定制、满足实时性。

18、 简述你对嵌入式操作系统的基本认识,嵌入式操作系统在嵌入式系统开发中的必要性。 答:略。

练习题

(第二章基本上是问答题,作业中存在的问题是,最好用自己的语言来回答问题,如果一味抄书的话,不能对问题理解透彻)

1、 何谓计算机体系结构?

答:计算机体系结构是对计算机较高层次的抽象,是摆脱具体电路的实现而主要着眼于计算机系统的逻辑特征、原理特征、结构特征和功能特征的抽象。

2、 什么是处理器的指令?什么是处理器的指令系统?

答:计算机中的“指令”就是CPU执行某种操作的命令,它也是以二进制编码方式存在,每一条指令都对应着CPU要完成的特定操作。一台计算机中所有机器指令的集合称为该CPU的“指令系统”。

3、 术语‘指令’和‘语句’有何差别? 答:‘指令’一般针对处理器而言,它在物理操作级仅指示处理器完成一个具体操作,是计算机(处理器)编程的最细小的‘编程描述粒子’。

‘语句’一般针对高级语言,一般是在算法级、逻辑级描述一个算逻运算;他们在描述程序时具有不同的描述级别。

4、 什么是RISC?什么是CISC?简述他们的特点与差别。

答:RISC是Reduced Instruction Set Computer,精简指令集计算机的缩写。它的特点是指令系统精炼,处理器电路逻辑相对简单,且能够以更快的速度执行操作。对于负载的功能需要编程实现。

CISC是Complex Instruction Set Computer,复杂指令集计算机的缩写。它的特点是指令系统中含有大量的类似于高级程序设计语言结构的复合功能指令。指令系统庞大,处理器硬件电路的复杂度。

5、 ARM7处理器是几级流水线?在ARM7处理器中,“PC指向的是下一条要执行的指令”,这句话

对吗?为什么?

答:ARM7处理器是三级流水线。在ARM7处理器中,“PC指向的是下一条要执行的指令”,这句话不对,因为流水线的存在,指令码即使取送到处理器中也未必被执行;应该说“PC指向的是下一条要取指的指令”。

6、 ARM7中的‘状态’、‘模式’分别要说明什么问题? 答:两种处理器“状态” ----分别用于支持两种指令系统。

? ARM指令系统 ? Thumbe指令系统

7种处理器“模式”----分别应用于7种场合,具有不同的寄存器资源、权限。

7、 ARM处理器的工作状态分为哪二种?ARM处理器又是怎么定义和标志的?

答:ARM处理器的工作状态分为“ARM状态”和“Thumbe”状态。在“ARM状态”下,处理器执行32位的指令码,在“Thumbe状态”下,处理器执行16位的指令码。“ARM状态”和“Thumbe”状态下,处理器都是32位的处理器。ARM处理器中的CPSR寄存器的T_bit(CPSR[5])为1时,ARM处理器的当前状态为“ARM状态”;ARM处理器中的CPSR寄存器的T_bit(CPSR[5])为0时,ARM处理器的当前状态为“Thumbe状态”。

8、 ARM7TDMI支持哪几种指令集,各有什么特点? 答:ARM7处理器分别在“ARM状态”下执行ARM指令集指令码,在“Thumbe状态”下执行Thumbe

指令集指令码。

? ARM指令集指令丰富、功能强大,Thumbe指令集指令精简、功能紧凑; ? ARM指令集指令码长都是32位,Thumbe指令集指令码长都是16位; ? ARM指令集、Thumbe指令集支持的都是32位运算指令。

9、 ARM7处理器有哪些工作模式?不同工作模式下CPSR寄存器的模式位如何设定?列表说明。 答:ARM7处理器有用户模式(usr)、系统模式(sys)、管理模式(svc)、终止模式(abt)、未定义指令模式(und)、中断模式(irq)和快速中断模式(fiq)共7种模式。ARM处理器使用CPSR寄存器的CPSR [5:0]来标示当前当前所处的工作模式,具体对应如下: 序号 1 2 3 4 5 6 7

10、 描述ARM7处理器的内部寄存器结构,并分别说明R13、R14、R15寄存器的作用。 答:ARM7处理器的内部寄存器

寄存器类别 通 用 寄 存 器 寄存器名 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R8 R9 R10 R11 各种模式下可见的寄存器 用户 系统 管理 终止 R0 R1 R2 R3 R4 R5 R6 R7 R8_fiq R9_fiq R10_fiq R11_fiq 未定义 irq fiq M[4:0] 0b10000 (0x10) 0b10001 (0x11) 0b10010 (0x12) 0b10011 (0x13) 0b10111 (0x17) 0b11011 (0x1b) 0b11111 (0x1f) 处理器工作模式 用户模式 (usr) FIQ模式 (fiq) IRQ模式 (irq) 管理模式 (svc) 中止模式 (abt) 未定义模式 (und) 系统模式 (sys) R12 R12 R12_fiq R13(SP) R13 R13_svc R13_abt R13_und R13_irq R13_fiq R14(LR) R14 R14_svc R14_abt R14_und R14_irq R14_fiq R15(PC) R15 CPSR CPSR 状态寄 存器 SPSR ---- ---- SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq

其中:

R13被处理器用作处理器堆栈指针SP;ARM处理器中共有6个R13,分别隶属于对应的处理器模式。如此,处理器可以同时开辟6个处理器堆栈,分别服务于对应的处理器模式。

R14被处理器用作连接寄存器LR;LR寄存器用于备份PC,即用于记录程序的断点或调用点。ARM处理器中共有6个R14,分别隶属于对应的处理器模式。

R15被处理器用作指令计数器PC。ARM处理器中只有一个PC,PC指向的是下一条要取指的指令。

11、 什么是堆栈?堆栈有几种类型,简述各类型堆栈的进/出栈过程。 答:堆栈(Stack)是一种具有“后进先出”(LIFO---Last In First Out)特殊访问属性的存储结构。按照入栈时SP的变化方向和SP指向单元是否含有堆栈数据,堆栈共有满递增、空递增、满递减和空递减四种方式。

? 满递增堆栈入出栈操作:略!

? 空递增堆栈入出栈操作:

入栈操作过程:@SP←XX ;将入栈数据写入到堆栈指针SP所指单元

SP←SP+1 ;递增调整堆栈指针SP

出栈操作过程:SP←SP-1 ;调整堆栈指针SP

XX←@SP ;将堆栈指针SP所指单元中的数据弹出

? 满递减堆栈入出栈操作:

入栈操作过程:SP←SP-1 ;调整堆栈指针SP

@SP←XX ;将入栈数据写入到堆栈指针SP所指单元

出栈操作过程:XX←@SP ;将堆栈指针SP所指单元中的数据弹出

SP←SP+1 ;调整堆栈指针SP

? 空递减堆栈入出栈操作:略!

12、 什么是“字对齐”和“半字对齐”数据存储? 答:“半字”数据必须存放在存储器紧邻的两个字节单元,并且首字节地址必须能被2整除,这样存储的16bit数据称为‘半字对齐’存储数据,16bit数据这样的存储方式称为‘半字对齐’存储。

“字”数据必须存放在存储器紧邻的4个字节单元,并且首字节地址必须能被4整除,这样存储的32bit数据称为‘字对齐’存储数据,32bit数据这样的存储方式称为‘字对齐’存储。

13、 简述程序计数器(PC)在处理器工作中的作用。

答:CPU总是按照PC的指向对指令序列进行取指、译码和执行,也就是说,最终是PC决定了程序运行流向。在计算机运行中,处理器依据当前的情况和程序指令自动地修改PC,以实现程序预存储,计算机自动执行。

14、 简述ARM处理器中的返回连接寄存器(LR)在处理器工作中的作用。 答:在ARM处理器中使用R14实现对断点和调用点的记录,即使用R14用作返回链接寄存器(Link Register,LR)。在硬件上CPU自动完成相应返回点的记录。需要时,可依据LR寄存器中的值追溯返回点。

(LR寄存器的使用时ARM汇编的重点和难点,在启动代码中大量使用,应该重点掌握) 15、 分别简述ARM处理器中的CPSR、SPSR在处理器工作中的作用。

答:ARM处理器中只有一个CPSR寄存器,被各模式共用,它记录了处理器当前的状态、模式、中断屏蔽状态以及处理器的运算状态标志。ARM处理器中含有5个存储程序状态寄存器SPSR(Saved Program Status Register),他们分别为SPSR_svc、SPSR_abt、SPSR_und、SPSR_irq、SPSR_fiq,分别隶属于ARM处理器的5种异常模式。当处理器因某种异常发生而进入到对应的异常模式时,相应模式的SPSR将自动地备份CPSR的原值,将来可使用此SPSR中保存的备份值恢复CPSR。

16、 结合CPSR的结构,说明其中的M[4:0]的作用和T位的作用。

31N30Z29C28V2787I6F5T4M43M32M21M10M0

答:M[4:0]位用于标志处理器的当前模式;T位用于标志处理器的当前状态。

17、 结合CPSR的结构,说明其中的I位和F位的作用。

31N30Z29C28V2787I6F5T4M43M32M21M10M0

答:I位用于标志处理器对于IRQ异常的屏蔽状态;I=1时,表示处理器屏蔽了IRQ异常,I=0时,表示处理器可以响应IRQ异常。

F位用于标志处理器对于FIQ异常的屏蔽状态;F=1时,表示处理器屏蔽了FIQ异常,F=0时,表

示处理器可以响应FIQ异常。

18、 简述ARM7TDMI内部有哪些寄存器及特点。

答:ARM微处理器内共有37个32位的程序可访问寄存器物理资源,其中31个通用寄存器,6个状态寄存器。

各种模式下可见的寄存器 寄存器寄存器用系 类别 名 irq fiq 管理 终止 未定义 户 统

R0 R0

R1 R1

R2 R2

R3 R3

R4 R4 通 R5 R5 用 R6 R6 寄 R7 R7 存 R8 R8 R8_fiq 器 R9 R9 R9_fiq R10 R10 R10_fiq R11 R11 R11_fiq R12 R12 R12_fiq R13(SP) R13 R13_svc R13_abt R13_und R13_irq R13_fiq R14(LR) R14 R14_svc R14_abt R14_und R14_irq R14_fiq

R15(PC) R15

CPSR CPSR 状态寄

存器 SPSR ---- ---- SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq

R0~R7:是7个模式共用的数据寄存器;

R8~R12:FIQ模式具有私有的R8~R12,其他6种模式共用一套R8~R12;

R13、R14:用户模式和系统模式公用一套R13、R14,其他5种模式各自具有私有的R13、R14。 R15:7个模式共用R15,用作为程序计数器寄存器PC; CPSR:7个模式共用CPSR,用作为当前程序状态寄存器; SPSR:5种异常模式各自具有私有的SPSR。

19、 什么是ARM处理器的异常?ARM处理器中有哪几种异常?

答:在ARM中,异常是一些事件,这些事件能导致正常的程序执行流程被暂时地停止,而进入到该事件对应的处理器异常模式并对该事件进行处理,这个过程称作异常响应。ARM中定义了复位、未定义指令、SWI(软中断)、预取指终止、预取数终止、irq以及fiq等7种异常。

20、 分别简述ARM7的IRQ、FIQ异常处理过程,说明其异常向量地址。

答:发生FIQ异常时,CPU自动转移到0x0000 001C地址单元取指执行,同时处理器会自动转换到快中断模式。发生IRQ异常时,CPU自动转移到0x0000 0018地址单元取指执行,同时处理器会自动转换到IRQ中断模式。IRQ、FIQ异常向量地址分别是:0x0000 0018、0x0000 001C

IRQ异常处理过程:

? 备份PC、CPSR的值到LR_irq、SPSR_irq; ? CPSR的I位置‘1’, F位无影响,禁止IRQ异常;

? CPSR的M[4:0]赋值‘0b10010’,处理器转入到ARM状态的irq模式; ? PC(R15)← 0x0000 0018;

FIQ异常处理过程:

? 备份PC、CPSR的值到LR_fiq、SPSR_fiq; ? CPSR的I位和F位置‘1’,禁止IRQ、FIQ异常;

? CPSR的M[4:0]赋值‘0b10001’,处理器转入到ARM状态的fiq模式; ? PC(R15)← 0x0000 001C;

21、 ARM7处理器对哪些异常可以屏蔽控制?如何屏蔽或允许控制? 答:ARM7处理器对IRQ、FIQ异常可以屏蔽控制;对CPSR寄存器的I_bit和F_bit置‘1’或清‘0’ 可以分别屏蔽或允许响应IRQ、FIQ异常。

序号 1 2 CPSR bit值 CPSR[I] CPSR[F] 说明 =1,屏蔽IRQ异常响应; =0,允许IRQ异常响应; =1,屏蔽FIQ异常响应; =0,允许FIQ异常响应;

22、 说明CPSR中T位的作用,ARM7处理器如何切换状态? 答:T ---- 处理器状态控制位;‘1’--- Thumb状态,‘0’--- ARM状态。 ARM7处理器必须通过 BX 指令进行状态切换。

23、 存储器和IO端口统一编址和独立编址各有什么特点?ARM7处理器采用哪种编址方式?

答:统一编址方式---存储器单元资源和IO端口资源统一编址在一个地址空间。特点:按地址空间位置约定各分类资源,访问IO端口如同访问存储器单元,无需专用的IO访问指令。芯片上没有专用于IO访问的引脚。

独立编址方式---存储器资源和IO端口资源分别编址在两个地址空间,存储器地址空间和IO地址空间。特点:按资源分类的地址空间清晰,使用不同的指令访问存储器和IO端口,处理器指令系统中既有存储器访问指令,又有专用的IO访问指令。芯片上有专用于IO访问的引脚。

ARM7处理器的存储结构采用冯·诺依曼存储体系结构,程序存储器、数据存储器和I/O统一编址(即使用同一个地址空间),指令和数据共用一条32位的数据总线。

24、 大端存储模式和小端存储模式的含义是什么?画出数据0x87654321分别以大端存储模式和小端

存储模式存储在0x4000单元的具体存储格式。

答:高位数据存储在高地址字节,这种组织数据的存储方式称为‘小端模式’;另一种则反之,高位数据存储在低地址字节,这种组织数据的存储方式称为‘大端模式’;

数据0x87654321以小端存储模式存储在0x4000单元的具体存储格式:

字节地址单元 0x4003 0x4002 0x4001 0x4000 单元数据 0x87 0x65 0x43 0x21

数据0x87654321以大端存储模式存储在0x4000单元的具体存储格式:

字节地址单元 0x4003 0x4002 0x4001 0x4000

单元数据 0x21 0x43 0x65 0x87 练习题

1、 ARM7TDMI支持哪几种指令集,各有什么特点?

答:ARM7TDMI支持32位的ARM指令集和16位的Thumb指令集。

ARM指令集效率高、功能全,但是代码密度低,所有ARM指令都是可以有条件执行的;

Thumb指令集,功能上是ARM指令集的子集,Thumb状态下的ARM7TDMI(-S)仍然是32位的处理器,因此具有更高的代码密度;Thumb指令中仅有B指令具备条件执行功能。

2、 ARM指令的寻址方式有几种?并指出下列指令中源操作数的寻址方式。 ⑴ ADD R0, R1, R2 ⑵ LDR R0, [R2] ⑶ MVN R0, #0x0F2 ⑷ LDMIA R0, {R1-R5} ⑸ STR R2, [R4, #0x02] ⑹ LDR R1, [R2, R3] ⑺ MOV R1, R1, ROR #2 ⑻ LDR R1, [R3], #0x04

答:ARM处理器寻址方式可以分为两大类:数据处理指令操作数寻址方式和存储器访问指令操作数寻址方式,其中数据处理指令操作数寻址方式又可分为立即数寻址方式、寄存器寻址方式和寄存器移位寻址方式3种类型;存储器访问指令操作数寻址方式又可以分为寄存器间接寻址、基址变址寻址、相对寻址、多寄存器寻址(块拷贝寻址)和堆栈寻址5种类型。

⑴ ADD R0, R1, R2 寄存器寻址方式 ⑵ LDR R0, [R2] 寄存器间接寻址 ⑶ MVN R0, #0x0F2 立即数寻址方式 ⑷ LDMIA R0, {R1-R5} 多寄存器寻址(块拷贝寻址) ⑸ STR R2, [R4, #0x02] 基址变址寻址 ⑹ LDR R1, [R2, R3] 基址变址寻址 ⑺ MOV R1, R1, ROR #2 寄存器移位寻址方式 ⑻ LDR R1, [R3], #0x04 基址变址寻址

(大多数人对于基址变址的寻址方式和相对寻址方式混淆:相对寻址只存在于跳转指令的寻址,表示现对于当前的PC值得变化大小,其他的寻址方式特征比较明显,掌握比较清晰)

3、 ARM指令的基本格式?

答:ARM指令的基本格式如下:

<指令助记符>{<执行条件>}{S} <目标寄存器>, <第1操作数的寄存器> {,<第2操作数>}

{} {S} , {,}

其中,< >号内的项是必需的,{}号内的项是可选的。如是指令助记符,是必须含有的,而{}为指令执行条件,是依据实际需要可选项。若不书写,则使用默认条件AL(无条件执行)。

opcode 指令助记符,用于指定指令的操作功能。 cond 执行条件,用于指定指令的执行条件。 S 用于指定指令的执行是否影响CPSR寄存器的值,书写时影响CPSR。 Rd 目标寄存器,用于存放运算的结果。 Rn 第1个操作数的寄存器。用于存放参与运算的操作数1。 operand2 第2个操作数。用于指定参与运算的操作数2。

4、 指出下列指令是否正确,若不正确请说明原因。 ⑴ MOV R1, #101 ⑵ MVN R1, #0x10F ⑶ LDMIA R11, {R2-R8} ⑷ ADD R0, R2, #4! ⑸ LDR R4, [R5]! ⑹ MRS PC, CPSR ⑺ LDMFD R0!, {R2, R5-R8} ⑻ ADD R3, [R3], R7 答: (1)对 (2)错,MVN指令中的源操作数不是8bit位图数据 (3)对 (4)错,立即数后不能附加!操作符 (5)对 (6)错:目标寄存器不能为R15,即PC (7)对 (8)错,ADD指令中的操作数不能用存储器访问寻址方式

(对于1和2两题,对于指令的可操作数的范围不明确,很大部分人都是凭借感觉判断,对于3,7两题,对于多寄存器的操作的规则掌握的不好,没有清晰的如何进行存取操作的思路)

5、 何谓ARM指令的条件码?默认的条件码是什么?举例说明ARM指令的条件码对指令执行的影

响。

答:所谓的ARM指令条件码分别对应了CPSR寄存器标志位(N、Z、C、V)的16个值组合状态,处理器根据CPSR中标志位N、Z、C和V的值来确定该指令是否执行,当CPSR中的条件码标志满足时,处理器执行本条指令,否则本条指令等价于空操作。

其中条件(AL) 是缺省条件,可以省略。如果指令不含有条件码时,就默认是该条件。

6、 解释“满堆栈”、“空堆栈”、“递增堆栈”和“递减堆栈”? ARM指令系统中是如何支持的? 答:满堆栈就是堆栈指针总是指向最后压入堆栈的数据的存储单元;

空堆栈就是堆栈指针总是指向下一个将要放入数据的存储单元; 递增堆栈就是堆栈底部位于低地址处,堆栈向高地址方向增长; 递减堆栈就是堆栈底部位于高地址处,堆栈向低地址方向递减;

ARM指令系统支持的是满递减堆栈,即堆栈底部位于高地址处,堆栈向低地址方向递减,且堆栈指针总是指向最后压入堆栈的数据的存储单元;

7、 请说明MOV指令与LDR加载指令的区别和用途。

答:MOV指令用于将8位位图立即数或寄存器数据传送到目标寄存器(Rd),也可用于移位运算等操作。

LDR指令用于从存储器中加载一个数据到寄存器中。用于访问存储器操作。

8、 什么是?文字池??它在ARM汇编程序中用和用途?

答:文字池是镶嵌在代码中的一段存储空间,可用来存放常量数据;这些常量可以是程序中的立即

数,也可以是存储单元地址。

ARM汇编语言中使用LDR加载指令附加文字池的方法,以实现对任意32bit立即数的访问。

9、 解释B指令、BL指令与BX指令的功能差别?简述它们的应用场合。 答:B指令跳转到标号指定的地址执行程序。

BL指令先将下一条指令的地址拷贝到R14中,然后跳转到标号指定地址运行程序。

BX指令跳转到Rm指定的地址处执行程序,若Rm[0]为1,则跳转时自动将CPSR中的标志T置位,即把目标地址的代码解释为Thumb代码;若Rm[0]为0,则跳转时自动将CPSR中的标志T清零,即把目标地址的代码解释为ARM代码。该指令用于处理器状态切换。

10、 ARM汇编指令条件码如下表,分析下两段程序片断的功能,写出其等价的类C语言功能描述:

条件助记符 EQ NE CS/HS CC/LO MI PL VS VC HI LS GE LT GT LE AL NV 程序片断1: CMP R0, R1 ADDHI R0 , R0 , #1 ADDLS R1 , R1 , #1

答:(1)if(R0 > R1) R0++; else R1++;

11、 使用ARM汇编指令的条件执行功能,翻译下面C代码语句。

标志 Z=1 Z=0 C=1 C=0 N=1 N=0 V=1 V=0 C=1,Z=0 C=0,Z=1 N=V N!=V Z=0,N=V Z=1,N!=V 任何 任何 相等 不相等 含义 无符号数大于或等于 无符号数小于 负数 正数或零 溢出 没有溢出 无符号数大于 无符号数小于或等于 有符号数大于或等于 有符号数小于 有符号数大于 有符号数小于或等于 无条件执行 (指令默认条件) 从不执行(不要使用) 程序片断2: CMP R0 , #10 CMPNE R1 , #20 ADDNE R0 , R0 , R1

(2) if( (R0!=10)&&(R1!=20) ) R0 = R0 + R1;

⑴ if(x = = y) a = b + c;

else

a = b – c;

⑵ if(x = = y) && ( a = = b)

c = c * 2;

答:(1)MOV R0, x; (2) MOV R0, x; MOV R1, y; MOV R1, y; MOV R2, a; MOV R2, a MOV R3, b; MOV R3, b

MOV R4, c; MOV R4, c CMP R1, R2; CMP R0, R1 ADDEQ R2, R3, R4; CMPEQ R2, R3 SUBNE R2, R3, R4; MOV R4, R4, LSL #2

(从11题和12题结合来看,对于将汇编程序到C程序的转变掌握较好,反之则有一些欠缺,说明已经有了读汇编的能力,但是使用上还存在问题;汇编指令是针对寄存器的,不能在指令中同时使用两个数据,例如:CMP x,y,必须将数值首先存入寄存器中)

12、 下列代码段是实现开IRQ中断和关IRQ中断功能,试补齐空白处内容。 ⑴ ______ R0,CPSR ⑵ ______ R1,CPSR ORR R1, ________ BIC R1,R0,_______ ______ CPSR_c, R1 ______ CPSR_c, R1 答:(1) MRS R0, CPSR (2) MRS R1, CPSR BIC R1, R0,#0x80 ORR R1, #0x80 MSR CPSR_c, R1 MSR CPSR_c, R1

13、 若ARM CPU中各寄存器及存储单元参数如下图所示,试写出指令执行后,各寄存器及存储单

元中内容为多少。 ⑴ STMIA R13!,{R0-R3} ⑵LDMDB R13, { R0-R3}

存储地址0x000080000x00008004执行前R30x00000004R20x00000003R10x00000002R00x00000001R130x000080000x000080080x0000800C0x000080100x000080140x000080180x0000801C0x00008020执行后R3R2R1R0R13数据存储地址数据0x000080000x111111110x000080040x22222222执行前R30x00000004R20x00000003R10x00000002R00x00000001R130x0000800C0x000080080x333333330x0000800C0x444444440x000080100x555555550x000080140x666666660x000080180x777777770x0000801C0x888888880x000080200x99999999执行后R3R2R1R0R13STMIAR13!,{R0-R3}答:

LDMDBR13,{ R0-R3}

存储地址数据存储地址数据0x000080000x000000010x000080040x00000002执行前R30x00000004R20x00000003R10x00000002R00x00000001R130x000080000x000080080x000000030x0000800C0x000000040x000080100x000080140x000080180x0000801C0x00008020执行后0x00000004R30x00000003R20x00000002R10x00000001R00x000080000x111111110x000080040x22222222执行前R30x00000004R20x00000003R10x00000002R00x000000010x000080080x333333330x0000800C0x444444440x000080100x555555550x000080140x666666660x000080180x777777770x0000801C0x888888880x000080200x99999999执行后0x44444444R30x33333333R20x22222222R10x11111111R00x00008000R130x00008010R13R130x00008010STMIAR13!,{R0-R3}LDMDBR13,{ R0-R3}

(这道题同样的反映出了多寄存器的掌握不够熟练)

14、 使用ARM指令实现2个128bit数的减法的功能段(第一个数由高到低放在寄存器R3~R0,第

二个数由高到低放在寄存器R7~R4,结果差由高到低放在寄存器R11~R8中。) 答: SUBS R8, R0,R4 ;低32bit运算,可能产生借位 SBCS R9,R1,R5 ;带借位计算次低32bit SBCS R10,R2,R6 ;带借位计算次高32bit SBCS R11,R3,R7 ;带借位计算高32bit

练习题

1、 什么是计算机语言?

答:机器语言是一种用二进制代码表示指令和数据,能被机器直接识别的计算机语言。 2、 相对于高级语言,汇编语言有何特点?

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

3、 如何在汇编程序中显示声明文字池?什么情况下需要显示声明文字池?一般应在程序的什么位置

显示声明文字池?为什么?

答:使用LTORG汇编器伪指令用于显示声明一个文字池(literal pool)。 实际应用中,如果ARM需要处理的操作数不符合8bit位图立即数的要求时,那么就需要使用文字池来存放这个常量。

在ARM汇编语言中,使用LDR加载指令相对寻址文字池中存放的任意32bit立即数。因为LDR指令的寻址范围是指令位置的前后4KB,所以如果LDR指令所在位置距离文字池超出4KB范围,那么需要在程序中的适当位置,使用LTORG伪指令显式声明文字池。

解决方法:一般总可以在LDR伪指令前后4KB的范围内找到分支指令,文字池可声明在分支(B)指令之后的紧邻位置,因为B指令总是会将程序的执行转移到其它地方的,所以这样做不会影响代码的正常执行。

4、 简述汇编程序设计的一般流程。

答:使用计算机通过编程序解决某一问题时,通常按以下步骤进行:

1分析问题,建立数学模型; ○

2确定算法; ○

3设计程序流程图; ○

4合理分配寄存器、存储空间和外设资源; ○

5编制程序; ○

6调试程序; ○

7形成文档; ○

5、 实现汇编程序分支的关键语句有哪几条?分别用于什么场合?

答:汇编程序分支结构的实现是通过在运行时由机器根据不同的条件自动作出判断,选择执行相应的处理程序段。分支指令主要有BL指令、B指令和BX指令,分别用于调用子程序、直接跳转和带状态的跳转场合。

6、 循环控制有哪几种方法?各有什么应用特点?

答:循环控制有两种方法。 ○1计数控制循环:通过计数循环次数,判断是否已达到预定次数,控制循环。适合已知循环次数的循环控制。

○2条件控制循环:通过判断循环终止条件是否已成立,控制循环。适合仅知道结束条件的循环控

制。

7、 汇编子程序传递参数有哪几种方式?

答:汇编子程序传递参数有三种方式,分别为:

○1寄存器传递参数方式; ○2存储区域传递参数方式; ○3堆栈传递参数方式;

8、 用汇编语言编写程序将R0寄存器中的字数据分成4组,每组8位,然后分别存放到R1、R2、R3

和R4中。 答:

AREA decode, CODE, READONLY ENTRY CODE32 start LDR LDR

R0, =x R0, [R0]

; 将x加载到寄存器R0 ; 取x的低八位

; 取x的次低八位

; 代码段名decode

; 程序的入口

MOV R1, #0xFF AND R1, R1, R0 MOV R2,

#0xFF

AND R2, R2, R0, ROR #8 MOV R3, #0xFF

AND R3, R3, R0, ROR #16 MOV R4, #0xFF

AND R4, R4, R0, ROR #24 stop

MOV R0, #0x18 LDR SWI

0x123456

; 取x的次高八位 ; 取x的高八位

; 这三条指令是ADS调试环境特约

R1, =0x20026 ;程序运行结束返回编译器调试环境

AREA Data, DATA, READWRITE x DCD END

123456789

; 数据段的名字Data

; 结束

9、 用汇编语言编写程序统计任意字符串包含的字符个数。(约定:字符串以0为结束标志) 答:

AREA count, CODE, READONLY ENTRY CODE32 start LDR CONTI LDRB R1, [R0]

; 将string中的一个字符加载到寄存器R1

R0, =string

; R0指向字符串string中第一个字符

MOV R2, #0

; 代码段名 count

; 程序的入口

CMP R1, #0

; 是否是字符串结束标志

; 如果不是,指针拨向下一个字符

; 如果是,将统计的字符串个数,放入单元num

ADDNE R2, R2, #1 ; 如果不是,统计个数增加1 ADDNE R0, R0, #1 BNE CONTI LDREQ R3, =NUM STREQ R2, [R3] stop

MOV R0, #0x18 LDR SWI

AREA Data, DATA, READWRITE string DCB NUM DCB END

0

100

; 这三条指令是ADS调试环境特约

R1, =0x20026

0x123456

;程序运行结束返回编译器调试环境

; 数据段的名字Data

\

; 结束

10、 用汇编语言编写程序计算:答:

ENTRY CODE32 start LDR

R0, =sum

; R0指向存储单元sum ; R1存放累加和 ; R2初始化起始值 ; 实现R1=R1+R2*2 ; 判断R2是否等于100 ; 如果不等,R2累加1

; 如果相等,将累加和R1放入存储单元sum中

; 这三条指令是ADS调试环境特约

MOV R1, #0 MOV R2, #1 CONTI

ADD R1, R1, R2, LSL #1 CMP R2, #100 BNE CONTI stop

MOV R0, #0x18 LDR SWI

AREA Data, DATA, READWRITE sum END

DCD

0

; 结束

; 数据段的名字Data

0x123456

R1, =0x20026

;程序运行结束返回编译器调试环境

ADDNE R2, R2, #1 STREQ R1, [R0]

Sum??2?NN?1

AREA sum2n, CODE, READONLY

; 代码段名sum2n

; 程序的入口

11、 用汇编语言编写程序实现:已知BUF1中有N1个按从小到大顺序排列的互不相等的字符号数,BUF2中有N2个从小到大顺序排列的互不相等的字符号数。试编写程序将BUF1和BUF2中的数合并到BUF3中,使得BUF3中的数互不相等且按从小到大顺序排列。

答:AREA GATHER,CODE,READONLY

ENTRY CODE32 N1 EQU 5 N2 EQU 6 N3 EQU 11

START LDR R0,=BUF1;数组一的起始指针始终不动 LDR R1,=BUF2;数组二的起始指针始终不动 LDR R2,=BUF3;数组三的起始指针始终不动 MOV R3,#0;数组一,二,三的计数器 MOV R4,#0 MOV R5,#0

LOOPI ADD R6,R0,R3,LSL #2;数组一,二,三的地址指针,要移动 ADD R7,R1,R4,LSL #2 ADD R8,R2,R5,LSL #2 LDR R9,[R6] LDR R10,[R7] CMP R9,R10 BLT LOOPJ BGT LOOPK BEQ LOOP CMP R5,#N3 BEQ STOP

LOOPJ STR R9,[R8];数组一中的数小于数组二中的数,将数组一中的数放入数组三中 ADD R3,R3,#1 ADD R5,R5,#1 CMP R3,#N1 BLT LOOPI ;B LOPI

LOPI STR R10,[R8,#04]!;数组一中的数已经合并到数组三中,将数组二中剩余的数存入数组三中 ADD R4,R4,#1 ADD R5,R5,#1 ADD R7,R1,R4,LSL #2 LDR R10,[R7] CMP R4,#N2 BLT LOPI

LOOPK STR R10,[R8];数组二中的数小于数组一中的数,将数组二中的数放入数组三中 ADD R4,R4,#1 ADD R5,R5,#1 CMP R4,#N2 BLT LOOPI ;B LOPJ

LOPJ STR R9,[R8,#04]!;数组二中的数已经合并到数组三中,将数组一中剩余的数存入数组三中 ADD R3,R3,#1

ADD R5,R5,#1 ADD R6,R0,R3,LSL #2 LDR R9,[R6] CMP R3,#N1 BLT LOPJ

LOOP STR R9,[R8];数组一中的数与数组二中的数相等,将数组一中的数放入数组三,三个计数器同时加一

ADD R3,R3,#1 ADD R4,R4,#1 ADD R5,R5,#1 CMP R3,#N1 BLT LOOPI BEQ LOPI CMP R4,#N2 BLT LOOPI BEQ LOPJ STOP MOV R0,#0x18 LDR R1,=0X20026 SWI 0X123456

AREA Data,DATA,READWRITE BUF1 DCD 0X11,0X33,0X55,0X77,0X99 BUF2 DCD 0X22,0X44,0X66,0X88,0XAA,0XBB

BUF3 DCD 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00

END

12、用汇编语言编写程序实现:将字节变量BVAR中的压缩型BCD数转换为二进制数,并存入原变量中。

答:

AREA tranx, CODE, READONLY ; 代码段名tranx ENTRY CODE32 start LDR LDR

R0, =BVAR R1, [R0]

#0x0F

; 取BVAR的个位 ; 取BVAR的十位 ; R4=R3*2 ; R5=R3*8 ; R3=R4+R5=R3*10 ; R1=R3+R2

; 将BVAR的值加载到寄存器R1

; 程序的入口

MOV R2,

AND R2, R2, R1 MOV R3, #0x0F

AND R3, R3, R1, LSR #4 MOV R4, R3, LSL #1 MOV R5, R3, LSL #3 ADD R3, R4, R5 ADD R1, R3, R2 STR R1, [R0] stop

; 将转换的值存到BVAR变量中

MOV R0, #0x18 LDR SWI

0x123456

; 这三条指令是ADS调试环境特约

;程序运行结束返回编译器调试环境

R1, =0x20026

AREA Data, DATA, READWRITE BVAR DCB END

0x89

; 数据段的名字Data

; 结束

练习题

1.简述SRAM芯片与DRAM芯片的共同点与不同点。

答:SRAM芯片与DRAM芯片的共同点:都属于RAM芯片,能够随机读写,存贮的数据掉电就丢失。 不同的:SRAM属于静态RAM,静态RAM与CPU连接时控制电路简单,集成度相对较低;DRAM集

成度很高,但需硬件刷新电路支持工作,CPU与DRAM连接时必须有刷新电路,如果DRAM不进行定期刷新,数据就可能丢失。

2.简述ROM芯片的常见分类,各种ROM芯片的特点及其适用场合。 只读存储器ROM目前常见的有:

掩膜式ROM,用户不可对其编程,其内容已由厂家设定好,不能更改;

可编程ROM(Programmable ROM,简称PROM),用户只能对其进行一次编程,写入后不能更改; 可擦除的PROM(Erasable PROM,简称EPROM),其内容可用紫外线擦除,用户可对其进行多次编程; 电擦除的PROM(Electrically Erasable PROM,简称EEPROM或E2PROM),能以字节为单位擦除和改写。 闪速存储器又称Flash存储器,它是一种非易失性存储器(Non-Volatile Memory,NVM),是在EPROM

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

? NOR型Flash存储器,以Intel和AMD为代表的NOR型Flash存储器是最早出现的一类; ? NAND型Flash存储器,以三星和东芝为代表的NAND型Flash存储器

3.某微机系统中ROM区的首地址是9000H,末地址是FFFFH,其ROM区域的存储容量是多少? 答:其ROM区域的存储容量是:28KB

4.设有一个具有20位地址线和32位字长的存储器,问:(1)该存储器能存储多少个字节信息?(2)

如果该存储器由256K×8位SRAM芯片组成,需要用多少片?需要多少位地址来作芯片选择? 答:(1) 该存储器能存储1MB信息;

(2)如果该存储器由256K×8位SRAM芯片组成,需要4片,其中片内地址需要18根地址线,片间

至少需要2跟地址线进行译码来作芯片选择。

5.若CPU访问由256K×1位的DRAM芯片构成的512K×8位的存储器子系统,问CPU需要使用多少根

地址线?那些地址线用作片内寻址?那些地址线用作片选控制?

答:CPU至少需要使用19根地址线,其中18根用于片内,最高位地址用于片选控制。

6.某计算机由2164芯片(64K?1位)组成64K?8位的内存系统,当CPU将内存中的某一个存储单元值

读出后,该存储单元的内容变成什么?该内存系统的刷新控制电路,需要在一个刷新周期内,刷新多少行?

答:CPU将内存中的某一个存储单元值读出后,该存储单元的内容不变,读取数据不会改变存储单元的

内容。该内存系统的刷新控制电路,需要在一个刷新周期内,刷新多少行?

7. 某微机系统中,使用了1片EPROM 2732,它与CPU的连接关系如图5.38所示,试计算该芯片在系

统中的地址空间范围,以及可访问多少个存储单元。

A15 ~ A0A10A11A12A13A14A15A9~A0A11CS A10EPROM2732CPUIO/M

图5.38

答:地址空间范围F000H~F3FFH。可访问1K字节存储单元。

8.在某计算机系统中扩展32K字节的RAM,起始地址为8000H,设地址总线为20位,数据总线为8位。

选用6264芯片,画出扩展的存储器的电路连接图。 答:分析,

【分析】 6264的容量为8K×8,需用4片进行字扩展。6264有8条数据线(O7?O0)正好与CPU的数

据总线(D7?D0)连接;13条地址线(A12?A0)与CPU的低位地址线(A12?A0)连接。2864选片信号(CS)的连接是一个难点,需要考虑两个问题:一是与CPU高位地址线(A19?A13)和控制信号(IO/M、RD)如何连接,二是根据给定的地址范围如何连接。

各组芯片的地址范围 芯片 RAM1 A19 A18 A17 A16 A15 A14 A13 A12 ? A0 0 0 0 0 1 0 0 0 0000 0000 0000(最低地址) 1 1111 1111 1111(最高地址) 0 0000 0000 0000(最低地址) 1 1111 1111 1111(最高地址) 0 0000 0000 0000(最低地址) 1 1111 1111 1111(最高地址) 0 0000 0000 0000(最低地址) 1 1111 1111 1111(最高地址) 地址范围 0000H~ 1FFFH 2000H~ 3FFFH 4000H~ 5FFFH 4000H~ 5FFFH RAM2 0 0 0 0 1 0 1 RAM3 0 0 0 1 1 1 0 RAM4 0 0 0 1 1 1 1 74LS138

G1=RD+IO/M 74LS138

1 A19 A18 A17 G1 或门 G2A G2B C B A Y7 A16 A15 A14 A13 Y6 Y5 Y4 Y3 Y2 Y1 CS0 CS1 CS2 CS3 Y0 A10~A0 A12~A0 CS RAM1 6264 PD/PGM O7~O0 A12~A0 A12~A0 CS RAM3 6264 O7~O0 A12~A0 CS RAM4 6264 O7~O0 IO/M RD CS0 CS1 CS CS2 CS3 RAM2 6264 PD/PGM O7~O0 D7~D0

9.用16K×8位DRAM芯片构成64K×32位的存储器,试画出该存储器的电路连接图。

答:四片16K×8位DRAM芯片构成64K×32位的存储器,需要刷新电路等逻辑,存储器部分采用模块化

方法即可完成电路连接,刷新电路部分需要专门的电路。

10.由8088 CPU组成一个小型计算机系统,有ROM 32KB,地址范围为00000H~07FFFH;有RAM 8KB,

地址范围为08000H~09FFFH;如果ROM选用2764(8K×8位),RAM选用8K×1位的SRAM芯片,试画出扩展的存储器的电路连接图。

答:

分析如下 (1) ROM 2764 8K×8芯片,需4片,做字扩展,片内寻址线13根 RAM 2114 1K×4芯片,需16片,做字位扩展,片内寻址线10根 (2) 地址范围: 0 0 0 0 A15 A14 A13 A12 A11 A10

ROM1 00000~01FFF H 0 0 0 (一级译码) ROM2 02000~03FFF H 0 0 1 ROM3 04000~05FFF H 0 1 0 ROM4 06000~07FFFH 0 1 1

RAM1(组)08000~083FFH 1 0 0 0 0 0 (RAM2 08400~087FFH 1 0 0 0 0 1 RAM3 08800~08BFFH 1 0 0 0 1 0 RAM4 08C00~08FFFH 1 0 0 0 1 1 RAM5 09000~093FFH 1 0 0 1 0 0 RAM6 09400~09FFFH 1 0 0 1 0 1 RAM7 09800~09BFFH 1 0 0 1 1 0 RAM8 09C00~09FFFH 1 0 0 1 1 1 (3) ROM1 Y0 (1 # 译码器 A15 A14 A13 译码输入 ) ROM2 Y1 ROM3 Y2 ROM4 Y3

RAM1 Y0 (2 # 译码器 A12 A11 A10译码输入) RAM2 Y1 RAM3 Y2 RAM4 Y3 RAM5 Y4 RAM6 Y5 RAM7 Y6 RAM8 Y7

(4) 2-4译码器和3-8译码器 画图连接 略

二级译码) 练习题

1、 CPU与外设交换数据的传送方式有哪几种?各有何特点?

答:无条件数据访问方式、状态查询数据访问方式、中断方式数据访问和DMA方式数据访问传输等几种方式。

? 无条件数据访问方式特点:处理器在进行访问时不必关心其状态,这些设备永远处于‘准备好’状

态,可随时访问。采用无条件传送方式的接口电路很简单。

? 状态查询数据访问方式特点:它是对‘条件外设’的一种控制方式;处理器在进行访问时,需要关

心其状态,只有状态许可时方可对外设进行访问。对于慢速外设,严重影响CPU的效率;编程较为简单。

? 中断方式数据访问特点:它是对‘条件外设’的一种控制方式;当外设需要与CPU进行信息交换时,

由外设主动向CPU发出数据传送请求信号,CPU在等待此请求信号时可以运行其他的程序代码,提高了CPU的效率。需要编写中断服务程序。 ? DMA方式数据访问传输等几种方式特点:在高速外设和存储器之间桥接建立一条直接数据传输的临

时通道,控制并完成数据块在内存与高速外设之间高速直接地传输。具有更高的数据吞吐率,解放CPU可以并行地处理其他程序代码。

2、 一般I/O接口电路的作用有哪些?

答:I/O接口电路主要用于解决下列问题:

1)输出数据的锁存缓冲,协调主机与外设之间数据传输的速度差异。 2)输入数据的三态隔离,确保非I/O传送期间处理器总线不被外设占用。

3)信号形式匹配,将诸如光电、压力、温度等多种形式的物理信号统一转换成处理器可直接

处理的数字电路信号或反之。

4)信号格式转换,将主机系统中的并行数据转换成外设协议数据格式或反之。 5)产生和提供联络、控制等信号,保证处理器与外设之间数据传输的有效和可靠。

3、 接口电路中的寄存器分为哪几类?应用软件编程人员如何使用它们来驱动外设接口电路?

答:接口电路中的寄存器分为状态寄存器、数据寄存器和控制寄存器三类。编程人员读取、分析状态寄存器中的数据情况,即可知道设备的当前状态,依据具体情况读/写数据寄存器来完成数据的交互,向控制寄存器写入控制字实现对外设的实际控制。

4、 嵌入式系统常用的外设有哪些?这些外设一般以哪种方式存在?

答:通用并行输入输出接口(GPIO)、定时计数器(Timer)、通用异步收发器(UART)和中断控制器等。这些外设对于编程开发者而言外设都可以抽象成为一组端口寄存器,即状态寄存器、数据寄存器和控制寄存器三类,CPU通过对各个端口寄存器的访问实现对外设的数据传输和控制。

5、 ARM系统中实现中断接入的部件是什么?它有何功能?

答:向量中断控制器(VIC)。通过对VIC编程可对ARM器件的各个中断源进行中断屏蔽控制、中断优先级控制、中断分类控制、中断向量传递、状态查询等。

6、 什么是中断源?常采用中断方式和CPU交互的外设部件有哪些?中断处理过程是什么?

答:计算机技术中将任何能够引起计算机中断的事件统称为‘中断源’。常采用中断方式和CPU交互的外设部件有外中断(EINT)、定时计数器(Timer)、UART、SPI、RTC等。中断处理过程主要含有:中断请求,中断响应,断点保护,中断处理,中断返回5个步骤。

7、 ARM7的中断类型有哪些?哪种方式最快?当有多个中断源同时向CPU发出中断申请时,CPU依据

什么来进行响应中断?

答:IRQ中断和FIQ中断。FIQ中断方式最快。当有多个中断源同时向CPU发出中断申请时,CPU依据内部约定好的优先级从高到低地优先响应高优先级中断。FIQ中断的优先级最高,对于向量IRQ中断按照VIC中的优先级安排优先响应slot0槽位中的中断,slot2、slot3、….、slot15优先级依次降低。

8、 中断嵌套的深度需要考虑哪些因素?

答:仅受到处理器各模式堆栈的空间深度的限制。

练习题

1. ARM芯片主要厂家有哪些?从网上查阅了解各厂家生产的芯片的特色和应用领域。 2. 一般ARM芯片内部集成了哪些资源? 3. 简述LPC2000系列芯片的存储空间分配。

4. 下图是LPC2000内部的时钟发生系统图,试对该图进行简单的描述说明。

1fOSC产生稳定的时钟信号晶体晶体振荡器振荡器FOSC3将Fosc提升到合适的频率ON/OFFPLLPLL4FCCLKCPU内核外接晶体或外接时钟源2唤醒唤醒定时器定时器FPCLKVPBVPB分频器分频器芯片外设

LPC2000内部的时钟发生系统图5. 简述LPC2000系列芯片内部定时器的预分频功能,匹配功能,捕获功能,并举一个应用例子。

6. 简述LPC2000系列芯片内部向量中断控制器(VIC)的功能特点,如果定时器作为一个中断源,需要对VIC进行哪些配置?

7. 简述LPC2000系列芯片内部定时器的功能特点。

8. 简述LPC2000系列芯片的引脚设置寄存器PINSEL0、PINSEL1、PINSEL2的具体功能。 9. 编写一个通用的UART驱动程序。要求: (1) 使用中断方式接收、发送数据;

(2) 要充分利用UART的硬件接收、发送FIFO;

(3) 编写的程序代码要求简洁、高效、可靠;