您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 其它相关文档 > 微机原理与接口技术PPT-第1章
大连交通大学自动化教研室计算机硬件技术基础大连交通大学自动化教研室第一章数制与码制第二章8086CPU结构与功能第三章8086CPU指令系统第四章汇编语言程序设计第五章总线及形成第六章存储器设计第七章常用芯片的接口技术第八章中断系统与可编程中断控制器8259A第十章并行接口芯片8255A主要内容大连交通大学自动化教研室§1.1二进制数的基础知识三、二进制数的算术运算二进制计数制不仅物理实现容易,且运算方法也比十进制计数制大为简单,所以计算机中均采用二进制数。二进制数的算术运算包括加、减、乘、除。例:10110101B+00001111B、、、、、、11000100B、、10110101B-00001111B10100110B大连交通大学自动化教研室§1.1二进制数的基础知识四、二进制数的逻辑运算二进制数的逻辑运算包括与、或、异或、非四种运算。10110101B00001111B10111111B10110101B00001111B10111010B10110101B例:00001111B00000101BX=10110101B=01001010BX大连交通大学自动化教研室§1.2有符号二进制数的表示方法及溢出问题一、有符号二进制数的表示方法前面我们接触的二进制数均为无符号数,即所有二进制数位均为数值位,很多情况下都是这样对待的。但在有些情况下,有些数值是带符号的,即可能是正数,也可能是负数。这样就存在一个有符号二进制数的表示方法问题。1.数的符号表示方法为了表示一个有符号数,除了数值位以外,还应制定符号位,通常以这个数的最高位表示符号位。大连交通大学自动化教研室§1.2有符号二进制数的表示方法及溢出问题我们假定讨论的数为整数,对8位有符号二进制整数,用下表示:01234567DDDDDDDD数值部分符号位0:表示正数1:表示负数这种表示方法称为机器数表示法。有符号二进制数的真值为它对应的十进制数。大连交通大学自动化教研室§1.2有符号二进制数的表示方法及溢出问题2.原码表示法如果正数的符号位用0表示,负数的符号位用1表示,绝对值的编码规则与前面讲的无符号数编码规则相同,这种表示方法称为原码表示法。一个数X的原码记为:原[X]01234567DDDDDDDD数值部分=绝对值(用无符号二进制数表示)符号位00000011+3的表示=00000011B原[+3]大连交通大学自动化教研室§1.2有符号二进制数的表示方法及溢出问题10000011-3的表示=10000011B原[-3]原[+0]原[-0]=00000000B=10000000B数0的两种表示方法对8位有符号二进制数用原码表示的范围:正数从0000000001111111,+0+127负数从1000000011111111,-0-127大连交通大学自动化教研室§1.2有符号二进制数的表示方法及溢出问题优点:表示简单,易于理解,真值转换方便。缺点:+、-运算麻烦。因为它仅仅是将其值的符号用一位二进制数表示,因而它的原码数的+、-运算完全同笔算。如两个正数相减,计算机首先要判断被减数的绝对值与减数的绝对值的大小,然后决定是颠倒过来相减,还是直接相减。最后在结果的前面加上正确的正负号。所以,势必增加运行时间,降低速度,使运算器的逻辑复杂化。为了改进它,引进了补码的概念。有符号二进制数用原码表示的优缺点:大连交通大学自动化教研室§1.2有符号二进制数的表示方法及溢出问题3.补码表示法(1)补码的概念一个数X的补码记为,补码可定义为:补[X]补[x]=x当当xn2120nx021xn(mod)n2从定义可见,正数的补码=原码,即,所以,只有负数求补的问题。补[x]原[x]=大连交通大学自动化教研室§1.2有符号二进制数的表示方法及溢出问题(2)一个数的补码的求法xn2根据定义求补码补[x]==,xn2x0即负数x的补码等于模加上其真值(或减去其真值的绝对值)。n2补[X](mod)n2如:x=-1010111B,n=8,则=)1010111(28B==10000000B-1010111B10101001B大连交通大学自动化教研室§1.2有符号二进制数的表示方法及溢出问题利用原码求补码一个负数的补码等于其原码除符号位保持不变外,其余各位按位取反,再在最低位加1。补[X]如:x=-1010111B=10101000B+1=10101001B原[X]=11010111B值的注意的是:0的补码只有唯一的形式,符号位和数值位均为0。无正负0之分。8位二进制补码所能表示的数的范围:-128+12716位二进制补码所能表示的数的范围:-32768+32767大连交通大学自动化教研室§1.2有符号二进制数的表示方法及溢出问题(3)数的补码表示转换为原码表示一个用补码表示的负数,如将再求一次补,即将除符号位外取反加1,就可得到,用下式表示:原[X]补[X]补[X]原[X]补[X]补=补[X]补补[X]如:=10101001B=11010111B=原[X]大连交通大学自动化教研室§1.2有符号二进制数的表示方法及溢出问题(4)补码的运算规则第一个公式:两个n位二进制数之和的补码等于这两数补码之和,即:补[Y]补[X]补[X+Y]=+例:(+33)+(-15)00100001B+11110001B[1]00010010B[+33][-15][+18]补补补进位,丢掉大连交通大学自动化教研室§1.2有符号二进制数的表示方法及溢出问题补[Y]补[X]补[X-Y]=-第二个公式:两个n位二进制数之差的补码等于这两数补码之差,即:例:(+33)-(-15)00100001B-11110001B[1]00110000B[+33][-15][+48]补补补借位,丢掉大连交通大学自动化教研室§1.2有符号二进制数的表示方法及溢出问题第三个公式:补码减法运算时,也可以利用加法基本公式,即:补[-Y]补[X]补[X-Y]=+(mod)n2因为:X-Y=X+(-Y)补[X+(-Y)]补[X-Y]==+补[-Y]补[X]所以:一般称已知,求得的过程叫变补或求负。补[Y]补[-Y]大连交通大学自动化教研室§1.2有符号二进制数的表示方法及溢出问题变补或求负是一种很有用的运算。求法:补[Y]补[-Y]若已知=……,则对的每一位(包括符号位)都按位取反,然后再加1,结果即。21nnYY01YY补[Y]例:(+33)-(+15)00100001B-00001111B00010010B[+33][+15][+18]补补补00100001B+11110001B[1]00010010B[+33][-15][+18]补补补借位,丢掉(公式二)(公式三)大连交通大学自动化教研室§1.2有符号二进制数的表示方法及溢出问题二、有符号数运算的溢出问题如果计算机的字长为n位,n位二进制数的最高位为符号位,其余n-1位为数值位,采用补码表示法时,可表示的数X的范围为:12211nnX当n=8时,可表示的有符号数的范围为:当n=16时,可表示的有符号数的范围为:-32768+32767-128+127大连交通大学自动化教研室§1.2有符号二进制数的表示方法及溢出问题两个有符号数进行加减运算时,如果运算结果超出可表示的有符号数的范围时,就会发生溢出,使计算结果出错。很显然,溢出只能出现在两个同号数相加或两个异号数相减的情况下。大连交通大学自动化教研室§1.2有符号二进制数的表示方法及溢出问题例:(+72)+(+98)=+170+127溢出01001000B01100010B10101010B+补[+72]补[-86]补[+98]有进位=1无进位=0溢出,结果出错(正溢出)设次高位(数值部分最高位)向最高位(符号位)的进位标志为;最高位(符号位)和次高位的进位相加的进位标志为。1psCCSCpCpCSC大连交通大学自动化教研室§1.2有符号二进制数的表示方法及溢出问题例:(-83)+(-80)=-163-128溢出10101101B10110000B01011101B+补[-83]补[+93]补[-80]无进位=0有进位=1溢出,结果出错(负溢出)[1]1psCCSCpC大连交通大学自动化教研室§1.2有符号二进制数的表示方法及溢出问题结论:对于加法运算(1)如果次高位有进位而最高位无进位,则结果溢出;(2)如果次高位无进位而最高位有进位,则结果溢出。这两种情况分别是:(1)两负数相加,结果超出范围,形式上变为正数;(2)两正数相加,结果超出范围,形式上变为负数。大连交通大学自动化教研室§1.2有符号二进制数的表示方法及溢出问题同理,我们可得出结论:对于减法运算(1)如果次高位有借位而最高位无借位,则结果溢出;(2)如果次高位无借位而最高位有借位,则结果溢出。大连交通大学自动化教研室§1.3二进制编码的十进制数(BCD编码)一、8241BCD码前面讲过,计算机只认识0、1二进制代码,但人们最习惯的是十进制。为了解决这一矛盾,提出了一个比较适合于十进制系统的二进制代码的特殊形式—BCD码。BCD码是用四位二进制数表示1位0—9的十进制数,而4位二进制数码有16种组合,原则上可任选10种作为代码,但为便于记忆和比较直观,最常用的是8421BCD码,8、4、2、1分别是4位二进制数的位权值。下面给出十进制数和8421BCD编码的对应关系。大连交通大学自动化教研室§1.3二进制编码的十进制数(BCD编码)1000801117011060101501004001130010200011000008421BCD码十进制数10019大连交通大学自动化教研室§1.3二进制编码的十进制数(BCD编码)如:十进制数和BCD码相互转换75.4BCD码75.4=BCD)0100.01110101(BCD码10000101.0101十进制数BCD)0101.10000101(=85.5同一个8位二进制代码表示的数,当认为它表示的是二进制数和认为它表示的是二进制编码的十进制数,数值是不相同的。如:2)00011000(BCD)00011000(=24=18大连交通大学自动化教研室§1.3二进制编码的十进制数(BCD编码)在计算机中,BCD码有两种基本格式a.组合式BCD码b.分离式BCD码a.组合式BCD码两位十进制存放在一个字节中。如数24的存放格式:0010010001234567DDDDDDDD24大连交通大学自动化教研室§1.3二进制编码的十进制数(BCD编码)b.分离式BCD码每位数存放在8位字节的低4位,高4位的内容与数值无关。如数24的存放格式:01234567DDDDDDDDxxxx001042xxxx0100二、BCD码的加减法运算下面我们以组合式BCD码格式为例讨论BCD码的加减运算。由于BCD编码是将每个十进制数用一组4位二进制数表示,若将这种BCD编码直接交计算机运算,计算机总是把它按二进制数处理,所以结果可能出错。大连交通大学自动化教研室§1.3二进制编码的十进制数(BCD编码)如:38+49=87BCD001110000100100110000001BCD38498781显然,结果出错。出错原因:十进制相加应逢十进一,但计算机按二进制运算,每四位一组,低四位向高四位进位相当十六进制运算,“逢十六进一”。所以当结果超过9时将比正确值少6。解决办法:加六修正大连交通大学自动化教研室§1.3二进制编码的十进制数(BCD编码)加六修正规则:(选学)(1)如果两个BCD码位相加没有进位,并且结果≤9,则该位不需修正。(2)如果两个BCD码位相加有进位,或者其结果≥10,该位进行加六修正。(3)低位修正结果使高位9时,高位进行加六修正。例:94+7=101大连交通大学自动化教研室§1.3二进制编码的十进制数(BCD编码)100101009410100001高4位满足法则300000111710011011低4位满足法则1+00000110加六修正+01100000加六修正+[1]000000
本文标题:微机原理与接口技术PPT-第1章
链接地址:https://www.777doc.com/doc-3204203 .html