单片机软硬件设计.docx

上传人:b****1 文档编号:14517260 上传时间:2023-06-24 格式:DOCX 页数:38 大小:105.18KB
下载 相关 举报
单片机软硬件设计.docx_第1页
第1页 / 共38页
单片机软硬件设计.docx_第2页
第2页 / 共38页
单片机软硬件设计.docx_第3页
第3页 / 共38页
单片机软硬件设计.docx_第4页
第4页 / 共38页
单片机软硬件设计.docx_第5页
第5页 / 共38页
单片机软硬件设计.docx_第6页
第6页 / 共38页
单片机软硬件设计.docx_第7页
第7页 / 共38页
单片机软硬件设计.docx_第8页
第8页 / 共38页
单片机软硬件设计.docx_第9页
第9页 / 共38页
单片机软硬件设计.docx_第10页
第10页 / 共38页
单片机软硬件设计.docx_第11页
第11页 / 共38页
单片机软硬件设计.docx_第12页
第12页 / 共38页
单片机软硬件设计.docx_第13页
第13页 / 共38页
单片机软硬件设计.docx_第14页
第14页 / 共38页
单片机软硬件设计.docx_第15页
第15页 / 共38页
单片机软硬件设计.docx_第16页
第16页 / 共38页
单片机软硬件设计.docx_第17页
第17页 / 共38页
单片机软硬件设计.docx_第18页
第18页 / 共38页
单片机软硬件设计.docx_第19页
第19页 / 共38页
单片机软硬件设计.docx_第20页
第20页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机软硬件设计.docx

《单片机软硬件设计.docx》由会员分享,可在线阅读,更多相关《单片机软硬件设计.docx(38页珍藏版)》请在冰点文库上搜索。

单片机软硬件设计.docx

单片机软硬件设计

单片机软硬件组成及接口

第一章(p20)

1、参考答案:

冯•诺伊曼计算机的设计思想(EDVAC方案:

存储程序通用电子计算机方案):

①计算机分为计算器、控制器、存储器、输入和输出装置五个部分;②计算机内采用二进制;③将程序存储在计算机内,简称“程序存储”。

其中第三点是冯•诺依曼计算机设计的精华,所以人们又把冯•诺依曼原理叫做程序存储原理,即程序由指令组成并和数据一起存放在存储器中,机器则按程序指定的逻辑顺序把指令从存储器中读出来并逐条执行,从而自动完成程序描述的处理工作。

冯•诺伊曼计算机主要以运算器和控制器为中心,结构框图如下图所示。

2、参考答案:

微处理器就是中央处理器CPU,是计算机的核心,单独的CPU不能构成计算机系统;微型计算机由微处理器、主存储器、I/O接口(注意:

不是I/O设备)组成;而微型计算机系统除了包括微型计算机外,还有系统软件(即操作系统)、应用软件、外存储器和I/O设备等。

微型计算机系统结构如下图所示。

3、答案略,见p6~7

4、答案略,见图2,或教材图1-3

5、答案略,见p12~13

6、参考答案:

由于8086微处理器的地址总线的宽度为20位,所以它可寻址220=1M字节的存储空间;而PentiumII微处理器的地址总线的宽度为36位,所以它可寻址236=64G字节的存储空间。

7、参考答案:

①PCI(PeripheralComponentInterconnect:

外围设备互联),是Intel公司1992年发布486微处理器时推出的32/64位标准总线,数据传输速率位132MB/s,适用于Pentium微型计算机。

PCI总线是同步且独立于微处理器的具有即插即用(PNP:

Plugandplay,所谓即插即用,是指当板卡插入系统时,系统会自动对板卡所需资源进行分配,如基地址、中断号等,并自动寻找相应的驱动程序)的特性.PCI总线允许任何微处理器通过桥接口连接到PCI总线上。

②USB(UniversalSerialBus:

通用串行总线),是1994年由Compaq,IBM,Microsoft等多家公司联合提出的。

USB有两种规格:

V1.1和V2.0,USB1.1传输速度为12M/秒,而USB2.0提高至360到480M/秒。

USB2.0是向下兼容USB1.1,这意味着将一个USB2.0的设备插到USB1.1口中,只能按USB1.1的速度运行。

USB连接方式十分灵活,支持热插拔,不需要单独的供电系统。

可以通过一条4线串行线缆访问USB设备,用于连接键盘、鼠标、投影仪、数码相机等,现在成为每一台计算机都必须配备的标准接口。

8、参考答案:

DB----Definebyte定义一个字节类型的变量,并为该变量分配内存

DW…Defineword定义一个字类型的变量,并为该变量分配内存

