冯诺依曼体系结构计算机的要点和工作过程Word文档格式.docx

上传人:b****6 文档编号:16527233 上传时间:2022-11-24 格式:DOCX 页数:13 大小:104.44KB
下载 相关 举报
冯诺依曼体系结构计算机的要点和工作过程Word文档格式.docx_第1页
第1页 / 共13页
冯诺依曼体系结构计算机的要点和工作过程Word文档格式.docx_第2页
第2页 / 共13页
冯诺依曼体系结构计算机的要点和工作过程Word文档格式.docx_第3页
第3页 / 共13页
冯诺依曼体系结构计算机的要点和工作过程Word文档格式.docx_第4页
第4页 / 共13页
冯诺依曼体系结构计算机的要点和工作过程Word文档格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

冯诺依曼体系结构计算机的要点和工作过程Word文档格式.docx

《冯诺依曼体系结构计算机的要点和工作过程Word文档格式.docx》由会员分享,可在线阅读,更多相关《冯诺依曼体系结构计算机的要点和工作过程Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。

冯诺依曼体系结构计算机的要点和工作过程Word文档格式.docx

ARM7处理器统一编址编址方式

统一编址方式-一存储器单元资源和10端口资源统一编址在一个地址空间。

特点:

按地址空间位置约定各分类资源,访问10端口如同访问存储器单元,无需专用的10访问指令。

芯片上没有专用于10访问的引脚。

独立编址方式-一存储黠资源和10端口资源分别编址在两个地址空间,存储器地址空间和10地址空间。

按资源分类的地址空间清晰,使用不同的指令访问存储器和10端口,处理器指令系统屮既有存储器访问指令,又有专用的10访问指令。

芯片上有专用于10访问的引脚。

22•大端存储模式和小端存储模式的含义:

高位数据存储在高地址字节,这种组织数据的存储方

式称为'

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

端模式'

:

&

ARM体系结构支持7种处理器模式,用户模式、系统模式、快中断模式、中断模式、管理模式、屮止模式、未定义模式。

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

ARM中定义了复位、未定义指令、SWI(软中断)、预取指终止、预取数终止、irq以及闻等7种异常。

八RM7的异常处理:

异常响应)处理器转入到ARM状态对应的异常模式;

在该异常模式的SPSR、LR寄存器分别备份CPSR>

PC的当前数据;

重置CPSR和PC

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

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

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

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

Thumb指令中仅有B指令具备条件执行功能。

1、解释〃满堆栈”、’‘空堆栈”、递增堆栈”和“递减堆栈”?

ARH指令系统中是如何支持的?

答:

满堆栈就是堆栈指针总是指向最后压入堆栈的数据的存储单元;

空堆栈就是堆栈指针总是指向下一个将要放入数据的存储单兀;

递增堆栈就是堆栈底部位于低地址处.堆栈向高地址方向增长;

递减堆栈就是堆栈底部位于高地址处,堆栈向低地址方向递减;

ARM指令系统支持的是满递减堆栈

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

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

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

用于访问存储器操作。

解释B指令、BL指令与BX指令的功能差别?

简述它们的应用场合。

B指令跳转到标号指定的地址执行程序。

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

BX指令跳转到Rm指定的地址处执行程序,该指令用于处理器状态切换。

4、计算机语言:

机器语言是一种用二进制代码表示指令和数据,能被机器直接识别的计算机语言。

5、如何在汇编程序中显示声明文字池?

什么情况下需要显示声明文字池?

一般应在程序的什么位置显示声明文字池?

为什么?

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

在ARM汇编语言屮,使用LDR加载指令相对寻址文字池屮存敖的任意32bif立即数。

因为LDR指令的寻址围是指令位置的前后4KB•所以如果LDR指令所在位置距离文字池超出4KB围,那么需要在程序中的适当位置,使用LTORG伪指令显式声明文字池。

解决方法:

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

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

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

②确定算法;

0设计程序流程图;

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

