第一章 绪 论 1.1 概述 1.2 计算机中的数制与码制 1.3 微型计算机的基本结构
一、重点内容提示 1、微型计算机的基本结构及基本工作原理; 2、数制的表示及相互转换; 3、计算机中带符号数的表示方法; 本章重点内容提示及掌握要点 一、重点内容提示 1、微型计算机的基本结构及基本工作原理; 2、数制的表示及相互转换; 3、计算机中带符号数的表示方法; 4、计算机中带小数点的数的表示方法; 5、常用的二进制编码; 6、基本的逻辑门电路和逻辑函数。
二、掌握要点 1、掌握微型计算机的基本结构及原理; 2、掌握各种数制的表示及相互转换; 3、掌握计算机中带符号数的表示方法; 4、掌握计算机中带小数点的数的表示方法; 5、掌握常用的二进制编码。 6、能熟练地运用基本的逻辑门电路和逻辑表达式;
1.1 概述 以来,对人类社会的经济发展和科学技术的发展起 到了巨大的推动作用。 算机,机械计算机,数字计算机等。目前,人们所 1.1 概述 计算机是二十世纪的一个伟大发明,自从问世 以来,对人类社会的经济发展和科学技术的发展起 到了巨大的推动作用。 计算机种类较多,有电子计算机,电子模拟计 算机,机械计算机,数字计算机等。目前,人们所 说的计算机是电子数字计算机,简称:微机。 计算机是一种能够完成数学运算、逻辑运算、 逻辑推理和自动控制的电子装置。因为它具有算逻 运算、逻辑推理、判断等能力。所以,人们称它为 “电脑”。在现代高速发展的电子信息社会,计算机 是人类的万能工具。
过去有句流行语叫: “学好数、理、化,走遍天下都不怕” 可见,学好计算机技术是何等重要。 现在是信息时代,现代的一句流行语叫: “掌握信息化,走遍天涯有财发” 一切尽在一语中 ………… 可见,学好计算机技术是何等重要。
自从1946年美国第一台电子计算机问世以来,已经过五代的发展与变革。大体概括如下: 1.1.1 微型计算机的发展概况 自从1946年美国第一台电子计算机问世以来,已经过五代的发展与变革。大体概括如下: 第一代:于46年在美国问世的巨型电子计算机(ENIAC); 第二代:58年开始采用晶体管取代电子管研制的电子计算机; 第三代:65年开始利用中、小规模集成电路构成的计算机; 第四代:70年开始由大规模集成电路为主体构成的计算机; 第五代:七十年代后期以来,在系统结构上采用超大规模集成 电路和神经网络技术、材料上使用常温超导材料和光 器件组成的微型计算机,其功能、性能日益提高。从4 位、8位、16位、32位到64位机不断扩展,运 算速度从 几兆赫兹到几千千兆赫兹。
微处理器的迅速发展和更新换代,使基于微处理器的微型计算机的功能和性能不断提高。 所谓微处理器,是把运算器和控制器集成在 一个芯片上,又称CPU。 所谓微型计算机是由CPU配上一定容量的半导体随机存储器(RAM)、半导体只读存储器(ROM)及接口电路和外围设备组成的。 所谓微型计算机系统,是指硬件系统和软件系统的总称。硬件系统包括微型计算机、时钟、电源等; 软件系统包括系统软件和应用软件。
微型计算机的发展趋势,一方面向小型化、微型化发展;另一方面向巨型化方向发展,不管是往那个方面发展,都是朝着智能化方向发展。 1.1.2 微型计算机的分类和特点 一、微型计算机的分类 ※ 按照微机的组装形式可分为: 微机 单板机 单片机 ※ 按照微处理器的字长可分为: 4位机 、8位机、16位机、32位机、64位机
1.1.3 微型计算机的字长 二、微机的特点 1、体积小 、重量轻、耗电少 2、价格便宜 3、可靠性高 4、功能强、使用方便 5、维护方便 1.1.3 微型计算机的字长 字节 : (包含八位二进制数码) 字 : (包含两个字节——十六位二进制数码) 双字 : (包含两个字——三十二位二进制数码)
1.2 计算机中各种计数制的表示方法 1.2.1 日常生活中所用的十进计数制和其他计数制 1.2 计算机中各种计数制的表示方法 1.2.1 日常生活中所用的十进计数制和其他计数制 一、十进计数制 在生产、生活中,人们所遇到的数大部分是十进计数制, 所谓“十进制”,就是一种“逢十进一”的计数制。 比如:人民币的单位有元、角、分;计量长度用的单位有丈、尺、寸等,他们之间都是十进制的计数关系。 我们把“十进制”提到理论高度,可归纳如下: 1、所谓“十进制”,就是“逢十进一”的计数制。 2、十进计数制总共有0~9十个不同的数码,任何一个十进制 数都是由这十个数码中的一个或多个组成的。 如:2468,就是由这十个数码中的4个组成的。
3、 我们把“10”叫作十进计数制的“基数”。 什么叫权呢? 基数 既表明了该进位制中数码的个数,也表明了相邻两位数字之间的倍数关系(即个、十、百、千、万……)。 推而广之,逢“几” 进一的“几”,就是基数。 4、在十进制数中,每一位都具有一定的“权”。 什么叫权呢? 如数字:911,在911中有两个数码“1”,在个位上的“1” 只代表“壹”,而在十位上的那个“1”却代表“壹拾”。可见,数码放在不同的位置上,就具有不同的权。“位数”越高,“权”就越大。如 123.45按权展开式为: 123.45 = 1×102+2×101+3×100+4×10-1+5×10-2
任何一个十进制数,都可以写成按权的展开式,十进制各位的权,就是基数10的乘幂。 二、其他计数制 1、十二进制 如:十二支铅笔为“一打”,而十二打又叫“一罗”, 这里的“支” 、“打”、“罗”之间是十二进制计数关系, 即 逢十二就进一。在十二进制中,基数就是12 2、六十进制 我们知道1小时等于60分,1分钟等于60秒, 这秒、分、时之间就是六十进制。基数就是60。
3、十六进制及二十四进制 我国二十世纪七十年代以前用的称计量单位为: 1斤等于16两,也就是十六进计数制,逢十六进一。 在地球围着太阳转的同时,还不停地自转,地球自转一圈就是一天,而1天等于24小时,则小时与天之间就是二十四进制。 从以上例子可知,除了最常用的“十进制”外,还有“十二进制”、“十六进制”、“二十四进制”、“六十进制”等计数制。 那么,基数最小的是几进制呢?显然,基数不能等于0,也不能等于1。也就是说不可能有“逢零进一”和“逢一进一”的计数制。由此可见,基数最小只能是 2 。 基数为2的计数制叫“二进制”,即“逢二进一”
如:两只袜子等于一双袜子,两只鞋子等于一双鞋子。可见,“只”与“双”之间是二进制关系。 三、二进计数制 通过前面的学习我们掌握了各种计数制的关系。 下面我们重点来讨论二进计数制。为什么要重点 讨论二进制数?原因何在? 众所周知,计算机是最“聪明”、最“能干”的。但 它有最“笨”的一面。就是“识字能力”太差,不管是什 么低级或高级的计算机都只认识两个字:“0”和“1”。 所以,不管让计算机进行任何简单或复杂的计算 、处理还是控制,人们只能给计算机提供二进制信 息。因此,凡是学习计算机的人都必须懂得二进制。
1、什么是二进制及二进制的特点 1)、所谓“二进制”,就是“逢二进一”的计数 制。 比如:一个数最低位上是数值0,那么就写“0”, 是数值1就写“1”。 但如果是十进制数的2,用二进制表示时,只用 最低一位就不够了,因为已经满了2 ,需要向高位 进“1”才对。 即 十进制数的2,用二进制表示时应为“10”。 倒过来说,(10)2 =(2)10
按照“逢二进一”的规则,可以把十进制中 0 ~ 16的这些数用二进制表示出来: 十进制数 等值的二进制数 1 2 3 4 5 6 7 10 11 100 101 110 111 等值的二进制数 8 9 10 11 12 13 14 15 16 1000 1001 1010 1011 1100 1101 1110 1111 10000 十进制数
它既表明二进制中只有“0”和“1”两个数码,也 表明相邻两位数之间是2倍的关系, 也即是“逢二进一”的关系。 2)、在二进制数中,只有“0”和“1”两个数码, 换句话说:任何一个二进制数都是由“0”和“1”来组成的, 。例如:十进制中的49,用二进制表示为: (49)10 = (1 1 0 0 0 1)2 3)、在二进制中,基数为“2”, 它既表明二进制中只有“0”和“1”两个数码,也 表明相邻两位数之间是2倍的关系, 也即是“逢二进一”的关系。 4) 、在二进制中,每一位都具有一定的“权”, 这些“权”都是基数 2 的乘幂形式: 即从低位向高位分别为: 2º 、2¹、 2² 、2³ ……
5) 、一个二进制数,左移一位相当该数扩大2倍; 右移一位相当该数缩小1/2。 任何一个二进制数,都可以写成按权展开的形式。 例如:十进制中的35,可以写成二进制形式,并按权展开为: (35)10 =(100011)2 =1×25 + 0×2⁴+0×23 + 0× 22 +1×21+1 ×20 5) 、一个二进制数,左移一位相当该数扩大2倍; 右移一位相当该数缩小1/2。 例如: 110 ——十进制的6,左移一位(相当右边补0)得: 1100 ——十进制的12, 若将 110右移一位,则变为: 11 —— 十进制的3,—— 6的1/2。
2、计算机为什么要采用二进制 首先来看十进制数“23”和“84”用二进制表示出 来: (23)10 =(10111)2 来: (23)10 =(10111)2 (84)10 =(1010100)2 古往今来在生产和生活中人们习惯使用十进制。 是由于人有十个指头,采用十进制计数非常方便。 对于二进制表示的数容易读错和写错。既然如 此,为什么计算机还要采用二进制呢? 这是因为有它的优缺点决定的。
在计算机内部对数据信息的存取、运算、处理和控制等操作,都是由双态元件(数字电路)来实现的。二进制数也正好有“0”和“1”数字符。 1)、二进制数在计算机内易于表示。 在计算机内部对数据信息的存取、运算、处理和控制等操作,都是由双态元件(数字电路)来实现的。二进制数也正好有“0”和“1”数字符。 例如: 信息的有无; 灯泡的亮暗; 开关的通断; 电位的高低;……。 这样就可以用“1”来表示“有”、“亮”、“通”、“高” 这一类状态; 用“0”来表示“无”、“暗”、“断”、“低”另一类状 态。
2)二进制的算术运算非常简单 ①、加法:其运算法则为: 0+0=0 0+1=1 1+0=1 1+1= 1 0 ;逢二进一 1+1= 1 0 ;逢二进一 例: 求23+22=? 23 …………… 10111 + 22 …………… + 10110 45 …………… 101101
0 – 0 = 0 1 – 0 = 1 1 – 1 = 0 0 – 1 = 1 ; 注意:当本位不够减时, ②、减法: 其运算法则为 ②、减法: 其运算法则为 0 – 0 = 0 1 – 0 = 1 1 – 1 = 0 0 – 1 = 1 ; 注意:当本位不够减时, 向高位“借一当二” 例: 求 9 - 5= ? 9 ……………… 1001 — 5 ……………… — 101 4 ……………… 100
0×1=0 1×0=0 1×1=1 ③、乘法: 其运算规则为 例:求 7×5=? 7 ………… 111 ×5 …………× 101 例:求 7×5=? 7 ………… 111 ×5 …………× 101 35 ………… 111 +000 +111 100011 0×0=0 0×1=0 1×0=0 1×1=1 说明两点: 1、当乘数某位为“1”时,它乘以被乘数,得部分积(被乘数本身), 当乘数某位为“0”时,其部分积就是一串“0”. 各部分积相加得最后乘积。
2、计算机做乘法时,并不是真正按照乘法法则去乘的,而是把乘法变成加法和移位来实现的。 ④、除法: 二进制的除法是乘法的逆运算,法则与乘法类似。各位的商不是“0”,便是“1”。 1 1 例: 求 24÷4=? 1 0 0 1 1 0 0 0 6 -1 0 0 4 2 4 1 0 0 2 4 - 1 0 0
说明: 同样,计算机内部也不会真正做除法, 而是把除法变成减法和移位来实现的。 说明: 同样,计算机内部也不会真正做除法, 而是把除法变成减法和移位来实现的。 3)、采用二进制可节省计算机硬件电路 看起来二进制数写出来要比十进制数长,但采用二进制时,计算机中的硬件电路反而简单、节省。 比如:采用十进制来表示 0~99的数,需要两位电路,每位电路又应具有10种状态才能表示 0~9,这样总共需要10×2=20种状态电路。 若采用二进制来表示同样范围的数(0~99), 即二进制数为:0~1100011,可见,只需7位电路,而每位只需两种状态便可实现。即总共只需7×2=14种状态电路。比采用十进制节省6个状态电路。
4)、采用二进制后,可运用逻辑代数这一强有力的工具,对计算机进行分析、设计和应用计算、处理等带来了很大的方便。 以上四个优特点,说明了计算机为什么要采用二进制的根本原因。 计算机内部采用二进制数,而人们习惯用十进制数,因此,学习计算机时,要学会十进制与二进制以及其他进制的互相转换。
1.2.3 各进制之间的转换 1、任意进制数 十进制数 1)、二进制 十进制数 1.2.3 各进制之间的转换 1、任意进制数 十进制数 1)、二进制 十进制数 11001B = 1×24+1×23+0×22+0×21+1×20 = 25 2)、八进制 十进制数 325.7Q = 3×82+2×81+5×80+7×8-1 = 213.125 3)、十六进制 十进制数 4F5.C2H = 4×16 2+15×161+5×16 0+12×16-1+ 2×16-2 =1269.7578
2、十进制数 任意进制 1)、十进制数 二进制数 例: 将( 25.625)10 转换成二进制数。 2 5 余数 2 取整数 1 2 K0=1 2 0.625×2=1.25 k-1=1 0.25×2=0.5 k-2=0 0.5×2=1 k-3=1 6 K1=0 2 2 3 K2=0 1 2 K3=1 K4=1 故 25.625 对应的二进制数为:11001.101B
2)、十进制 八进制 例:将 (213)10 转换成八进制数 2 6 3 8 2 1 3 8 2 6 -1 6 - 2 4 5 3 2)、十进制 八进制 例:将 (213)10 转换成八进制数 2 6 3 8 2 1 3 8 2 6 -1 6 - 2 4 5 3 余数: 2 - 4 8 余数: 5 结果 (213)10 = (325)8 验证:3×82+2×81+5×80 = 213
3)、十进制 十六进制 例: 将 (654)10转换成十六进制数 4 2 16 6 5 4 16 4 0 -6 4 -3 2 余数: 1 4 3)、十进制 十六进制 例: 将 (654)10转换成十六进制数 4 2 16 6 5 4 16 4 0 -6 4 -3 2 余数: 1 4 余数: 8 结果 :(654)10 = (28E)16 验证:2×162+8×161+14×160 =512+128+14 =654
在实际操作中,用二进制数表示容易出错 ,所以, 通常采用八进制和十六进制,作为一种过渡形式 ,这两种计数制的基数,都是 2 的某个整数次幂。 在实际操作中,用二进制数表示容易出错 ,所以, 通常采用八进制和十六进制,作为一种过渡形式 ,这两种计数制的基数,都是 2 的某个整数次幂。 如:八进制的基数是“8”,而8=23 即: 一位八进制,由三位二进制数编码 八进制的8个数码为:0、1、2、3、4、5、6、7 十六进制的基数是“16”,而16= 24 即: 一位八进制,由四位二进制数编码 十六进制中的16个数码为: 0、1、2、3、4、5、6、7、8、9、A、 B、 C、 D、 E、 F 对应的十进制为: 0、1、2、3、4、5、6、7、8、9、10、11、12、13、14、15
3、二进制、八进制、十六进制之间的转换 例:1100010.110111100B = 142.674Q 1100010.11011110B = 62.DEH 142.674Q = 001100010.110111100B 4F5.C2H = 010011110101.11000010B 各种计数制表示0~16的对应表如下:
十进制 二进制(B) 八进制(Q) 十六进制(H) 0 0 0 0 1 1 1 1 2 10 2 2 3 11 3 3 4 100 4 4 0 0 0 0 1 1 1 1 2 10 2 2 3 11 3 3 4 100 4 4 5 101 5 5 6 110 6 6 7 111 7 7 8 1000 10 8 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F
1.2.4 计算机中的码制表示方法 一、码制的概念 在计算机中表示的数,叫机器数 带符号数 1.2.4 计算机中的码制表示方法 一、码制的概念 无符号数 在计算机中表示的数,叫机器数 带符号数 对于带符号的机器数,是由符号位和数值两部分组成的。 带符号的机器数有三种表示方法: 原码表示法 反码表示法 补码表示法
二、各种码制表示法 1、真值表示法: 例如: X1 = +73 =+1001001 X2 = - 23 = - 0010111 这种用“+”、“-”号表示数的“正”、“负”,用二进制表示数的大小的形式,就是数的原来形式,称为“真值”。 真值计算机是不认识的。
数的最高位表示数的符号,数值部分是数的绝对值,也称真值,这种表示法称为原码表示法。 2、原码表示法 数的最高位表示数的符号,数值部分是数的绝对值,也称真值,这种表示法称为原码表示法。 * 对于正数: 符号位用0表示,数字位同真值。 * 对于负数: 符号位用1表示,数字位同真值。 这种把符号位数字化后的数,叫“机器数” 例: [X1] 原 = 01001001 (+73的原码) [X2] 原 = 10010111 (-23的原码) “0”的表示: [+0]原=00000000B [-0]原=10000000B 对于8位机,原码可表示的数的范围:-127~+127
首先,请同学们记住一句非常重要的话,可达到 对于正数而言,它的原码、反码和补码都一样, 都是它自己。 3、反码表示法: 一个数的最高位表示数的符号,数值部分对于正数同原码,对于负数将按位取反。这叫反码表示法。 首先,请同学们记住一句非常重要的话,可达到 事半功倍的效果,即: 对于正数而言,它的原码、反码和补码都一样, 都是它自己。 例如: [X1]原=00011000 ;正二十四的原码 [X1]反=00011000 ;正二十四的反码
对一个负数,保持其符号位不变,数值位各位取反,即将原码“1”变成“0”,将“0”变成“1”。这就得到 这个负数的反码形式。 例如:[X2]原=10011000 (负二十四的原码) [X2]反=11100111 (负二十四的反码) “0”的表示: [+0]反 = 00000000B [- 0]反 = 11111111B 对于8位机,反码可表示的数的范围:-127~+127
补码的概念非常重要,在计算机中均采用补码 4、补码表示法: 补码的概念非常重要,在计算机中均采用补码 运算。采用补码运算的最大好处是,减法运算可用加 法来实现。 正因为有了补码的概念,计算机硬件节省了减法电路,即计算机本身不会做减法。 为了说明补码的概念,下面举一个表示时钟的例子。 现在的正确时间是北京时间12点整,你带的手表慢了,现在才9点整,为了使你的表拨到与北京时间一样,你可用两种方法来实现。
第一种方法:把针沿顺时针方向拨3格,指向12点。 第二种方法:把针沿逆时针方向倒拨9格,也指向12点 12 12 12 3 9 9 3 9 3 6 6 6 北京时间
在这里,“加3”(顺时针拨3格)和“减9”(逆 时针拨9格)能达到同一效果(指到12点)。 在这里,“加3”(顺时针拨3格)和“减9”(逆 时针拨9格)能达到同一效果(指到12点)。 也就是说,“减9”时可用“加3”来实现。 3和9有一定的关系,即3+9=12(为时钟的满刻 度),这里把“12”称为“模”。而3和9就是以12为模 的互补(互为补码)关系。 下面再看一个例子:求 8-3 = ? 8-3 = 5,也可以把“减3”用“加7”来代替,能达到同一结果,如下所示:
在这个例子中,3和7是以10为模的互补 (互为补码)关系,即:3+7=10(模)。 对n位二进制数,“模” 是 2n。 8 8 +7 -3 1 5 8 -3 5 在这个例子中,3和7是以10为模的互补 (互为补码)关系,即:3+7=10(模)。 同理,二进制中也可以把减去一个数用加上另一个数来代替,只是“模”不相同。 对n位二进制数,“模” 是 2n。 下面我们来看,怎样求得二进制数的补码。
数字位将原码按位取反,再末位加1,便得其补 码。 例2: [y]原=11010011 (负八十三的原码) 1、 对于正数: 符号位用“0”表示,数字位同原码。 例1: [X]原= 01010011 (正八十三的原码) ∴[X]补= 01010011 (正八十三的补码) 2.对于负数: 符号位用“1”表示保持不变, 数字位将原码按位取反,再末位加1,便得其补 码。 例2: [y]原=11010011 (负八十三的原码) [y]反=10101100 (负八十三的反码) [y]补=10101100+1 (负八十三的反码+1) =10101101 (负八十三的补码)
三、补码的性质 例 3、 [X]真=-75= -1001011 [X]原= 11001011 符号位用“1”表示 1、正数的原码、反码、补码都相同。 2、负数的补码等于它的反码加1。(符号为“1”)。 3、在补码表示中,“0”的表示是唯一的、一致的。 例如,以 8 位字长为例,则有:
反码形式也不同,但补码形式却是一样的、唯一的。 即: [+0]补 = [-0]补 = 00000000 [+0]原= 00000000 [+0]反= 00000000 正“0”的原码、反码、补码都一样 [+0]补= 00000000 [-0]原= 10000000 [-0]反= 11111111 ;符号不变,其余各位变反 [-0]补= 00000000 ;(反码加1得补码,最高位向前 面进位自动丢失。) 由以上可见,正“0”和负“0”的原码形式不同, 反码形式也不同,但补码形式却是一样的、唯一的。 即: [+0]补 = [-0]补 = 00000000
4、补码的补码等于原码。即:对一个数的原码求补,可得其补码。对这个补码再求一次补,又回到原码。 例1: [X1]原= 00000011 (正3的原码) 求补一次: [X1]补= 00000011 (正3的补码) 再求一次补:[X1]补= 00000011= [X1]原 例2: [X2]原=10000011 (负3的原码) 求补一次: [X2]补=11111101 (得负3的补码) 再求补一次:[[X2]补]补= 10000011 =[X]原 由以上可知,不论正数还是负数,求补码的补码就是原码。
对于8位机,补码可表示的数值范围: 0 ~(+127)10 5、补码所能表示的数值范围 1)、正数的补码数值范围 最小的正数的补码为:00000000,即:十进制的“0”; 最大的正数的补码为:01111111,即:27-1=(127)10 ∴ 正数补码所能表示的数值范围为: 0 ~(+127)10 2)、负数的补码数值范围
在负数范围内,最高位为符号位,其余 7位表示数值。由于“+0”和“-0”的补码均为: 00000000, 在负数范围内,最高位为符号位,其余 7位表示数值。由于“+0”和“-0”的补码均为: 00000000, 所以,最大负数的补码也就是 [-0]补=00000000,而最小的负数的补码为: 10000000=( -128的补码)。 总括起来,若字长为8位,补码所能表示的数值 范围为:+127~-128。
使用机器数要注意: 有符号的数的形式值不等于真正的数值。 特别对于负数的表示形式,原码形式最高位的1表 机器数是二进制数,由于符号位占据一位,因此 有符号的数的形式值不等于真正的数值。 特别对于负数的表示形式,原码形式最高位的1表 示负号,不是数,数值部分是数的真正值; 而反码和补码,就连数值部分也不是数的本身了。 所以,若要计算一个负数的机器数为十进制的多 少时,只有负数的原码的数值部分才可展开按权相加。
四、变补 变补和求补是两个不同的概念。变补的意思是: 如果已知一个数的补码[X]补,若将此补码的每一位 (连同符号位)都变反,然后加1,结果可得到其相 反数的补码[─X]补,即: [X]补 变补 [-X]补 例: 十进制数 X=38 ,它的相反数为-38 ∵ 正数的补码和原码一致, ∴[X]补=[X]原= [38]10=00100110
现将[X]补= 00100110的每一位(包括符号位) 一起变反,得:11011001 然后加1,得:11011010 (这个数便是-38 的补码。 可用求补的方法验证。 已知 [-38]原= 10100110 所以:[-38]补= 11011010 (反码+1得补码) 可见,从[38]补 变补 得到[-38]补是一致的 。
五、补码的运算 补码运算要注意3点: 第一、符号位也当作数一样参加运算; 第二、相加时若符号位对前面还有进位“1”,则 将这个进位丢弃不要; 第三、补码运算的结果还是补码,要想得到原码 再求一次补即可。(即:补码的补码为原码) 下面以8位机器数为例,即: 模为28 = 256
1、补码的加法运算(法则): 补码加法规则:[X+Y]补=[X]补+[Y]补 例1: X= 72 Y= 43 求 : X+Y=? 解: [X]补= [X]原=01001000 [Y]补= [Y]原=00101011 72 01001000 …… [X]补 + 43 + 00101011 …… [Y]补 115 01110011 …… [X+Y]补 结果得符号为“0”,表示正数,是对的。
例2: X = 96 Y = -19 求:X+Y=? 解: [X]补= [Y]原= 01100000 [Y]原= 10010011 [Y]补= 11101101 96 01100000 ……[X]补 + (-19) +11101101 [Y]补 77 1 01001101 [X+Y]补 本例符号位相加后,向高位有进位,该进位将 自动丢失。和数符号位为正,说明结果正确。
(-42) 11010110 ………[X]补 +(-11) 11110101 ………[X]补 例3、已知 X=-42 Y= -11 求X+Y =? [Y]原= 10001011 [Y]补= 11110101 解: [X]原=10101010 [X]补=11010110 (-42) 11010110 ………[X]补 +(-11) 11110101 ………[X]补 —53 1 11001011 ………[X+Y]补 此题结果:向高位有进位,并丢弃。符号位为“1”, 表示负数。要想得到原码,需再求补。即: [X+Y]原=[ [X+Y]补]补=(10110101)2 = (—53)10
2、补码的减法运算(法则) ∵ X–Y=X+(–Y) ∴ [X–Y]补 = [X+(–Y)]补 = [X]补+[–Y]补 解: [X]补=[X]原= 00100010 [Y]补=[Y]原= 00011011 变补 [–Y]补=11100101 34 00100010 ……… [X]补 –27 +11100101 ……… [–Y]补 7 1 00000111 ……… [X–Y]补
例2: 已知 X = 91 Y = –29 求: X –Y=? 解:∵ [X]补=[X]原=01011011 又 ∵ [Y]原=10011101 [Y]补=11100011 求补 变补 [–Y]补= 00011101 ∴ 91 01011011 ………[X]补 – ( – 29) 00011101 ………[– Y]补 + 120 01111000 ………[X– Y]补 本题结果:X-Y=91–( – 29)=120,正确
例3:已知 X= – 36 Y= –24 求:X –Y=? 解: [X]原=10100100 [X]补=11011100 求补 [Y]原=10011000 [Y]补=11101000 求补 变补 [–Y]补=00011000 – 36 11011100 ……… [X]补 –(–24) + 00011000 ……… [– Y]补 – 12 11110100 ……… [X– Y]补 ∵结果为负,需再求补才得原码,即: [X–Y]原=[[X–Y]补]补=10001100=(–12)10
从以上可知,不论加法还是减法,最后都归纳为补码的加法运算。这样就实现了在设计计算机时,只要设计一套加法电路就可以了,这就是补码概念的重要性和运用补码带来的好处。
1.2.5 计算机中数的小数点表示方法 在计算机中如何表示带小数的二进制数?由此,将引出“浮点数”的概念。 1.2.5 计算机中数的小数点表示方法 在计算机中如何表示带小数的二进制数?由此,将引出“浮点数”的概念。 一个二进制带小数可以写成多种等价形式。 如: ±1011.011可以写成下列形式: ±1011.011=±1.011011×2+3 ;小数点左移三位 ±1011.011=±0.1011011×2+6 ;小数点左移四位 ±1011.011=±101101.1×2–2 ;小数点右移二位 由此,可得出任意一个二进制数N带小数点的通式:
N = ± S × 2 ± J S----尾数 , 表示数 N 的全部有效数字。 阶符 阶码 尾符 尾数
如果阶码 J 可以取不同的值,则把这种表示称为数的浮点表示,这样的数称为浮点数,采用这种表示法的机器叫浮点计算机。 注意:浮点数的正负号是由尾数的正负号决定的, 而阶码的正负号只决定小数点的位置。即决定浮点数的绝对值大小。
1. 定点表示 小数,其表示的格式为: 小数点的位置在符号位与尾数部分最高位之间。 在定点计算机中,参与运算的数的绝对值必须小于1。 若定点计算机的阶码J=0,则该定点数只能是 小数,其表示的格式为: 数符. 数值 小数点的位置在符号位与尾数部分最高位之间。 在定点计算机中,参与运算的数的绝对值必须小于1。 若为8位机,其能表示的数的范围: -0.1111111B~+0.1111111B 即 -(1-2-7) ≤ X ≤1- 2-7
还以 8 位机为例, 若定点计算机的阶码J=7,则 该定点数只能是整数,其表示的格式为: 数符 数值 . 小数点的位置在符号位与数值位之后。 8位机能表示的数的范围: -1111111B ~ +1111111B 即 -(27-1) ≤ X ≤27-1
阶符 尾数 计算机存储一个浮点数的常用格式如下: 阶码 尾符 · “0”——阶码正 在一个字长中,有一位阶符: “1”——阶码负 2. 浮点机器数的表示法 计算机存储一个浮点数的常用格式如下: 阶符 阶码 尾符 尾数 · “0”——阶码正 在一个字长中,有一位阶符: “1”——阶码负 有若干位阶码,阶码为正整数; “0”——尾数为正 有一位尾符: “1”——尾数为负 有若干位尾数,尾数为纯小数; 浮点数由阶码和尾数两部分组成,均有各自的符号。
例1: 设字长为16位,其中,阶符1位,阶码4位, 尾符1位,尾数10位。要求把X= – 101101.0101写成规格 化的浮点补码数,阶码和尾码均用补码表示。 解:首先把X值写成规格化的浮点真值数: X= – 0.1011010101×2+6 则规格化的浮点补码数为: 0110 1 0100101011 阶符 阶码 尾符 尾 数 注:本题规格化的浮点补码数的尾数由X值小数部分变补所得。
例2: 设阶码用原码表示,尾数用补码表示,求下面浮点机器数的真值。 0010 1 0010011001 阶符 阶码 尾符 尾数 解: 真值 = – 0.1101100111×2+2 3、浮点数的数值范围 “数值范围”是指机器数所能表示的真值范围。 在定字长条件下,浮点数所能表示的真值范围比定点数大,而且分配给阶码的位数越多,所能表示的数的范围越大。
例:设字长为 16 位,其中阶符 1 位,阶码 5 位, 尾符 1 位, 尾数 9 位。 1、当阶码和尾数均用补码表示时,数值范围是多大? 2、当阶码和尾数都用原码表示时,数值范围是多大? 11111 111111111 阶码正最大,尾数正最大 补码表示 真值最大 = +(1–2–9)×2J 11111 1 000000000 阶码正最大,尾数负最大 真值最小 = – 1×2J 所以,数值范围= –1×2J~+(1–2–9)×2J [式中:J=25–1]
11111 111111111 阶码正最大 尾数正最大 原码表示 真值最大= +(1–2–9)×2J 11111 1 111111111 阶码正最大 尾数负最大 真值最小= –(1–2–9)×2J 所以,数值范围= –(1–2–9)×2J~+(1–2–9)×2J [式中:J= 25–1] 若阶码是m位,数码是n 位,阶码和数码各有一个符号位,则所能表示数的范围为: 2–(2 m –1)×2 –1 ~2(2 m–1 )×(1–2 – n)
浮点计算机通用性强,但结构复杂;定点 计算机结构简单,但使用不太方便。 通常,微型计算机多为定点计算机,而且 是整数型,即小数点固定在数的末尾。 如要进行浮点运算,需附加浮点运算电路(协处理器)。
1.2.6 常用的二进制编码 在计算机中,所有信息都采用二进制代码, 因而,计算机中表示的数、字符、符号等都是以特定的二进制代码来表示,即二进制编码。这些二进制编码虽是以0和1形式出现,但他们是非数值数据,不是真正的二进制数。 一、BCD码(二进制编码的十进制数) 一位十进制数用4位二进制编码来表示。常用的一种编码是8421 BCD码。 如: (12)10 = (00010010)BCD 由上可见, BCD码不是二进制数。
注意:BCD码与二进制数之间的转换,不 能直接进行,要先将BCD码转换成 十进制后,再转换为二进制数。 反之亦然。 BCD码转换表如书中14页所示。
在计算机应用中,各种字符采用二进制编码, 如:26个英文字母、10个阿拉伯数字、运算符号、标 点符号以及一些特殊的控制符,如换行、换页、回车 二、ASCII码(二进制编码的符号) 在计算机应用中,各种字符采用二进制编码, 如:26个英文字母、10个阿拉伯数字、运算符号、标 点符号以及一些特殊的控制符,如换行、换页、回车 等。微机中最常用的一种编码是ASCII码。ASCII码是 一种美国信息交换标准代码。 采用7位二进制码对一个字符进行编码,可表示128 个字符,每个ASCII码在机器中占1个字节,最高位为 0。 当作符号的数字0~9的ASCII码:30H~39H 字母A~Z的ASCII码:41H~5AH 字母a~z的ASCII码:61H~7AH 详见附录1—— 471页
1.2.7 基本逻辑电路与逻辑运算 逻辑,表示输入与输出的一种因果关系。表达这种因果关系的运算推理的方法称为逻辑代数/布尔代数/开关代数。其逻辑表达式如下: 逻辑函数:Y = F(A,B,C,D) 逻辑运算关系的特点: 1、变量取值只有0和1,无大小之意,仅代表事物的两种性质,即“有”和“无”、“真”与“假”、“开”和“关”等。 2、函数值也只有两种可能:“成立”和“不成立”、 “发生”与“不发生”等。
3、各种逻辑运算关系只有三种基本关系: 即:逻辑加(“或”运算)、逻辑乘(“与”运算)和 逻辑否定(逻辑“非”运算或逻辑“反”运算)。 一、基本逻辑门电路 能实现“与”、“或”、“非”等逻辑运算的电路叫逻辑 门电路。通常以高电平表示逻辑“1”,低电平表示逻辑 “0”(称正逻辑)。 下面分别讨论各种逻辑门电路与之对应的逻辑函数式关系。
1、“与”门 实现: Y=A·B =A∧B=AB=A×B 实现: Y=A+B=A∨B A A Y & Y B B 2、“或”门 A A Y ≥1 B B 实现: Y=A+B=A∨B
3、“非”门 A Y A 1 Y 实现: Y = A 4、“异或”门 A A Y ⊕ Y B B 实现:Y=A⊕B=A∨B=AB+AB
5、“与非”门 任何复杂的逻辑电路都可以由“与”、“或”、“非”等电路组合而成。而“与非”门就是由与门和非门组合而成的。如下所示。 A A Y & Y B B Y = A·B 6、“或非”门 “或非”门是由“或”门和“非”门组合而成,如下图所示:
1、多位逻辑“或”运算规则 (运算符:∨) A A ≥ 1 Y Y B B Y = A+B 二、多位逻辑运算 按位进行逻辑运算,不存在进位或借位问题。 1、多位逻辑“或”运算规则 (运算符:∨) 例: 1011 ∨) 1001 1011
例: 1011 ∧)1001 ∨)1001 2、多位逻辑“与”运算规则 (运算符:∧) 1001 3、多位逻辑“异或”运算规则(运算符:∨) 例: 1011 ∧)1001 1001 3、多位逻辑“异或”运算规则(运算符:∨) 例: 1011 ∨)1001 0010
1.3 微型计算机的基本结构
1.3.1 微型计算机的总体结构 微型计算机系统是由计算机硬件系统、软件系统以及通信网络系统组成的;硬件主要由输入设备、输出设备、运算器、存储器和控制器等五部分组成。如下图所示: 运算器 输出设备 输入设备 存储器 控制器
一、微型机各组成部分的功能 1. 运算器 运算器是完成算术或逻辑运算的部件。运算器由累加器、暂存寄存器和算术逻辑单元(ALU)组成,其结构框图所示: 数据总线 暂存器 累加器 标志寄存器 锁存器 ALU
累加器: 既能接受来自内部总线的二进制信息作为参加运算的一个操作数,并输送给算术逻辑单元(ALU),又能存储从总线送来的由ALU运算的结果,累加器与总线之间的数据传送是双向的。 暂存寄存器: 用于暂存由总线送来的另一个操作数。 锁存器: 为 防止ALU 的输出通过累加器又返馈到ALU的输入端而设置的。
2. 存储器 种信息的存储和交流中心。计算机中的存储器包括内 存储器、外存储器和只读存储器等。内存储器又叫主 2. 存储器 存储器是用来存放程序和数据的,是计算机各 种信息的存储和交流中心。计算机中的存储器包括内 存储器、外存储器和只读存储器等。内存储器又叫主 存储器或随机存储器,简称内存。内存是按地址存取 数据的,若地址总线共有20条(A0~A19),则可形 成220=1048576个地址,即1兆地址(1K=1024, 1M=1024K)。 下面是把1M存储器分成4块的示意图,其目的是为了适应扩充容量所需要的寻址方式。
上图中把1M内存分成4块,每块对应256K 地址,由地址线A0~A17共18位决定,地址A18 和A19通过块地址译码得到4个片选端,它们分 四 译码器 二 A18 A19 上图中把1M内存分成4块,每块对应256K 地址,由地址线A0~A17共18位决定,地址A18 和A19通过块地址译码得到4个片选端,它们分 别连接各存储块。
3. 控制器 为了进一步扩充主存容量,还可以将外存 储器作为主存的辅助,给用户提供比主存大得 多的逻辑存储容量,这就是所谓的“虚拟存储 器” 3. 控制器 控制器用来实现微型计算机本身程序的自动执行。在控制器控制下,从输入设备输入程序和数据,并自动存放到存储器中,然后由控制器指挥各部件协同工作、执行程序,最后将结果打印输出。
4. 输入设备 输入设备用来输入原始数据,输入的信息包括数字符、字母和控制符号等,输入设备主要有键盘、鼠标、磁性设备阅读机,光学阅读机,激光扫描仪等。 5.输出设备 输出设备用来输出计算机的处理结果,这些结果可以是数字、字母、图形和表格等。输出设备有打印机和绘图仪等,显示终端也可视为输出设备。
二、微型机各组成部分之间的连接方式 微型计算机硬件之间的连接线路可分为网状结构和总线结构,下面简要介绍常用的两种总路线结构。 在微型计算机的五个组成部分中,通常把运算器和控制器合起来,并且用大规模或超大规模集成电路技术集成在一块芯片上,称为中央处理单元,简称CPU。 微型计算机硬件之间的连接线路可分为网状结构和总线结构,下面简要介绍常用的两种总路线结构。
1. 单总线结构 下图所示为单总线结构。这种结构将I/O 设备、CPU以及内存储器都连接到同一总线 上。单总线结构简单,增减设备方便,目前大 1. 单总线结构 下图所示为单总线结构。这种结构将I/O 设备、CPU以及内存储器都连接到同一总线 上。单总线结构简单,增减设备方便,目前大 多数微机采用这种结构。 内存 CRT CPU 磁盘 键盘 打印机
2. 三总线结构 微型计算机的三总线结构如下图所示: AB DB CPU CB DMA I/O接口 存储器 外设 外设
1.3.2 微处理器的基本结构 微型计算机中的核心部件——微处理器, 也叫CPU,它仅仅是把运算器和控制器组合起 1.3.2 微处理器的基本结构 微型计算机中的核心部件——微处理器, 也叫CPU,它仅仅是把运算器和控制器组合起 来,集成在一块大规模或超大规模集成电路芯 片内,显然,这种微处理器本身并没有构成一 个完整的系统,所以,它不能进行独立工作和 执行程序。
一、微处理器的结构特点 微处理器由于制造工艺技术和生产成本 等方面的原因,在集成封装工艺上对管脚 数、芯片面积和器件工作速度等方面都受到限 制。 为了解决这些矛盾,在对微处理器结构 设计上采取了一系列的特殊措施。如: 采用单总线分时切换多用技术、数据双向 传送技术、累加器结构技术、管脚功能复用技 术以及三态电路技术等。
比如:为了节省封装面积采取了单总线结构设计。 单总线结构的特点是: * 结构简单、增减设备方便、可同时连接一 个或多个设备和功能器件; * 可实现A/D总线分时切换复用; 如:8086微处理器把地址总线和数据总线使用同 一组总线,其中地址总线A0~A15与数据总线D0 ~ D15共用管脚, A16~A19与4条状态线共用管脚; * 分时复用总线又可节约管脚;
设计了一条“读/写”控制线。当这条线为高电平时 表示数据总线处于输出状态,即: CPU内部数据 由数据总线输出到外部设备。为低电平时表示数 * 采用三态电路能抑制和隔离单总线上多个 设备在工作时引起相互干扰和发生冲突等现象。所谓三态,除了通常的逻辑“0”和逻辑“1”外,还有第三种状态,即高阻状态,相当于开路一样。 * 为解决数据总线双向传送问题,微处理器中 设计了一条“读/写”控制线。当这条线为高电平时 表示数据总线处于输出状态,即: CPU内部数据 由数据总线输出到外部设备。为低电平时表示数 据总线处于输入状态,即外部数据通过数据总线 输入到CPU内部。 以上措施对运行速度有所降低。
二、微处理器的基本结构 一种典型的单总线结构的微处理器逻辑结构图。 控制电路 SP AR ±i PC 累加器 通用寄存器 暂存器 标志 指令译码 PC 指令寄存器 累加器 通用寄存器 暂存器 标志 锁存器 专用寄存器 ALU
图中的累加器、暂存器、锁存器、ALU和标志寄存器组成算术逻辑部件,其他部分 包括程序计数器、指令寄存器、指令译码器和操作控制器等组成了控制器。 一条指令在微处理器中的执行过程, 包括一系列微操作,具体过程如下: ※ 程序计数器PC指出当前指令地址,并且把指 令地址放到地址总线上,然后PC←PC+i(i为当前指 令长度的字节数)。为取下一条指令或数据做好准 备;
※由数据总线将指令码从存储器中取出,送至指令寄存器,经指令译码,控制电路产生完成该指令的各种控制信号; ※取出该指令所需的操作数地址和数据( 它们可以从存储器、累加器或其他部件送来) ※执行该指令的操作,这些操作可能是一次内存读/写操作,或是一次算术/逻辑运算操作,也可能是一次输入/输出操作; ※检查有无其他控制信号(如中断请求信号等),并作出相应的处理;
※提供指令处理状态的标志信号、控制信号及定时信号等。 下面介绍各功能部件的功能作用: 1、算术逻辑部件的主要功能 (1)执行各种算术运算,给出运算结果值及相应的标志位。 (2)执行各种逻辑运算,并进行逻辑测试。 通常,一个算术操作产生一个运算结果,而一个逻辑操作则产生一个判决。
当一条指令对数据进行操作时,被操作的数据可能是一个,也可能是两个。如果是前者, 那么操作数一般在累加器中;若是后者,则一个数在累加器中,另一个数在寄存器或存储器中,并在操作前该数一定要送到暂存器中保存。 暂存器和累加器、锁存器的设立是为了适应微处理器内部采用的单总线结构。 由于ALU没有寄存功能,每次操作结果会立即送到内部总线上,从而占用了内部总线。所以当需要对两个数进行操作时,累加器存放一个,另一个送暂存器。操作后,累加器保存操作结果。
锁存器的设立,是为了防止ALU的输出通过累加器反馈到ALU的输入端。 标志寄存器用来保存运算结果标志: * 进位标志(C); * 运算结果溢出标志(O); * 运算结果为零标志(Z); * 运算结果的奇偶性标志(P) ; * 还有其他标志。 这些标志可作为外界对操作结果进行分的 依据,也可以用来判断程序是否要转移的条件。
2、主要寄存器 微处理器中的主要寄存器除上面提到的标志寄存器外,还有程序计数器、指令寄存器、地址寄存器、通用寄存器、专用寄存器、累加器、堆栈指针等。 (1)程序计数器(PC):存放要执行的指令的存储地址,所以,PC又称为指令计数器。 (2)指令寄存器(IR):用来保存当前正在执行的一条指令。 (3)地址寄存器(AR):用来保存当前CPU所要访问的内存单元的地址。
辑部件提供一个工作区,它可以保存一个操作 数,当运算完毕,其结果送回累加器,而累加 器中原有的内容将被破坏,在累加器中的数 (4)通用寄存器:通常这是一组寄存器,可由程序员指定为各种用途,通用寄存器可以是单独使用,也可以把两个寄存器连起来使用。 (5)累加器(AC):其功能是为算术逻 辑部件提供一个工作区,它可以保存一个操作 数,当运算完毕,其结果送回累加器,而累加 器中原有的内容将被破坏,在累加器中的数 据还可以在指令的控制下实现算术左、右移, 循环左、右移等。累加器是所有寄存器中最忙 碌的一个。
这么重要的东西,究竟是个什么东西呢?其实堆栈就是由一组寄存器或指定的一组存储单元组成的。前者称硬堆栈,后者称软堆栈。 3、堆栈和堆栈指针(SP) 堆栈是一个很抽象的名词,也是一个很重要的概念。堆栈为实现计算机的中断处理、中断服务是绝不可无的。 这么重要的东西,究竟是个什么东西呢?其实堆栈就是由一组寄存器或指定的一组存储单元组成的。前者称硬堆栈,后者称软堆栈。 所谓硬堆栈:就是由微处理器芯片中的一组寄存器组成的, 所谓软堆栈:是由系统中的RAM来实现的。
先进后出 或 后进先出 堆栈的作用是用来存放数据信息的,这些数据信息包括有: 1、中断断点保护和现场保护信息;(自动保护) 2、过程调用断点和现场保护信息;(自动保护) 3、程序员认为需要保护的有关信息; 特别注意!!:堆栈对保护信息的存取操作不同于存储器的存取操作,堆栈存取数据的操作规则是: 先进后出 或 后进先出
把数据压入堆栈的指令是:PUSH 把数据从堆栈中弹出的指令是:POP 将数据压入堆栈和从堆栈中弹出数据都是在栈顶进行。栈顶的地址由堆栈指针(SP)给定,并自动进行管理,即对地址指针是自动修改操作。 注意!:压入操作是先修改指针, 再 压入 数据; 弹出操作是先弹出数据, 再修改指针。
4、操作控制器及时序产生器 时序产生器由时钟信号源、节拍发生器及微操作电路组成。 控制电路可由组合逻辑电路组成,也可由微程序控制逻辑组成。微程序控制是指将机器指令的操作,分解为若干个更基本的微操作序列,并将有关的控制信息(微指令),以微码形式编成微指令,输入控制存储器中。这样,每条机器指令与一段微程序相对应,取出微指令就产生微命令,实现机器指令要求的信息传送和加工。现在大多数微处理器都用微程序控制技术。
控制器产生的控制信号包括运算器、输入/输出接口和存储器之间的同步信号,指令的读取、译码和执行信息,还有通过有关控制总线和外界进行通信的信号等。 1.3.3 总线 总线是一组信号线的集合,是一种在各模块之间传送信息的公共通道。在微型计算机系统中,利用总线实现芯片内部、印刷电路板各部件之间、机箱内各插件板之间、主机与外部设备之间或系统与系统之间的连接与通信。
总线是构成微型计算机应用系统的重要技术,总线设计好坏会直接影响整个微机系统的性能、可靠性、可扩展性和可升级性。由于总线在系统中的重要地位,微机系统的设计和开发人员先后推出许多种总线标准。如IBM PC/AT机上使用的ISA总线、PCI总线以及STD BUS等。
一、总线规范的基本内容 ※ 数据线 、地址线、读/写控制逻辑线、时钟线和电源线、地线等; (1)机械结构规范 : 规定模块尺寸,总线插头、边沿连接器等的规格。 (2)功能结构规范 : 确定引脚名称与功能,及相互作用的协议;功能结构规范是总线的核心;总线功能结构规范包括内容为: ※ 数据线 、地址线、读/写控制逻辑线、时钟线和电源线、地线等; (3)电气规范 规定信号逻辑电平、负载能力及最大额定值、动态转换时间等。
二、总线分类 按在系统的不同层次位置上分类,总线可分为4类。 1、片内总线 2、在板局部总线 片内总线在集成电路芯片内部,用来联结各功能单元的信息通路,例如CPU芯片中的内部总线,它是ALU、寄存器和控制器之间的信息通路。 2、在板局部总线 在印刷电路板上连接各芯片之间的公共通路,如CPU及其支持芯片与其局部资源之间的通道。
3、系统总线 系统总线又称为内总线,这是指模块式微 型计算机机箱内的底板总线,用来连接构成微 型机的各插件板。 4、通信总线 通信总线又称为外总线,它用于微机系统与系统之间、微机系统与外部设备或微机系统和仪器仪表之间的通信通道。这种总线数据传输方式可以是并行(如打印机)或串行。
就是逐条执行指令序列的过程。执行每一条指 令,都包括取指令和执行指令两个基本阶段。 1.3.4 微型计算机的工作过程 微机的工作过程就是执行程序的过程,也 就是逐条执行指令序列的过程。执行每一条指 令,都包括取指令和执行指令两个基本阶段。 取指令 指令1 指令译码 指令2 程序 取操作数 执行指令
应当指出的是,指令通常包括操作码和操作数两部分。操作码表示计算机执行什么具体操作,而操作数表示参加操作的数或操作数所在的地址。
1.3.5 一个程序执行过程 来看一个5+8等于多少的简单程序,先要编写 一段5+8的源程序,然后,通过汇编、连接得 到机器码,如下所示: 1.3.5 一个程序执行过程 为了进一步说明微机的工作过程,下面 来看一个5+8等于多少的简单程序,先要编写 一段5+8的源程序,然后,通过汇编、连接得 到机器码,如下所示: 10110000 00000101 MOV AL,5 00000100 00001000 ADD AL,8 11110100 HLT
该程序的机器码存放在存储器中如下所示: 地 址 指 令 代 码 0000 0000 1011 0000 0000 0001 0000 0101 0000 0010 0000 0100 0000 0011 0000 1000 1111 0100 MOV AL,5 ADD AL,8 HTL 开始执行时,PC=00H ,指向第一条指令的首址。 然后进入第一条指令的取指阶段,如下图所示:
PLA 1011000 ② +i i1 i2 ID 1011000 PC AL 00000000 IR 1011000 ① ⑦ 00000000 AR 10110000 DR ⑥ 00 1011 0000 01 0000 0101 02 0000 0100 03 0000 1000 04 1111 0100 ⑤ ③ ④ 读
② PLA +i I D PC AL 0000 0001 I R 0000 0101 ⑦ ① 0000 0001 AR 00000101 DR ⑥ 00 1011 0000 01 0000 0101 02 0000 0100 03 0000 1000 04 1111 0100 ⑤ ③ ④ 读
② PLA 00000100 +i I D PC 00000100 AL 0000 0010 I R 00000100 ① ⑦ 0000 0010 AR 00000100 DR ⑥ 00 1011 0000 01 0000 0101 02 0000 0100 03 0000 1000 04 1111 0100 ⑤ ③ ④ 读
② PLA +i I D PC ⑧ ⑦ AL 0000 0011 I R ⑨ 0000 1000 ① 0000 0011 AR 00001000 DR ⑥ 00 1011 0000 01 0000 0101 02 0000 0100 03 0000 1000 04 1111 0100 ⑤ ③ ④ 读