DD….Definedoubleword定义一个双字类型的变量,并为该变量分配内存

9、参考答案:

(1)1101.01b=13.25d(或13.25)

(2).0011b=57.1875

(3).0101b=43.3125

(4)111.0001b=7.0625

如何转换?

例如:

.0101b=1×25+1×23+1×2+1+1×2-2+1×2-4=32+8+2+1+0.25+0.0625=43.3125

10、参考答案:

(1)A3.3H=10×16+3+3×16-1=163.1875

(2)129.CH=1×162+2×16+9+12×16-1=297.75

(3)AC.DCH=10×16+12+13×16-1+12×16-2=172.

(4)FAB.3H=15×162+10×16+11+3×16-1=4011.1875

11、参考答案:

(1)23=10111B=27Q=17H

(2)107=B=153Q=6BH

(3)1238=B=2326Q=4D6H

(4)92=B=134Q=5CH

12、参考答案:

即把下面的数用8位补码表示

(1)+32=B

(2)-12=B,即求-12的补码

(3)+100=B(4)-92=B,即求-92的补码

13、参考答案:

压缩BCD码就是用4位二进制表示一个0~9之间的十进制数

非压缩的BCD码就是用8位二进制表示一个0~9之间的十进制数,8位二进制的最高4位可以位任何数,例如0000,0~9的ASCII码实际上就是0~9的非压缩BCD码的表示。

十进制数

压缩BCD码

非压缩BCD码

102

000100000010

44

01000100

301

001100000001

1000

0001000000000000

14、参考答案:

如果二进制最高位为0,则该数为正数,反之,如果最高位为1,则该数为负数,对其做求补运算就得到其相反数。

(1)B=-128

(2)B=+51

(3)B=-78

(4)B=-119

15、参考答案:

一个单精度浮点数占4个字节(双字),即32位二进制,其中符号位占1位,指数部分占8位,尾数部分占23位。

十进制数表示成单精度浮点数的方法如下:

①填充符号位,如果是正数填0,如果是负数填1

②将数表示成二进制形式,并进行规格化

③对于单精度浮点数,指数加上127(7FH);对于双精度浮点数,指数要加上1023(3FFH),并填充指数位

④填充尾数位

(1)+1.5①由于是正数,所以符号位为0;②写成二进制并规格化得到1.1×20,③由于2的指数是0,所以指数部分以0+127=填充;④由②知,尾数为1,所以尾数部分以0(1后面跟22个0)填充,综上,得到+1.5的单精度浮点数表示为:

+1.5=00B

写成十六进制数为:

+1.5=3FC00000H

(2)-10.625=C12A0000H

(3)+100.25=42C88000H

(4)-1200.0=CH

16、参考答案:

(1)00B=3.5

(2)10B=-1.0

(3)00B=3.125

第二章(p55~p56)

1、答案略,见p22~24

2、答案略,见p24~27

3、答案略,见p33

4、参考答案(其他可以参照本章相关内容):

1CPU:

又称微处理器,是计算机系统的核心,一般由逻辑运算单元、控制单元和一些寄存器组成。

这些寄存器用于CPU在处理数据过程中数据的暂时保存。

它主要完成从存储器中取指令,指令译码;算术逻辑运算;在处理器和存储器或I/O接口之间传送数据;程序的流向控制等。

2存储器:

是计算机系统的记忆部件,主要用来存储程序和数据。

存储器一般分为内部存储器和外部存储器两大类。

内部存储器(内存)存放当前正在使用或经常使用的程序和数据,CPU可以直接访问;外存存放“海量”数据,相对来说不经常使用,CPU使用时要先调入内存。

内部存储器又可以分为随机存取存储器(RAM)和只读存储器(ROM)。

计算机系统存储器的三层结构:

按存储容量由低到高(或按存取速度由高到低)分为高速缓冲存储器(CACHE)、主存、辅存三层。

3堆栈(Stack):

堆栈是在存储器中开辟一个区域,用来存放需要暂时保存的数据;当前栈顶单元一般采用SP指向,栈底设在存储器的高地址区,堆栈地址由高到低增长;堆栈的工作方式是“后进先出”,用入栈指令PUSH和出栈指令POP可将数据压入堆栈或从堆栈中弹出数据,栈顶指针SP的变化由CPU自动管理,入栈操作SP减小,出栈操作SP增大;堆栈的操作以字为单位。

4机器语言(MachineLanguage):

计算机唯一能接受和执行的语言。

