第一章 基础知识本章内容
§ 1.1微型计算机系统组成
§ 1.2 微型计算机主机结构
§ 1.3 计算机中数的表示方法
§ 1.4 计算机中常见的编码
§ 1.5 计算机中的运算电路及补码运算硬件计算机外围设备(输入 /出设备和过程控制 I/O通道)
电源软件系统软件(操作系统、监控程序等)
应用软件
§ 1.1微型计算机系统组成
§ 1.2微型计算机主机结构主机
CPU
内存(主存)
输入 /出接口总线地址译码电路主机系统结构图总线结构,系统中各部件,挂,在总线上主机结构突出特点是模块化结构
CPU
地址译码电路 I/O 设备
RAM ROM
地址信息片选信号
I/O 接口
DB
AB
CB
1.CPU(中央处理单元)
MPU(微处理器 ) 嵌入系统中与其他电路及芯片组合称为 CPU
计 算机的核心部件,主要由运算器和控制器构成
运算器( ALU)主要负责算术运算和逻辑运算
控制器由指令寄存器、指令译码器和控制电路组成并按指令的要求对微机各部件发出相应的信息。
2.内存储器(主存)
例如 01001101
用于“记忆”信息的存储元件,均采用集成度高,容量大,体积小,功耗低的半导体存储器芯片。
字节( Byte) 基本单位,规定 8位 二进制数称为一个 字节
CPU执行访问内存的指令时,按指定的单元地址对相应存储单元进行,读、写,操作 。
一个字节数据空间称为一个存储单元,其中每一位称为 1Bit。
计算机的存储器是由许多存储单元集合而成,
每一个存储单元唯一的对应一个单元地址,也称为存储器的物理地址,计算机中的地址一般都用十六进制 数表示,如 30H。
存储单元读写取数存数存储器容量( s) =存储单元数( p) × 数据位数( i)
1024B=1KB 1024KB=1MB
1024MB=1GB 1024GB=1TB
字长,一个基本信息单位所占用的最大二进制位数,称为字长。
字,计算机一条指令所能处理的一个基本信息单位,称为一个 字 。
例如:一个数据( 25,35.67,-0.0038…… ;)一个字符( A,a,#,…… )等均称为一个字。
80386,80486,80586( pentium)为
32位机,2001年推出的 Itanium为 64位机。
字长越长的计算机,其运算速度越快,数的表示范围越宽,数据的运算精度越高,机器的整体功能越强。
字长是计算机的主要性能指标之一!
51单片机字长为 8位,称为 8位机
8086/8088CPU字长为 16位,称为 16位机
3.总线
①数据总线 DB:双向传输数据信息。
传送信息的公共导线根据所传送信息的内容与作用不同数据总线 DB( Data Bus)
地址总线 AB( Address Bus)
控制总线 CB( Control Bus)
其宽度(根数)与 MPU提供的数据线的引脚数有关,表示计算机的 字长 。
地址信息
②控制总线 CB:传送各种控制信号和状态信 号对于每一根来说是单向传送的。
③ 地址总线 AB:
CPU执行指令时,用于单向传送地址信息。
操作数在数据存储器中的地址信息指令代码在程序存储器中的地址信息
AB的宽度决定了计算机系统的最大寻址能力最大寻址空间 =2N,其中 N为 AB的宽度。
51单片机 N=16
最大寻址空间 =216=65536B=64KB
8086/8088CPU N=20
最大寻址空间 220=1MB
例,
4,地址译码电路凡是“挂”在总线上部件都被系统分配一个地址域,CPU访问某部件时,由指令提供被访问部件的地址信息,该地址信息经地址译码电路译码后 唯一 的产生一个 选通信号 (也称 片选信号 ),
将被选中的部件,门,打开,使得数据得以传输。
5.接口接口是主机与外设连接的必然通路,是必经的“桥梁”。每个 接口 可包含若干个 端口,
每个端口对应一个端口地址,可由指令按地址访问端口。
接口功能:
①隔离主机与外设之间的数据
②向外设传输控制信号和接收外设的状态信号
③数据类型的转换
§ 1.3计算机中数的表示方法定点法浮点法定点机:用定点表示的计算机( 51单片机 )
定点法表示整数,浮点法表示实数浮点机:用浮点表示的计算机( PC机 )
1.定点表示(单片机)
纯整数形式纯小数形式用 8位二进制数表示一个纯整数,格式如下:
符号 0—正数,1—负数机器数 → 数据表示形式,数的正、负号被数码化机器数 是指计算机中 的数?
机器数并 不是 指计算机中的数 !
1 1 0 0 1 1 0 0[-76]=
D7 D6 D5 D4 D3 D2 D1 D0
D7=128 D6=64 D5=32 D4=16
D3=8 D2=4 D1=2 D0=1
1 1 0 0 1 0 1 0[-74]=
1 0 1 0 1 1 0 1[-45]=
0 1 0 1 0 0 0 0[80]=
1 0 1 1 1 1 0 0[-60]=
练习课下练习
53 92 -87 -75
2.浮点表示(必须带小数点)
任意一个二进制数 N
N=S× 2P
S是数 N的尾数,P是数 N的阶码
Pf 阶码 P Sf 尾数 S
Pf为阶码的符号位,0-正,1-负
Sf为尾数的符号位,0-正,1-负机器数表示如下:
所谓浮点规格化是指 1/2≤|S|<1;即小数点后面的一位必须为 1,小数点前面一位为 0。
111.0101B=1.110101× 210B
=0.111010× 211B
当阶码 P取不同数值时,尾数小数点位置是可以变动的,因此称为浮点数。
二进制浮点规格化数例:若有二进制数 0.0011010B,规格化后的形式为 0.11010× 2–10B
注:规格化后尾数超出三位小数部分自动舍去,所以用浮点数表示有可能产生误差。
用 8位二进制数的格式将其表示为浮点数设若有 m位阶码,n为尾数,则数 N的表示范围为:
字长定后,阶码所占位数越长,则尾数越短,数的表示范围越宽,而数的精度越低。反之阶码越短,
则尾数越长,数的表示精度越高,但数的表示范围越窄。
0 0 1 1 0 1 0 1[5.35]=
0 1 0 1 1 1 0 0[-16.35]=
练习 求 5.35和 -16.35的浮点表示
5.35=101.0101B=0.1010101× 211B
-16.35=10010000.0110B=-0.100000110× 2101B
§ 1.4 计算机中常见的编码
1.ASCII码(字符编码)
ASCⅡ 码是美国标准信息交换码,有两种版本。
7位二进制数表示一个字符,早期用于电讯行业,后被移植入计算机,可表示 128个字符。
计算机编码,用规定好的二进制组合表示数据、
字符、汉字等信息。
96个图形字符
10个十进制数字
52 个英文字符
34 个其他字符
32个控制字符回车符、换行符、退格符设备控制符和信息分隔符等采用 8位二进制数表示一个字符的 ASCⅡ
码,最高位为扩展位,最高位若为 0,则为基本 ASCⅡ 码。最高位为 1,则为扩展的 ASCⅡ
码,一般用来表示键盘上不可显示的功能键编码。
从 ASCⅡ 码表中查到
A~ Z 的 ASCⅡ 编码是 41H~ 5AH;
a~z 的 ASCⅡ 编码是 61H~ 7AH;
0~9的 ASCⅡ 编码是 30H~ 39H。
用四位二进制数表示一位十进制数,因组成它的 4位二进制数码的权为 8,4,2,1而得名。
8421BCD编码表注,4位二进制数称为一位 8421BCD码字
2,8421BCD码 (十进制数的二进制编码)
BCD码与非 BCD码
0 0000B
1 0001B
2 0010B
3 0011B
4 0100B
5 0101B
6 0110B
7 0111B
8 1000B
9 1001B
A 1010B
B 1011B
C 1100B
D 1101B
E 1110B
F 1111B
非 BCD码冗余码非法码
BCD码注:在 0~ 9之间十进制数的
BCD码与十六进制是相同的,
10以后的称为非 BCD码。
① BCD码加法运算所谓 BCD加法就是按,逢十进位,的原则进行相加,其和也是一个 BCD数。但计算机只能进行 二进制 加法,在相邻 BCD码字 之间只能
,逢十六进位,,导致出现 非 BCD码 。因此需要对结果进行调整,做到,逢十进位,。
结果仍为 BCD码
9634+62=
[34]BCD =00110100B
+ [62]BCD =01100010B
10010110B
例例
89+95= 184
[89]BCD=10001001B
+ [95]BCD=10010101B
100011110B
01100110B+
110000100B
← 运算结果的低 4位出现非 BCD码高 4位出现进位,均应做加 6调整
← 结果仍为 BCD码进位 →
低位向高位产生进位,
高位出现非 BCD码
100010111B
均应作加 6调整进位 结果仍为 BCD码
117例 48+69=
[48]BCD =01001000B
+ [69]BCD =01101001B
10110001B
01100110B+
在 BCD加法过程中,进制不同导致出现非 BCD
码或某位向高位产生进位,使运算结果不正确。
在这种情况下均应作加 6调整,以 补 上多拿走的
6。 十进制调整在计算机中有专门的调整电路自动完成。
总 结
② BCD码减法运算
BCD码减法运算与加法运算同理,减法运算的调整原则:在运算过程中某位出现借位,相应位作减 6调整,减去多借的 6。也是有专门的指令来完成的。
例 58-25=
[58]BCD =01011000B
[25]BCD =00100101B-
00110011B 结果仍为 BCD码
33
00001101B
00000111B ← 结果仍为 BCD码例 35-28=
[35]BCD=00110101B
_ [28]BCD=00101000B ← 低四位向高四位借位
00000110B← 个位做减 6调整
← 运算结果的低 4位出现非 BCD码
7
_
§ 1.5 计算机中的运算电路及补码运算
1.计算机中的运算电路计算机中的运算都是在运算器中运行的,运算器是由加法器构成的,只会做二进制加法运算,二进制一位全加器电路如图所示:
FA
Si
Ai Bi
Ci+1 Ci
全加器真值表组成八位二进制数加法器电路如图所示八位机加减法运算电路 ★ ★
a0a1a2a3a4a5a6a7 为被加数 /被减数;
b0b1b2b3b4b5b6b7 为加数 /减数;
S0S1S2S3S4S5S6S7 为和或差 ;
C1C2C3C4C5C6C7C8 为加法运算中低位向高位的进位 ;
SUB为加减控制信号。
当执行减法指令时,SUB=1,图中各异或逻辑门均为反相逻辑门,
则 Si= ai-bi+ci = ai+ bi +ci,
并且 FA0连同 SUB的状态一起做加法运算。
当执行加法运算指令时,SUB=0,图中各异或逻辑门均为同相逻辑门,对加数没有任何影响则
Si=ai+bi+ci;
★
计算机作减法运算时,其运算过程是:一个数减去另一个数,等于加上另一个数的反码并加 1,这个运算过程称为补码运算结 论图中 OV是溢出标志位,运算结果有溢出时,
OV=1,否则 OV=0,溢出的原因是运算结果超出了计算机中数的表示范围。
图中 Cy是进位(或借位)的状态标志位,
做加法运算时若最高位( FA7) 有进位,则
Cy=1,否则 Cy=0; 做减法运算时若 FA7位无进位,说明不够减,有借位现象,则 Cy=1,
否则,Cy=0。
Cy=C8⊕ SUB OV=C7 ⊕ C8 ★
2.补码运算研究表明,计算机中的数一律用补码的形式表示的,两个数加法运算时,应将参加运算的数化成补码形式,相加后的结果仍为补码,对于有符号数来说,符号位无须单独处理,符号位可直接参加运算,不影响最终结果。
[X]补 +[Y]补 =[X+Y]补例 35+42=
[35]补 = 0 0 1 0 0 0 1 1
+ [42]补 = 0 0 1 0 1 0 1 0
0 0 1 0 0 1 1 0 1
Cy=0,OV=0,结果为 4DH,仍为补码形式。
若要显示运算结果,应对运算结果求真值。
真值就是将补码形式的运算结果用,+”,–”
号的形式来表示运算结果的实际数值。一般用十六进制或十进制表示。
+77
例 35- 42=
[35]补 = 0 0 1 0 0 0 1 1
+ [- 42]补 = 1 1 0 1 0 1 1 0
0 1 1 1 1 1 0 0 1
C8=0,Cy=1,说明不够减,运算结果为负
OV=0,说明没有溢出。若求真值,须对运算结果求补码。
-7
例 85+78=
[85]补 = 0 1 0 1 0 1 0 1
+ [78]补 = 0 1 0 0 1 1 1 0
0 1 0 1 0 0 0 1 1
Cy=0,OV=1,说明运算结果出现溢出现象,运算结果超出了计算机中对数的表示范围。
若将上述运算“看成”是有符号数的运算,运算结果的最高位可“看作”符号位,结果为负数,
由于 8位有符号数补码的表示范围为 –128~+127,
该运算结果显然超出了数的表示范围,OV=1产生了溢出现象,运算结果无意义,应做溢出提示。
85+78= 溢出若将上述运算,看成,是无符号数的运算,运算结果的最高位不再做符号位了,而是数值位(权为
128),8位无符号数补码的表示范围为 0~255,
尽管产生了溢出标志,但运算结果仍有意义,真值为 163。
85+78=163
计算机的补码运算可分为带符号数的补码运算和无符号数的补码运算,但计算机并不认识数的属性,运算器在进行加减运算时并不区分操作数是否带有符号,运算过程都是一样的。 当
SUB=0时,直接将两个数相加,当 SUB=1时,将减数求补(取反加 1),再进行运算。在运算的同时自动设置 CY和 OV,运算后若是无符号数,
通过判断 CY确定是否有进位,如果是带符号数,
则通过判断 OV确定是否溢出。
例 求下列 有 符号数的补码运算,并求真值
76+23=
[76]补 = 0 1 0 0 1 1 0 0
+ [23]补 = 0 0 0 1 0 1 1 1
0 1 1 0 0 0 1 1
Cy=0,OV=0
+99
76+69=
[76]补 = 0 1 0 0 1 1 0 0
+ [69]补 = 0 1 0 0 0 1 0 1
1 0 0 1 0 0 0 1
Cy=0,OV=1,有溢出结果无意义。
溢出
76-23=
[76]补 = 0 1 0 0 1 1 0 0
+ [-23]补 = 1 1 1 0 1 0 0 1
1 0 0 1 1 0 1 0 1
Cy=0,OV=0
+53
自动丢失例 求下列 无 符号数的补码运算,并求真值
76+69=
[76]补 = 0 1 0 0 1 1 0 0
+ [69]补 = 0 1 0 0 0 1 0 1
1 0 0 1 0 0 0 1
Cy=0,OV=1
145
35-69=
[35]补 = 0 0 1 0 0 0 1 1
+ [-69]补 = 1 0 1 1 1 0 1 1
1 1 0 1 1 1 1 0
Cy=1,OV=0
-34
§ 1.1微型计算机系统组成
§ 1.2 微型计算机主机结构
§ 1.3 计算机中数的表示方法
§ 1.4 计算机中常见的编码
§ 1.5 计算机中的运算电路及补码运算硬件计算机外围设备(输入 /出设备和过程控制 I/O通道)
电源软件系统软件(操作系统、监控程序等)
应用软件
§ 1.1微型计算机系统组成
§ 1.2微型计算机主机结构主机
CPU
内存(主存)
输入 /出接口总线地址译码电路主机系统结构图总线结构,系统中各部件,挂,在总线上主机结构突出特点是模块化结构
CPU
地址译码电路 I/O 设备
RAM ROM
地址信息片选信号
I/O 接口
DB
AB
CB
1.CPU(中央处理单元)
MPU(微处理器 ) 嵌入系统中与其他电路及芯片组合称为 CPU
计 算机的核心部件,主要由运算器和控制器构成
运算器( ALU)主要负责算术运算和逻辑运算
控制器由指令寄存器、指令译码器和控制电路组成并按指令的要求对微机各部件发出相应的信息。
2.内存储器(主存)
例如 01001101
用于“记忆”信息的存储元件,均采用集成度高,容量大,体积小,功耗低的半导体存储器芯片。
字节( Byte) 基本单位,规定 8位 二进制数称为一个 字节
CPU执行访问内存的指令时,按指定的单元地址对相应存储单元进行,读、写,操作 。
一个字节数据空间称为一个存储单元,其中每一位称为 1Bit。
计算机的存储器是由许多存储单元集合而成,
每一个存储单元唯一的对应一个单元地址,也称为存储器的物理地址,计算机中的地址一般都用十六进制 数表示,如 30H。
存储单元读写取数存数存储器容量( s) =存储单元数( p) × 数据位数( i)
1024B=1KB 1024KB=1MB
1024MB=1GB 1024GB=1TB
字长,一个基本信息单位所占用的最大二进制位数,称为字长。
字,计算机一条指令所能处理的一个基本信息单位,称为一个 字 。
例如:一个数据( 25,35.67,-0.0038…… ;)一个字符( A,a,#,…… )等均称为一个字。
80386,80486,80586( pentium)为
32位机,2001年推出的 Itanium为 64位机。
字长越长的计算机,其运算速度越快,数的表示范围越宽,数据的运算精度越高,机器的整体功能越强。
字长是计算机的主要性能指标之一!
51单片机字长为 8位,称为 8位机
8086/8088CPU字长为 16位,称为 16位机
3.总线
①数据总线 DB:双向传输数据信息。
传送信息的公共导线根据所传送信息的内容与作用不同数据总线 DB( Data Bus)
地址总线 AB( Address Bus)
控制总线 CB( Control Bus)
其宽度(根数)与 MPU提供的数据线的引脚数有关,表示计算机的 字长 。
地址信息
②控制总线 CB:传送各种控制信号和状态信 号对于每一根来说是单向传送的。
③ 地址总线 AB:
CPU执行指令时,用于单向传送地址信息。
操作数在数据存储器中的地址信息指令代码在程序存储器中的地址信息
AB的宽度决定了计算机系统的最大寻址能力最大寻址空间 =2N,其中 N为 AB的宽度。
51单片机 N=16
最大寻址空间 =216=65536B=64KB
8086/8088CPU N=20
最大寻址空间 220=1MB
例,
4,地址译码电路凡是“挂”在总线上部件都被系统分配一个地址域,CPU访问某部件时,由指令提供被访问部件的地址信息,该地址信息经地址译码电路译码后 唯一 的产生一个 选通信号 (也称 片选信号 ),
将被选中的部件,门,打开,使得数据得以传输。
5.接口接口是主机与外设连接的必然通路,是必经的“桥梁”。每个 接口 可包含若干个 端口,
每个端口对应一个端口地址,可由指令按地址访问端口。
接口功能:
①隔离主机与外设之间的数据
②向外设传输控制信号和接收外设的状态信号
③数据类型的转换
§ 1.3计算机中数的表示方法定点法浮点法定点机:用定点表示的计算机( 51单片机 )
定点法表示整数,浮点法表示实数浮点机:用浮点表示的计算机( PC机 )
1.定点表示(单片机)
纯整数形式纯小数形式用 8位二进制数表示一个纯整数,格式如下:
符号 0—正数,1—负数机器数 → 数据表示形式,数的正、负号被数码化机器数 是指计算机中 的数?
机器数并 不是 指计算机中的数 !
1 1 0 0 1 1 0 0[-76]=
D7 D6 D5 D4 D3 D2 D1 D0
D7=128 D6=64 D5=32 D4=16
D3=8 D2=4 D1=2 D0=1
1 1 0 0 1 0 1 0[-74]=
1 0 1 0 1 1 0 1[-45]=
0 1 0 1 0 0 0 0[80]=
1 0 1 1 1 1 0 0[-60]=
练习课下练习
53 92 -87 -75
2.浮点表示(必须带小数点)
任意一个二进制数 N
N=S× 2P
S是数 N的尾数,P是数 N的阶码
Pf 阶码 P Sf 尾数 S
Pf为阶码的符号位,0-正,1-负
Sf为尾数的符号位,0-正,1-负机器数表示如下:
所谓浮点规格化是指 1/2≤|S|<1;即小数点后面的一位必须为 1,小数点前面一位为 0。
111.0101B=1.110101× 210B
=0.111010× 211B
当阶码 P取不同数值时,尾数小数点位置是可以变动的,因此称为浮点数。
二进制浮点规格化数例:若有二进制数 0.0011010B,规格化后的形式为 0.11010× 2–10B
注:规格化后尾数超出三位小数部分自动舍去,所以用浮点数表示有可能产生误差。
用 8位二进制数的格式将其表示为浮点数设若有 m位阶码,n为尾数,则数 N的表示范围为:
字长定后,阶码所占位数越长,则尾数越短,数的表示范围越宽,而数的精度越低。反之阶码越短,
则尾数越长,数的表示精度越高,但数的表示范围越窄。
0 0 1 1 0 1 0 1[5.35]=
0 1 0 1 1 1 0 0[-16.35]=
练习 求 5.35和 -16.35的浮点表示
5.35=101.0101B=0.1010101× 211B
-16.35=10010000.0110B=-0.100000110× 2101B
§ 1.4 计算机中常见的编码
1.ASCII码(字符编码)
ASCⅡ 码是美国标准信息交换码,有两种版本。
7位二进制数表示一个字符,早期用于电讯行业,后被移植入计算机,可表示 128个字符。
计算机编码,用规定好的二进制组合表示数据、
字符、汉字等信息。
96个图形字符
10个十进制数字
52 个英文字符
34 个其他字符
32个控制字符回车符、换行符、退格符设备控制符和信息分隔符等采用 8位二进制数表示一个字符的 ASCⅡ
码,最高位为扩展位,最高位若为 0,则为基本 ASCⅡ 码。最高位为 1,则为扩展的 ASCⅡ
码,一般用来表示键盘上不可显示的功能键编码。
从 ASCⅡ 码表中查到
A~ Z 的 ASCⅡ 编码是 41H~ 5AH;
a~z 的 ASCⅡ 编码是 61H~ 7AH;
0~9的 ASCⅡ 编码是 30H~ 39H。
用四位二进制数表示一位十进制数,因组成它的 4位二进制数码的权为 8,4,2,1而得名。
8421BCD编码表注,4位二进制数称为一位 8421BCD码字
2,8421BCD码 (十进制数的二进制编码)
BCD码与非 BCD码
0 0000B
1 0001B
2 0010B
3 0011B
4 0100B
5 0101B
6 0110B
7 0111B
8 1000B
9 1001B
A 1010B
B 1011B
C 1100B
D 1101B
E 1110B
F 1111B
非 BCD码冗余码非法码
BCD码注:在 0~ 9之间十进制数的
BCD码与十六进制是相同的,
10以后的称为非 BCD码。
① BCD码加法运算所谓 BCD加法就是按,逢十进位,的原则进行相加,其和也是一个 BCD数。但计算机只能进行 二进制 加法,在相邻 BCD码字 之间只能
,逢十六进位,,导致出现 非 BCD码 。因此需要对结果进行调整,做到,逢十进位,。
结果仍为 BCD码
9634+62=
[34]BCD =00110100B
+ [62]BCD =01100010B
10010110B
例例
89+95= 184
[89]BCD=10001001B
+ [95]BCD=10010101B
100011110B
01100110B+
110000100B
← 运算结果的低 4位出现非 BCD码高 4位出现进位,均应做加 6调整
← 结果仍为 BCD码进位 →
低位向高位产生进位,
高位出现非 BCD码
100010111B
均应作加 6调整进位 结果仍为 BCD码
117例 48+69=
[48]BCD =01001000B
+ [69]BCD =01101001B
10110001B
01100110B+
在 BCD加法过程中,进制不同导致出现非 BCD
码或某位向高位产生进位,使运算结果不正确。
在这种情况下均应作加 6调整,以 补 上多拿走的
6。 十进制调整在计算机中有专门的调整电路自动完成。
总 结
② BCD码减法运算
BCD码减法运算与加法运算同理,减法运算的调整原则:在运算过程中某位出现借位,相应位作减 6调整,减去多借的 6。也是有专门的指令来完成的。
例 58-25=
[58]BCD =01011000B
[25]BCD =00100101B-
00110011B 结果仍为 BCD码
33
00001101B
00000111B ← 结果仍为 BCD码例 35-28=
[35]BCD=00110101B
_ [28]BCD=00101000B ← 低四位向高四位借位
00000110B← 个位做减 6调整
← 运算结果的低 4位出现非 BCD码
7
_
§ 1.5 计算机中的运算电路及补码运算
1.计算机中的运算电路计算机中的运算都是在运算器中运行的,运算器是由加法器构成的,只会做二进制加法运算,二进制一位全加器电路如图所示:
FA
Si
Ai Bi
Ci+1 Ci
全加器真值表组成八位二进制数加法器电路如图所示八位机加减法运算电路 ★ ★
a0a1a2a3a4a5a6a7 为被加数 /被减数;
b0b1b2b3b4b5b6b7 为加数 /减数;
S0S1S2S3S4S5S6S7 为和或差 ;
C1C2C3C4C5C6C7C8 为加法运算中低位向高位的进位 ;
SUB为加减控制信号。
当执行减法指令时,SUB=1,图中各异或逻辑门均为反相逻辑门,
则 Si= ai-bi+ci = ai+ bi +ci,
并且 FA0连同 SUB的状态一起做加法运算。
当执行加法运算指令时,SUB=0,图中各异或逻辑门均为同相逻辑门,对加数没有任何影响则
Si=ai+bi+ci;
★
计算机作减法运算时,其运算过程是:一个数减去另一个数,等于加上另一个数的反码并加 1,这个运算过程称为补码运算结 论图中 OV是溢出标志位,运算结果有溢出时,
OV=1,否则 OV=0,溢出的原因是运算结果超出了计算机中数的表示范围。
图中 Cy是进位(或借位)的状态标志位,
做加法运算时若最高位( FA7) 有进位,则
Cy=1,否则 Cy=0; 做减法运算时若 FA7位无进位,说明不够减,有借位现象,则 Cy=1,
否则,Cy=0。
Cy=C8⊕ SUB OV=C7 ⊕ C8 ★
2.补码运算研究表明,计算机中的数一律用补码的形式表示的,两个数加法运算时,应将参加运算的数化成补码形式,相加后的结果仍为补码,对于有符号数来说,符号位无须单独处理,符号位可直接参加运算,不影响最终结果。
[X]补 +[Y]补 =[X+Y]补例 35+42=
[35]补 = 0 0 1 0 0 0 1 1
+ [42]补 = 0 0 1 0 1 0 1 0
0 0 1 0 0 1 1 0 1
Cy=0,OV=0,结果为 4DH,仍为补码形式。
若要显示运算结果,应对运算结果求真值。
真值就是将补码形式的运算结果用,+”,–”
号的形式来表示运算结果的实际数值。一般用十六进制或十进制表示。
+77
例 35- 42=
[35]补 = 0 0 1 0 0 0 1 1
+ [- 42]补 = 1 1 0 1 0 1 1 0
0 1 1 1 1 1 0 0 1
C8=0,Cy=1,说明不够减,运算结果为负
OV=0,说明没有溢出。若求真值,须对运算结果求补码。
-7
例 85+78=
[85]补 = 0 1 0 1 0 1 0 1
+ [78]补 = 0 1 0 0 1 1 1 0
0 1 0 1 0 0 0 1 1
Cy=0,OV=1,说明运算结果出现溢出现象,运算结果超出了计算机中对数的表示范围。
若将上述运算“看成”是有符号数的运算,运算结果的最高位可“看作”符号位,结果为负数,
由于 8位有符号数补码的表示范围为 –128~+127,
该运算结果显然超出了数的表示范围,OV=1产生了溢出现象,运算结果无意义,应做溢出提示。
85+78= 溢出若将上述运算,看成,是无符号数的运算,运算结果的最高位不再做符号位了,而是数值位(权为
128),8位无符号数补码的表示范围为 0~255,
尽管产生了溢出标志,但运算结果仍有意义,真值为 163。
85+78=163
计算机的补码运算可分为带符号数的补码运算和无符号数的补码运算,但计算机并不认识数的属性,运算器在进行加减运算时并不区分操作数是否带有符号,运算过程都是一样的。 当
SUB=0时,直接将两个数相加,当 SUB=1时,将减数求补(取反加 1),再进行运算。在运算的同时自动设置 CY和 OV,运算后若是无符号数,
通过判断 CY确定是否有进位,如果是带符号数,
则通过判断 OV确定是否溢出。
例 求下列 有 符号数的补码运算,并求真值
76+23=
[76]补 = 0 1 0 0 1 1 0 0
+ [23]补 = 0 0 0 1 0 1 1 1
0 1 1 0 0 0 1 1
Cy=0,OV=0
+99
76+69=
[76]补 = 0 1 0 0 1 1 0 0
+ [69]补 = 0 1 0 0 0 1 0 1
1 0 0 1 0 0 0 1
Cy=0,OV=1,有溢出结果无意义。
溢出
76-23=
[76]补 = 0 1 0 0 1 1 0 0
+ [-23]补 = 1 1 1 0 1 0 0 1
1 0 0 1 1 0 1 0 1
Cy=0,OV=0
+53
自动丢失例 求下列 无 符号数的补码运算,并求真值
76+69=
[76]补 = 0 1 0 0 1 1 0 0
+ [69]补 = 0 1 0 0 0 1 0 1
1 0 0 1 0 0 0 1
Cy=0,OV=1
145
35-69=
[35]补 = 0 0 1 0 0 0 1 1
+ [-69]补 = 1 0 1 1 1 0 1 1
1 1 0 1 1 1 1 0
Cy=1,OV=0
-34