自动化教材computer微机部分.docx
- 文档编号:5186100
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:66
- 大小:597.56KB
自动化教材computer微机部分.docx
《自动化教材computer微机部分.docx》由会员分享,可在线阅读,更多相关《自动化教材computer微机部分.docx(66页珍藏版)》请在冰豆网上搜索。
自动化教材computer微机部分
第2章微型计算机的基本知识
第一节数制与码制
数制是人们利用符号来计数的科学方法。
数制可以有很多种,但在计算机的设计与使用上常使用的则为十进制、二进制、八进制和十六进制。
一、数制的基与权
数制所使用的数码的个数称为基,数制每一位所具有的值称为权。
十进制(DecimalSystem)十进制的基为“十”,即它所使用的数码为0、1、2,3,4,5,6,7,8,9,共有十个。
十进制各位的权是以10为底的幂,如下面这个数:
4
6
9
7
2
8
105104103102101100
十万万千百十个
其各位的权为个,十,百、千、万,十万,即以十为底的0幂、1幂,2幂,3幂……等。
故有时为了说话简便而顺次称其各位为0权位,1权位、2权位、3权位等。
二进制(BinarySystem)二进制的基为“二”,即其使用的数码为0,l,共二个。
二进制各位的权是以2。
为底的幂,如下面这个数
1
1
0
1
0
0
252423222120
32168421
其各位的权为1,2,4、8……,即以二为底的0次幂、1次幕、2次幂、3次幂……等。
八进制(OctaveSystem)八进制的基为“八”,即其数码共有八个:
0,1,2,3,4、5,6,7。
八进制的权为以8为底的幂,有时也顺次称其各位为0权位,1权位、2权位等。
十六进制(HexadecimalSystem)十六进制的基为“十六”,即其数码共有十六个,0、1、2,3,4,5,6,7,8,9,A,B、C、D,E,F。
十六进制的权为以16为底的幂,有时也称其各位的权为0权,1权、2权等。
在微型计算机中这些数制都是常用到的,但在本书后面的内容中,二进制和十六进制更为常用,希初学者注意。
二、为什么要用二进制
电路通常只有两种稳态:
导通与阻塞,饱和与截止,高电位与低电位等。
具有两个稳态的电路称为二值电路。
因此,用二值电路来计数时,只能代表两个数码:
0和1。
如以1代表高电位,则0代表低电位,所以,采用二进制,就可以利用电路进行计数工作.而用电路来组成计算机,则有运算迅速、电路简便,成本低廉等优点。
三、为什么要用十六进制
用十六进制既可简化书写,又便于记忆。
如下列一些等值的数:
1000
(2)=8(16),(即八)
11111001
(2)=F9(16),(即二百四十九)
可以看出用十六进制,可以写得短些,也更易于记忆。
尤其是,当二进制位数很多时,更可看到十六进制的优点了。
如:
1010110110000101
(2)=AD85(16)
显然,记AD85(16),要比记十六位的二进制数容易得多了。
上面书写的意义;在数字后面加上
(2)和(16)是指二进制和十六进制.同理如写(8)和(10)则表示为八进制和十进制。
也有用字母符号来表示这些数制的,
B——二进制,H——十六进制,D——十进制,O——八进制。
通常如上下文可以理解所写的数是什么进位时,就不必附加数制符号.
四、数制的转换方法
由于我们习惯用十进制计数,在研究问题或讨论解题的过程时,总是用十进来考虑和书写的。
当考虑成熟后,要把问题变成计算机能够“看得懂”的形式时,就得把问题中的所有十进制数转换成二进制代码。
这就需要用到“十进制数转换成二进制数的方法”,在计算机运算完毕得到二进制数的结果时,又需要用到“二进制数转换为十进制数的方法”,才能把运算结果用十进制形式显示出来。
(一)、二进制数转换成十进制数的方法
这可以由二进制数各位的权乘以各位的数(0或1)再加起来就得到十进制数.
[例]把二进制数1011100011B转换成十进制数为
110111011B=1x28+1x27+0x26+1x25+1x24+1x23+0x22+1x21+1x20=443
此外,还有十进制与十六进制互相转换其方法和上述的差不多,都可以从数制的定义中找到转换的方法。
(二)、十进制数转换成二进制数的方法
一般可用下列方法来求一个十进制数的二进制代码:
用2除该十进制数可得商数及余数,则此余数为二进制代码的最小有效位(LSB)之值。
再用2除该商数,又可得商数和余数,则此余数为LSB左邻的二进制数代码。
用同样的方法继续用2除下去,就可得到该十进制数的二进制代码。
[例]求26的二进制代码。
其过程如下:
这样把十进制数26转换成的二进制数为11010B
(三)、十六进制数转换成十进制数
把一个十六进制数按权数(16i)展开,然后求和,即为十进制数;
[例]把十六进制数EA71H转换成十进制数的计算如下:
EA71H=14×163+10×162+7×161+1×160=3840+48+13=60017D
(四)、十进制数转换成十六进制数
与把十进制数转换成二进制数的方法类似,只是对要转换的十进制数,用十六进制的基数16连除取余数,最先得到的余数是十六进制数的最低位,最后得到的余数是最高位。
[例]把十进制数7382D转换成十六进制数,其计算方法为:
这样,把十进制数7382D转换为十六进制数为1CD6H。
(五)、十六进制数转换成二进制数
这种转换是很简单的,只要把每一位十六进制数用相应的4位二进制数表示即可。
[例]把十六进制数1CD6H可转换成二进制数为:
转换结果:
1CD6H=1110011010110B
(六)、二进制数转换成十六进制数
若把一个二进制数转换成十六进制数,可把要转换的二进制数从右向左(从低位到高位)每4位分一组,每组用相应的十六进制数表示即可。
最后一组如果不够4位二进制数,其高位用零补足。
[例]把10101101011B转换成十六进制数:
结果:
10101101011B=56BH
二进制数与十六进制数之间的转换,在计算机中的应用是很普遍的。
计算机存贮、运算和处理的数都是二进制数。
如果在编程时,每条指令都用冗长的二进制来表示,不仅很不方便,而且容易出错。
用十六进制数表示就简单多了。
在计算机中,把一个8位二进制数叫一个字节,一个字节正好可用2位十六进制数来表示,2个字节可用4位十六进制数来表示,这既方便又不会出错。
另外,把一个较大的十进制数转换成二进制数,用连除取余的办法是很麻烦的。
如果先把十进数转换成十六进制数,在把十六进制数转换成而今指数,其计算过程就会简单一些。
(七)、八进制数转换成二进制数
二进制数与八进制数之间的转换也是很方便的。
因为八进制数的基数是8,与二进制基
数2之间存在8=23的关系。
因此一位八进制数相当于3位二进制数。
要把一个八进制数转换成二进制数,只要把八进制数中的每一位用3位二进制数表示
即可。
[例]有一八进制数5726Q,可转换为:
转换结果:
5726Q=101111010110B。
(八)、二进制数转换成八进制数
把二进制数从右向左(从低位到高位),每3位分一组,每组用相应的八进制数来表示即可。
如果高位的一组不够3位二进制数,则用零在高位上补足。
[例]有一二进制数10111110B,要转换成八进制数为:
转换结果:
10111110B=476Q。
五、数字电子计算机中常用编码
计算机中要用二进制代码来表示各种字符和符号。
另外,有时也希望计算机能用二进制的方式直接进行十进制的运算,这时就要用BCD码来表示十进制数。
这一节介绍有关这些编码的基本知识。
(一)、BCD码及十进制调整
BCD码就是用二进制代码表示的十进制数,有时也称为BCD数。
它是采用二进制代码0000—1001来代表10个十进制数0—9,而1010—1111不用,在BCD码中,该数字范围作为非法码来处理。
准确地说,这种代码应该称为8421BCD码。
但一般也就直接称为BCD码了。
若是两位十进制数则要用两个相应的BCD码的组合来表示。
如十进制数39写成BCD数为00111001。
十进制数的位数越多,所用的BCD码也越多。
已知一个BCD码,也会很容易写出所对应的十进制的数值。
例如011101000010其对应十进制数字为742。
但BCD码与二进制之间是不能直接转换,因此,对任何进制的数字,都必须先转换成十进制数字,然后才能写出BCD码。
例如,有一二进制数字为10100110B,要把它写成BCD码,先要把这个二进制数转换成十进数,即10100110B=166D,其BCD码为000101100110。
把十六进制数字C5H写成BCD码,先要把C5H转换成十进制数,即C5H=197D,在转化成BCD码为000110010111。
把八进制数字672Q写成BCD码,先把736Q转换成十进制数为442,故BCD码为010001000010。
前面介绍了各种进制数之间的转换,及十进制数字的BCD码。
现以4位二进制数为例,把它所对应的十进制数、八进制数、十六进制数及其BCD码均列人表1.1中,以便能熟记这些常用的转换。
二进制
十进制
八进制
十六进制
BCD码
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
00010000
00010001
00010010
00010011
00010100
00010101
表1.1
(二)、ASCII码及国内通用字符编码
计算机系统中除了数字0—9之外,还经常用到其他字符,如字母a—z,各种标点符号,及其他的控制符号,如空格、换行等等。
ASCII码本是美国的一种标准,全称为“美国信息交换标准代码”,即AmericanStandardCodeforInformationInterchange,简称为ASCII码。
这个标准制订于1963年。
后来,国际标准化组织ISO和国际电报电话咨询委员会CCITT以它为基础制订了相应的国际标准。
现在微型计算机的字符编码都采用ASCII码。
这种编码在数据传输中也有广泛的应用。
ASCII码是一种7位代码,共有128个字符和控制符。
一般使用时仍然用一个字节表式,最高位用0,或者最高位可用于奇偶校验。
也可以将最高位固定为1,构成扩展的ASCII码,来表示一些图形符号。
但扩展的ASCII码还没有完全形成统一的标准。
128个ASCII代码中,前33个和最后一个代码都是控制字符,共34个。
其余94个是各种字符和符号。
ASCII码表见表1.2。
在表中最高一位未列出,一般表示时都以0来代替而不考虑其奇偶校验位的功能。
表1.2ASCII码字符表
b7b6b5
b4b3b2b1
000
001
010
011
100
101
110
111
0000
NUL
DLE
SP
0
@
P
p
0001
SOH
DC1
!
1
A
Q
a
q
0010
STX
DC2
“
2
B
R
b
r
0011
ETX
DC3
#
3
C
S
c
s
0100
EOT
DC4
$
4
D
T
d
t
0101
ENQ
ANK
%
5
E
U
e
u
0110
ACK
SYN
&
6
F
V
f
v
0111
BEL
ETB
‘
7
G
W
g
w
1000
BS
CAN
(
8
H
X
h
x
1001
HT
EM
)
9
I
Y
i
y
1010
LF
SUB
*
:
J
Z
j
z
1011
VT
FSC
+
;
K
[
k
{
1100
FF
FS
<
L
\
l
|
1101
CR
GS
-
=
M
]
m
}
1110
SO
RS
.
>
N
^
n
~
1111
SI
US
/
?
O
-
o
DEL
如数字0—9的ASCII码为00110000—00111001,可表示为十六进制数30H—39H。
字母A—Z的ASCII码用十六进制数表示为41H—5AH。
字母a—z的ASCII码用十六进制数表示61H—7AH等等。
常用的控制符如回车键的ASCII码是0DH(表中用CR表示),换行键的ASCII码是0AH(表中用LF表示)。
第二节Intel8085A微处理器
Intel8085A微处理器是一种适用范围很广的8位微处理机。
它是在8080微处理机的基础上开发的,并大大提高了它的集成度和性能,它共有40线双列直插式片脚,74条指令。
一、Intel8085A微处理器内部结构
图2.1给出了Intel8085A的内部结构图。
图2.1
8085A包含有专用和通用两种寄存器的寄存器阵列。
(一)一个16位程序计数器(PC)
16位程序计数器从65536个可能的存贮单元中的任何一个取指令。
当8085A的RESETIN引线为逻辑0时,程序计数器复位到0;当RESETIN引线返回到逻辑1时,控制单元把PC的内容传送到地址锁存器,提供被执行的第一条指令的地址。
因此,8085A中的程序是从存贮单元0中的指令开始执行的。
8085A指令的长度是1到3个字节。
第一字节总是装有操作码的,在取指令期间,第一个字节用外部数据总线经由数据总线缓冲器锁存的方法从存贮器传送到指令寄存器。
PC是自动加l的,因此,若指令只含有1个字节,PC就装有下一条指令的地址;若指令由2个或3个字节组成,则PC装的是现行指令的下一个字节的地址。
在多字节指令的情况下,定时和控制部分提供读取附加字节的附加操作,它使用指令译码器的输出和外部控制信号来产生状态和循环定时信号以及外部设备的控制信号。
在指令的所有字节均被取到微处理机之后,就执行指令。
执行时可能需要在微处理机与存贮器或I/O设备之间传送数据。
对于这些传送,来自被取出指令的或来自作为数据指示器的寄存器对HL、BC或DE的存贮器或I/O设备的地址被放置到地址锁存器中。
(二)一个16位堆栈指示器(SP)
它是16位的能自动加l、减1的计数器。
在微型计算机中,总要在存贮器的读写存贮器(RAM)中开辟一个区域叫堆栈。
在堆栈中的每个存储单元都有其固定的地址,该地址由堆栈指针SP给出,并SP始终指向栈顶,如图2.2所示,比如堆栈各存贮单元的地址是从3000H~3FFFH。
向堆栈中送数据,我们叫做把数据推入堆栈,要想把一个数据推入堆栈,堆栈指针SP所给的地址必须自动减1;然后再推入数据。
如该堆栈只存一个数00110111,堆栈指针所给地址为3FFFH就是栈顶,只有堆栈指针SP自动减1其地址为3FFEH时,才能推入一个新的数据。
一个新数据推入后,地址为3FFEH的存贮单元(SP所指单元)就成为栈顶。
从堆栈中取数,我们叫弹出堆栈,由于SP始终指向栈顶,故每弹出一个数据后,堆栈指针SP要自动加l可见,堆栈的工作过程是,先推入的后出,SP自动减1推入,弹出后SP自动加l。
(三)六个排列成对的8位通用寄存器BC、DE、HL
内部通用寄存器有六个B、C、D、E、H、L每个寄存器都是8位的,它们都可分别寄存一个字节,即一个8位二进制数。
它们也可以成对使用,称为寄存器对,寄存器对不是随便两个寄存器就能组成一个寄存器对;而是已规定好只能由BC、DE、HL分别组成三个寄存器对,每个寄存器对可寄存16位二进制数,也可寄存16位地址码。
因此,一个寄存器对可寄存两个字节。
(四)算术逻辑单元ALU
8085A的算术逻辑单元ALU是用来完成数据的算术和逻辑运算的。
这些操作的操作数被存放在与ALU相联系的两个寄存器中,即8位累加器A和8位暂时寄存器。
累加器可从内部总线取数并且也能将数据传送到内部总线。
因此,对于数据来说,累加器就起到目的寄存器和源寄存器两者的作用。
在二进制运算中,暂时寄存器暂时存放操作数中的一个操作数。
例如,若将寄存器B的内容加上累加器A的内容,并将结果保留在累加器A中,则当进行算术运算时,暂时寄存器中就保存着寄存器B的内容的复制品。
与ALU相联系的是5个位标志寄存器,它指明与算术或逻辑运算有关的状态。
各个标志分别表示零、高位的进位、符号、奇偶性和辅助进位。
8085A内部数据总线是8位的,且在各个内部寄存器之间或多路地址/数据总线缓冲器到外部设备之间传送指令和数据。
双向三态地址/数据总线缓冲器把微处理机的内部数据总线与外部系统地址/数据总线隔离开来。
在输出方式上,内部总线上的信息装入驱动地址/数据总线输出缓冲器的8位数据锁存器内。
在输入或者非传输操作期间,输出缓冲器是浮动的。
在输入状态期间,来自外部数据总线的数据被其传送到内部数据总线。
二、Intel8085A微处理器片脚及功能
8085ACPU采用双列直插式封装,共有40个片脚。
图2.3给出了8085ACPU引线片脚图,现说明各片脚的功能。
AD0~AD7(地址/数据总线)。
三态输入输出,用来分时传送低8位地址和数据信息。
A8~A15(地址总线)。
三态输出,提供高8位地址。
CPU与存贮器及外部设备(输入、输出设备,简称I/O设备,或I/O接口)之间进行数据传输,是用三组总线把它们联接在一起的,其中地址总线是16根,应占CPU芯片16个片脚,数据总线是8根,要占CPU芯片8个片脚,一次传输8位二进制数。
除地址总线和数据总线所占的片脚外,剩下的片脚用于接控制总线,这样安排,控制总线的数量比较少。
为了增加CPU的控制功能,8085ACPU把低8位地址A0~A7总线和数据总线D0~D7合用8根总线AD0~AD7。
分时传送地址和数据。
在一条指令的执行过程中的每个机器周期的第一个时钟周期内,AD0~AD7作为8位地址总线用,载有存贮器的低8位地址或I/O接口的地址,并送入锁存器。
而在以后的时钟周期内,把该8位线腾出来,作为数据总线用。
ALE(地址锁存允许线)。
输出,在机器周期第一个时钟周期内,ALE为1,打开地址锁存器的三态门,允许由AD0~AD7总线传送的地址信息A0~A7送入锁存器并输出,与A8~A15合在一起,构成16位地址。
在其它时钟周期内,ALE为0,使三态门处于高阻抗状态,AD0~AD7不能送入锁存器而是用于数据总线。
AD0~AD7信号传送示意图如图2.4
IO/M(存贮器与外部设备选择线)。
三态输出,此信号规定CPU是访问存贮器还是访问I/O接口。
其中IO/M=0,CPU是访问存贮器;IO/M=1,CPU是访问I/O接口。
S0和S1(总线状态指示线)。
输出,S0和S1这两个信号进一步规定了系统总线的状态。
其具体规定见表2.1。
表2.1
IO/MS1S0
总线状态
高阻抗00
001
010
101
110
011
111
停机
把数据写入存贮器
从存贮器读数据
把数据写入外部设备
从外部设备读取数据
取指令操作码
响应中断
RD(读信号线)。
三态输出,低电平有效。
当RD=0时,把选中的存贮器或I/O接口的数据放在数据总线AD0~AD7,由CPU读入。
WR(写信号线)。
三态输出,低电平有效,当WR=0时,CPU把输出的数据放到数据总线AD0~AD7,写入选中的存贮器或I/O接口。
SID(串行输入数据线)。
输入,CPU通过这个片脚能以串行方式输入数据,每当8085ACPU执行RIM指令时,SID上的数据就送入累加器A的D7位,每执行一次RIM指令就输入一位信息。
SOD(串行输出数据线)。
输出,通过这个片脚,CPU能以串行方式输出数据,当执行SIM指令时,就把累加器A的D7位的信息通过SOD这个片脚送到I/O接口。
每执行一次指令,就输出一位信息。
CPU输入输出数据有两种方式:
一是并行数据传输,CPU与存贮器和I/O接口通过数据总线一次传输8位二进制数;二是CPU与I/O接口之间可并行传输数据,也可以串行传输数据,也就是CPU可把一组数据一位一位的送至I/O接口,或从I/O接口一位一位的接收数据,这种数据传送方式,对于多台微型计算机之间的通讯是方便的,特别是当微型计算之间的距离较远时,其数据总线不用8根,只用一根就够了。
同时,这种数据传输方式也便于快速的CPU与慢速的I/O接口之间的通讯。
READY(准备就绪)。
输入,高电平有效,当READY=0时表明CPU所要访问的存贮器或I/O接口读出或写入数据操作还没有准备好。
CPU要继续等待。
直到READY=1。
说明存贮器或I/O接口已准备好接收或发送的数据,CPU方可进行读、写操作。
RESETIN(复位输入)。
输入,低电平有效。
CPU在接收到RESETIN=0的复位信号时,使程序计数器PC清零,中断触发器和HLDA触发器复位,指令寄存器置空操作代码。
同时,地址、数据和控制总线均处于高阻抗状态。
但不影响CPU内部其它寄存器的状态。
RESETOUT(复位输出)。
输出,低电平有效,该信号表示CPU已经复位,它也可用作系统总复位信号。
8085ACPU的中断功能是比较强的,它可接收五种中断请求:
TRAP、RST5.5、RST6.5、RST7.5和INTR。
CPU接收到某种中断请求信号后,要判断一下当前所运行程序的重要程度,若当前运行的程序可以暂停,则CPU将立即响应中断,转而去执行中断服务子程序。
如果当前运行的程序非常重要,如在执行对主机停油的程序,CPU将把这段程序运行告一段落去响应中断请求。
这五种中断的优先级是不同的,也就是CPU同时接收到五种中断请求时,它是由优先权最高到优先权最低的中断请求依次响应。
TRAP(不可屏蔽中断请求)。
这是一个不可屏蔽的中断,它不受关中断指令DI的限制,即使有禁止中断指令DI,当CPU接收到TRAP这个中断请求时也要响应,并自动转至入口为0024H的子程序去运行。
RST5.5、RST6.5和RST7.5是三个可屏蔽中断,它们不仅受允许中断指令EI和禁止指令DI的影响(有DI指令时,CPU对这三个中断请求是不予理采的),而且通过设置中断屏蔽寄存器的D0、D1和D2位来分别屏蔽RST5.5、RST6.5和RST7.5的中断请求,置1允许中断,置0禁止中断,比如,CPU可以响应中断,但同时来RST5.5和RST7.5两个中断请求信号,CPU要执行哪个中断服务子程序呢?
根据中断的优先级,RST7.5高于RST5.5,故CPU先将中断屏蔽寄存器的D0位置0,D2位置1,即先屏蔽RST5.5,而执行RST7.5的中断请求,当RST7.5中断请求的子程序运行结束,再把D0位置1,D2位置0,再去执行RST5.5中断请求的中断服务子程序。
RST7.5、RST6.5和RST5.5的中断服务子程序入口地址分别为003CH、0034H和002CH。
INTR(中断请求)输入。
当I/O接口向CPU发出中断请求信号INTR时,若CPU没有关中断指令DI,且没有其它种类的中断请求,则CPU就会响应这个中断,这
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自动化 教材 computer 微机 部分