⑤编制程序;

⑥调试程序;

⑦形成文档;

7、实现汇编程序分支的关键语句有哪几条?

分别用于什么场合?

汇编程序分支结构的实现是通过在运行时由机器根据不同的条件自动作出判断,选择执行相应的处理程序段。

分支指令主要有BL指令、B指令和BX指令,分别用于调用子程序、直接跳转和带状态的規转场合。

8、循环控制有哪几种方法?

各有什么应用特点?

循环控制有两种方法。

①计数控制循环:

通过计数循环次数,判断是否已达到预定次数,控制循环。

适合已知循环次数的循环控制。

0条件控制循环:

通过判断循环终止条件是否已成立,控制

将乂加载到寄存器RO

取只的低八位

取乂的次低八位

;

取X的次高八位

取乂的高八位

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

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

循环。

适合仅知道结束条件的循环控制。

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

①寄存器传递参数方式;

0存储区域传递参数方式;

边堆栈传递参数方式;

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

中。

AREAdecode,CODE,READONLY

ENTRY

CODE32start

LDRRO,=x

LDRRO,[RO]

MOVRl,#0xFF

ANDRl,Rl,RO

MOVR2,#0xFF

ANDR2,R2,RO,ROR#8

MOVR3,#0xFF

ANDR3,R3.RO,ROR#16

MOVR4,#0xFF

ANDR4,R4.RO,ROR#24stop

MOVRO,#0x18

LDRRl,=0x20026

SWI0x123456

AREAData,DATA,READWRITE

11、用汇编语言编写程序统计任意字符串包含的字符个数。

(约定:

字符串以0为结束标志)

AREAcount,CODE,READONLY;

代码段名count

ENTRY;

程序的入口

LDRRO,=string

MOVR2,#0

CONTI

LDRBRl,[RO]

CMPRl,#0

ADDNER2.R2,#l

ADDNERO,RO,#1

BNECONTI

RO指向字符串string+第一个字符

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

是否是字符串结束标志

如果不是,统计个数增加1

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

LDREQR3.二NUM

STREQR2.[R3]

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

stop

MOVRQ#0x18

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

AREAData.DATA,READWRITE

sumDCD0

END

数据段的名字Data

结束

14读程序、文件名:

TESTl.S;

声明代码段Example1

功能:

实现字符串拷贝功能说明:

使用ARMulate软件仿真调试

numEQU20

C0DE32

STARTLDRROt=src

LDRRL=dst

MOVR2,#num

设置拷贝字的个数

标识程序入口

声明32位ARM指令

R0指向源数据块

R1指向目的数据块

R2需要拷贝的数据个数wordcopy

AREAExample!

CODE,READONLY

LDRR3,[R0],#4:

从源数据块中取一个字,放入R3屮,R0二R0+4

将R3屮的数据存入Rl指向的存储单元屮,R1二R1+4

SUBSR2,R2,#1;

R2计数器减1

BNEwordcopy;

如果R2不为0,则转|口Jwordcopy处

MOVR0,#0x18:

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

LDRR1二0x20026

AREABlockData,DATA.READWRITE;

数据段的名字BlockData

AREAI.extraLNOINIT,READWRITE;

未初始数据段的名字.extradataSPACE1024

文件结束

第六章

1、主机与外设接口之间主要交互的三类信息:

状态信息(输入)用于标示设备的状态情况。

数据信息

(输入/输出)-要传送的二进制目标数掲。

控制信息(输出)控制外设的工作方式与具体操作。

对应于上述的三种信息,外设接口电路屮的端口寄存器也分为了三类:

状态端口(寄存器)、数据端口(寄存器)和控制端口(寄存器)

2、接口与端口:

接口和端口是两个不同的概念。

接口-一侧重于物理连接;

端口-一侧重于接口的部工作方式。

接口由若干个端口加上相应的控制电路构成。

每个端口都对应与接口电路屮的各个工作寄存器。