机器语言由二进制码组成,每一串二进制码叫做一条指令,一条指令规定了计算机执行的一个动作,一台计算机所能懂得的指令的全体,叫做这个计算机的指令系统,不同型号的计算机的指令系统不同。

使用机器语言编写程序是一种相当烦琐的工作,既难于记忆也难于操作,编写出来的程序全是由0和1的数字组成,直观性差、难以阅读。

不仅难学、难记、难检查、又缺乏通用性,给计算机的推广使用带来很大的障碍。

5汇编语言(AssemblyLanguage):

是一种符号语言,它和机器语言几乎一一对应,在书写时使用字符串组成的助记符(Mnemonic)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。

使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,如微软的宏汇编程序MASM.EXE。

汇编程序把汇编语言翻译成机器语言的过程称为汇编。

汇编语言比机器语言易于读写、调试和修改,同时具有机器语言全部优点。

但在编写复杂程序时,相对高级语言代码量较大,而且汇编语言依赖于具体的处理器体系结构,不能通用,因此不能直接在不同处理器体系结构之间移植。

6指令(Instruction):

指令是能被计算机识别并执行的二进制代码,它规定了计算机能完成的某一操作。

一条指令通常由两个部分组成:

操作码+操作数。

操作码:

指明该指令要完成的操作的类型或性质,如取数、做加法或输出数据等。

操作数:

指明操作对象的内容或所在的存储单元地址(地址码),操作数在大多数情况下是地址码,地址码可以有0~3个。

5、参考答案:

题号

标志位

(1)

ZF

如果相等,ZF=1;反之,ZF=0

(2)

SF

如果为正,SF=0;反之,SF=1

(3)

OF

如果溢出,OF=1;反之,OF=0

(4)

PF

如果结果低8位1的个数为偶数,PF=1;反之,PF=0

(5)

CF

如果相减的第一个数小于第二个数,CF=1;反之,CF=0

(6)

IF

如果允许中断,IF=1;如果禁止中断,IF=0

6、答案略,见p36~38

7、参考答案:

设存储单元地址由左向右递增,每个字符以它的ASCII码形式存放存储单元中,则字符串‘Whattimeisit?

’在内存中的存储状况如下(以十六进制表示):

576861742074696D652069732069743F

8、参考答案:

a)DW1234H

b)DWA122H

c)DWB100H

在内存中的分布为(设存储单元地址由左向右递增,存储单元的阿内容以十六进制表示):

341222A100B1

9、参考答案:

题号

段起始地址

段结束地址

a)1000H

10000H

1FFFFH

b)1234H

12340H

2233FH

c)2300H

23000H

32FFFH

d)E000H

E0000H

EFFFFH

e)AB00H

AB000H

BAFFFH

注意:

①段起始地址和段结束地址均为20位的物理地址;

②段起始的偏移量为0000H,所以段起始地址为段基地址×16+偏移地址;

③由于每个段的最大容量为64K字节,段结束的偏移量为FFFFH,所以段结束地址为段基地址×16+偏移地址=段基地址×16+FFFFH

10、参考答案:

a)CS:

IP=1000H:

2000H下一条指令的存储器地址为(CS)×16+(IP)=12000H

b)CS:

IP=2000H:

1000H下一条指令的存储器地址为(CS)×16+(IP)=21000H

c)CS:

IP=1A00H:

B000H下一条指令的存储器地址为(CS)×16+(IP)=25000H

d)CS:

IP=3456H:

AB09H下一条指令的存储器地址为(CS)×16+(IP)=3F069H

11、参考答案:

a)DS=1000H,DI=2000H存储单元地址为:

(DS)×16+(DI)=12000H

b)SS=2300H,BP=3200H存储单元地址为:

(SS)×16+(BP)=26200H

c)DS=A000H,BX=1000H存储单元地址为:

(DS)×16+(BX)=A1000H

d)SS=2900H,SP=3A00H存储单元地址为:

(SS)×16+(SP)=2CA00H

12、参考答案:

①堆栈段在存储器中的物理地址(即堆栈段的起始地址)为:

(SS)×16+0000H=35000H

②入栈10个字节后,SP=0800H-10=07F6H

③再出栈6个字节,SP=07F6H+6=07FCH

13、参考答案:

示意图如左图所示,如果要读取这两个字,则需要对存储器进行三次操作。

①由于字2A8CH存放在偶地址开始的单元,所以只进行一次存储器操作就可以读取该字;

②由于字1EE5H存放在奇地址开始的单元,所以需要进行两次存储器操作才可以读取该字。

 

14、参考答案:

段起始地址

段结束地址

DS

10E40H

20E3FH

ES

10F40H

20F3FH

SS

21F00H