外设通过接口连接入计算机系统,计算机通过端口访问控制外设工作。

3、处理器与外设之间的数据传送方式主要有:

无条件数据访问方式,状态查询方式数据访问方式,屮断方式数据访问方式和直接存储器访问(DMA)方式等几种方式。

4、无条件外设一-输入设备总是准备好向CPU提供数据,输出设备总是准备好接收CPU送来的数据。

5、接口电路的主要功能:

任何设备都不能长期占用系统总线;

输入设备要经过三态缓冲器相连到系统总线;

输出设备要经过数据锁存黠相连到系统总线;

6、状态查询方式的原理:

在执行数据端口访问指令前,要先查询该设备的状态,当设备处于准备好状态时,CPU才执行对设备数掲端口的输入/输出指令,与外设交换信息;

否则,等待。

中断方式数据访问:

当外设需要与CPU进行信息交换时,由外设主动向CPU发出数据传送请求信号

(中断申请),CPU响应此请求信号后(中断响应),暂停正在执行的程序,转去执行该外设的数据输入/输出操作程序(屮断服务程序一一ISR),外设数据端口访问后,CPU再继续执行被暂停的程序(中断返回)。

7、屮断向量一--中断服务程序(ISR)的入口地址;

中断现场CPU响应中断离开主程序时,

CPU的相关寄存器数据情况。

中断响应-一-CPU敏感并进入到ISR的一系列动作;

中断返回-一-CPU返回被中断主程序断点处继续执行主程序的一系列动作;

8、屮断处理过程一般包括以下五个步骤:

①中断请求、②屮断响应、③断点保护、④中断处理和⑤屮断返回。

9、例7-1:

使用TimerO作为1秒钟的定时器,产生周期为2秒,占空比为1:

1的方波信号。

intmain(void)

PINSELO=PINSELO&

(~(3«

10))!

(2«

10);

/*设置PO.5管脚为MATO.1功能*/

TOCTCR=0x00;

/*设置TimerO工作在定时方式*/

TOTC=0;

/*定时器设置为0*/

TOPR=99;

/*时钟100预分频*/

TOMCR=0x02«

3;

/*设置T0MR1匹配后复位TOTC,无中断标志*/T0MR1=Fpclk/100;

/*1秒钟定时匹配目标值*/

TOEMR1=0xC2;

/*设置TimerO发生MR1匹配时翻转MATO.1位*/

TOTCR=0x01;

/*启动定时器*/

while

(1);

return0;

例7-2:

假设车轮毅上已经均匀安装了8个霍尔传感器,车轮每转一周可产生8个正脉冲。

使用LPC2132屮的TimerO和Timcrl资源,设计一个简易的车用综合仪表数据处理系统(可测量显示车速、本次里程.总里程等数据)o

^defineKClr1«

0

/*KClr按键连接与P0.0管脚,KClr按下时P0.0为低电平*/

#defineL2.5/*车轮周长2.5米*/

#defineHrN8

/*车轮箍霍尔传感器个数*

uint32Vspeed;

/*前车速*/

uint32VtotalLen;

/*总里程*/

uint32VthisLen;

/*仏匸次里程Km*/intmain(void)

uint32Vx;

/*暂存1秒钟车轮毂霍尔脉冲计数值*/

PINSELO=(PINSELO&

("

(3«

20)))I(2«

20):

/*设置PO.10管脚为CAP1.0

(>

3);

/*设置PO.0管脚为GPIO♦/

/♦设置TimerO—1秒定时器♦/

TOCTCR&

二OxfO;

/*设置TimerOX作在定时方式*/

TOTC=0;

/*定时器•设置为0*/

/♦时钟100预分频*/

/*设fiT0MR0Kgt!

后复位TOTC,产生屮断标志*/

T0MR0=Fpclk/100;

/*1秒钟定时-一匹配目标值*/