31EFFH

CS

31FF0H

41FEFH

可见,①DS和ES有部分的重叠,重叠区域大小为:

20E3FH-10F40H+1=FF00H字节;②ES和SS之间有空隙,空隙的大小为:

21F00H-20F3FH+1=0FC2H字节;③SS和CS之间有空隙,空隙的大小为:

31FF0H-31EFFH+1=00F2H字节

④OFSFZFCF均为0

17、参考答案:

IF标志位控制INTR引脚

20、答案略,见p49

21、答案略

第三章(p121~p124)

1、参考答案:

题号

源操作数寻址方式

目的操作数寻址方式

(1)

立即寻址

寄存器寻址

(2)

立即寻址

寄存器寻址

(3)

寄存器间接寻址

寄存器寻址

(4)

寄存器寻址

寄存器相对寻址

(5)

寄存器寻址

寄存器相对寻址

(6)

立即寻址

基址变址寻址

(7)

基址变址寻址

寄存器寻址

(8)

寄存器寻址

相对基址变址寻址

(9)

直接寻址*

寄存器寻址

(10)

寄存器寻址

寄存器寻址

*对于IN指令,如果是长格式,源操作数的数字不是立即数,而是端口地址,所以源操作数的寻址方式是直接寻址;如果是短格式,即端口地址存放在DX寄存器中,则源操作数的寻址方式为寄存器间接寻址,如:

INAX,DX

对于OUT指令,如果是长格式,目的操作数的数字不是立即数,而是端口地址,所以目的操作数的寻址方式是直接寻址,如OUT20H,AL;如果是短格式,即端口地址存放在DX寄存器中,则目的操作数的寻址方式为寄存器间接寻址,如:

OUTDX,AX

2、参考答案:

题号

源操作数寻址方式

源操作数有效地址

源操作数物理地址

指令执行后AX中的内容

(1)

立即寻址

-------

------

0200H

(2)

直接寻址

0200H

10200H

2A10H

(3)

寄存器寻址

-------

------

0200H

(4)

寄存器相对寻址

0203H

10203H

5946H

(5)

基址变址寻址

0202H

10202H

463CH

(6)

相对基址变址寻址

0204H

10204H

6B59H

注:

10200H~10205H单元存储状况如左图所示

 

3、参考答案:

题号

源操作数寻址方式

源操作数有效地址

源操作数物理地址

(1)

直接寻址

0100H

(DS)×16+EA=10100H

(2)

直接寻址

0030H

(DS)×16+EA=10030H

(3)

寄存器间接寻址

0100H

(DS)×16+EA=10100H

(4)

寄存器间接寻址

0100H

(ES)×16+EA=20100H

(5)

寄存器间接寻址

00A0H

(DS)×16+EA=100A0H

(6)

寄存器相对寻址

0110H

(DS)×16+EA=10110H

(7)

寄存器间接寻址

0200H

(SS)×16+EA=35200H

(8)

相对基址变址寻址

02D0H

(SS)×16+EA=352D0H

(9)

相对基址变址寻址

0154H

(DS)×16+EA=10154H

(10)

基址变址寻址

0224H

(SS)×16+EA=35224H

4、答案略

5、参考答案:

(1)该数据段的存储状况如下表所示:

A

B

C

D

E

00

01

02

03

04

05

06

07

08

09

0A

0B

0C

0D

0E

0F

10

11

12

13

14

15

16

24

10

43

4F

4D

50

55

54

45

52

34

12

FF

00

00

00

00

00

00

9A

45

00

12

注:

①表格的第一行为变量名称;②第三行的每个小格子代表一个存储单元;③第二行为存储单元的偏移地址以十六进制表示,从中可以看出各变量在数据段中的偏移地址,A的偏移地址为0000H,B的偏移地址为0002H,C的偏移地址为000AH,D的偏移地址为000EH,E的偏移地址为0013H;④第三行为存储单元的具体内容,以十六进制表示。

(2)写出各条指令执行后的结果

指令

执行后的结果

MOVAL,A

AL=24H

MOVDX,C

DX=1234H

XCHGDL,A

DL=24H,A变量的第一个单元的内容变为34H

MOVBX,OFFSETB

BX=0002H

MOVCX,3[BX]

CX=5550H

LEABX,D

BX=000EH

LEASI,E

SI=0013H

LEADI,E

DI=0013H

6、参考答案:

题号

错误原因

(1)

两操作数的类型不一致

(2)

立即数不能做目的操作数

(3)

立即数不能直接传送给段寄存器

(4)

两操作数不能同时为存储器操作数

(5)

IP寄存器的内容不能由用户更改,而由系统自动修改

(6)

正确

(7)

两基址寄存器不能放在一起使用

(8)

正确

(9)

两变址寄存器不能放在一起使用

(10)

不能取立即数的偏移地址,OFFSET操作符使用不当

(11)

存储单元的偏移地址应为字类型,不能放到字节寄存器中

(12)

XCHG指令的操作数不能为立即数

(13)

IN指令从端口读取的数据只能放在累加器AL或AX中

(14)

OUT指令的源操作数应为累加器,目的操作数应为端口地址,且如果端口地址超过0FFH(255),端口地址应放在DX寄存器中

7、程序片段如下:

LEABX,TABLE

MOVAL,57

MOVAH,0

MOVDL,10

DIVDL

PUSHAX

XLAT

MOVCH,AL

POPAX

MOVAL,AH

XLAT

MOVCL,AL

MOVBX,CX

8、解答:

SP的变化情况

指令执行后SP内容

PUSHAX

SP←SP-2

00FEH

PUSHBX

SP←SP-2

00FCH

POPBX

SP←SP+2

00FEH

POPAX

SP←SP+2

0100H

9、已知AX=1234H,BX=3456H,CX=5678H,DX=789AH,CF=1则单独执行下列各条指令后,各相关寄存器内容是什么?

题号

指令执行后相关寄存器内容

(1)

AL=0ACH

(2)

BX=8ACFH

(3)

AX=EB24H

(4)

BX=3455H

(5)

CX=0A988H

(6)

BL=57H

(7)

乘积为双字存放在DX:

AX中:

DX=03B8HAX=0AD78H

(8)

商存放在AL中,余数存放在AH中:

AL=26HAH=64H

10、参考程序片段如下:

;定义数据段

DATASEGMENT

ARRAYDB60,65,72,76,77,66,79

NEWDB7DUP(0)

SUMDB0

AVERAGEDB0

DATAENDS

;程序代码如下

……

MOVCX,7

MOVSUM,0

MOVSI,0

NEXT:

MOVAL,ARRAY[SI]

ADDSUM,AL;总分存入SUM中

ADDAL,5

MOVNEW[SI],AL

INCSI

LOOPNEXT

MOVAL,SUM

MOVAH,0

MOVCL,7

DIVCL

MOVAVERAGE,AL;平均分存入AVERAGE中

11、参考答案:

题号

结果

CF

(1)

AH=04H

0

(2)

BL=36H

0

(3)

AX=0DAF7H

0

(4)

CX=0FFF4H

0

(5)

相关寄存器内容没有改变

0

(6)

相关寄存器内容没有改变

0

(7)

DX=0186H

0

(8)

AL=04H

0

(9)

BH=0F0H

0

(10)

AX=4A10H

0

(11)

BX=1E6CH

0

(12)

DX=4186H

0

12、参考答案:

(1)程序片段如下:

LEASI,STRING

LEADI,GET_CHAR

MOVCX,26

CLD

REPMOVSB

(2)程序片段如下:

先定义一个附加段,用来存放’Thecomputer’

EXTRASEGMENT

S2DB‘Thecomputer’

EXTRAENDS

LEASI,STRING

LEADI,S2

MOVCX,12

CLD

REPZCMPSB

JZNEXT;若比较的两个字符串相同,则跳到NEXT执行

MOVAL,0;若比较的两个字符串不相同

SUBCL,12

NEGCL

MOVBL,CL;比较的次数存入BL中

RET

NEXT:

MOVAL,1

MOVBL,12

RET

(3)程序片段如下:

LEADI,STRING;被查找的字符串STRING作为目的串

MOVAL,’&’

MOVCX,26

CLD

REPNZSCASB

JNZEXIT;如果没有找到,直接退出

DECDI;找到’&’字符的位置

MOVBYTEPTRES:

[DI],20H;用空格字符替换

EXIT:

RET

(4)完整的程序如下*:

;这里的DATA既作为数据段,又作为附加段,即数据段和附加段公用一个段

DATASEGMENT

STRINGDB‘ThePersonalComputer&TV’

COUNTEQU$-STRING

CAPSDBCOUNTDUP(0)

CHARTDBCOUNTDUP(0)

DATAENDS

CODESEGMENT

ASSUMEDS:

DATA,ES:

DATA,CS:

CODE

MAINPROCFAR

PUSHDS

XORAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVES,AX

;把字符串中大写字母传送到CAPS开始的单元中

LEASI,STRING

LEADI,CAPS

MOVCX,COUNT

CLD

AGAIN1:

LODSB

CMPAL,41

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2