/*设置Timer!

—计数器对P0.10管脚输入脉冲计数♦/

T1CTCR=(T1CTCR&

「OxOf))IOxfl;

/*设置Tin剧计数方式,计数CAP1.0的上升沿♦/

T1TC=O;

/*设置计数器初值为0*/

TlMCR=0x00;

/*这也是芯片的复位值00♦//*CAP1.0不再

T1CCR&

—”0x07;

用作捕获触发♦//*启动定时器0*/

TlTCR=0x01;

/*启动定时器1*/

if((TOIR&

OxOl)=i){/*is定时到*/

TOIR=0x01;

Vx=TlTC;

/*清除MRO中断标志♦/

VtotalLen+=Vx;

/*下一秒重新计数♦/

/*累计总里程*/

VthisLen+=Vx;

/*累计小里程*/

Vspeed二(Vx*L*3.6)/HrN;

/*单位:

Km/Hr*/}

if((IOOPIN&

KClr)==0)

VthisLen=0;

/*如果KClr按下,淸0本次里程纪录*/

7、GPIO应用举例

#define

KI1«

//

KI按键连接与PO.O管脚,KI按下时P0・0为低电平

K21«

1

K2按键连接与P0.1管脚,K2按下时P0.1为低电平

itdefine

BEEP1«

7

P0.7控制蜂鸣器,高电平鋒鸣

LED1«

8

P0.8控制发光二级管,高电平点亮

voidDelayNS(uint32dly)

uint32i;

for(;

dly>

0;

dly—)

for(i=0;

i<

50000;

i++);

{

PINSELO=0x00000000;

I00DIR=IOODIR&

(、KI);

IOODIR=IOODIR&

(、K2);

IOODIR=IOODIRBEEP;

IOODIR=IOODIRLED;

IOOCLR=IOOCLRBEEPLED;

wh

//P0[15:

0]管脚用做GPIO功能

//设置KI控制口为输入

〃设置K2控制口为输入〃设置BEEP控制口为输出

//褂留trn拎生iln头1铳屮.

///BEEP、LED输出低电平c仃)

 

if((IOOPIN&

KI)==0)

IOOSET=LED;

elseIOOCLR=LED;

//如果KI按下,LED点亮

//松开则熄灭

//如果K2按下,蜂鸣器鸣叫

if((IOOPIN&

K2)==0)IOOSET=BEEP;

elseIOOCLR=BEEP;

//

松开则静音DelayNS(50)

//延时50个时间单位

}

实騷、功能:

计算X的n次方的值

说明:

X和n均为无符号整数

XEQU9

nEQU8

定义X的值为9

定义Y的值为8

AREAExample4.CODE,READONLY;

声明代码段Example4

STARTLDRSP,=0x40003F00

芦明32位ARM指令

设置堆栈(满递减堆栈,使用STMFD/LMDFD指令)

LDRRO,=X

LDRRl,=n

BLPOW

调用子程序POW,返回值为RO

HALTBHALT

子程序:

POW

整数乘方运算

入口参数:

RO

R1

底数

指数

出口参数RO

占用资源:

RO、ri

运算结果

本子程序不考虑溢出问题

POWSTMFDSP!

{R1-RI2,LR}:

寄存器入栈保护

MOVSR2.R1

将指数值复制到R2,并影响条件标志

MOVEQRO.#1

若指数为0,则设置RO=1

BEQPOWEND

CMPR2,#l

若指数为0,则返回

BEQpowend

若指数为1,则返回(此时RO没有被更改)

movrlro

设置DOMUL子程序的入口参数R0和R1

SUB

R2,R2,#1

计数器R2二指数值减1

POWLIBLDO_MUL

调用DOMUL子程序,RO=R1xRO

SUBSR2.R2.#1

每循环一次,计数器R2减1

BNEPOWLI

若计数器R2不为0,跳转到POWL1

POWENDLDMFDSP!

JR1-R12.PC);

寄存器岀栈,返回

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 思想汇报心得体会

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1