【计算机与UNIX汇编原理①】——计算机基础【原码 补码 反码 移码 BCD码 计算机系统的基本组成等】

本文详细介绍了计算机中的数制转换,包括二进制、八进制、十六进制与十进制间的转换,以及BCD码的概念。此外,还深入探讨了计算机中数据的编码方式,如ASCII码、数值型信息的码制(原码、反码、补码、移码)以及有符号数和无符号数的区别。文章还涵盖了计算机内部的溢出和进位机制,以及微型计算机系统的基本组成。
摘要由CSDN通过智能技术生成

🌳



记得有一首歌《推开 UNIX 的门》。 UNIX 换成 “世界”…🍋

文章中穿插了一些个人的理解,特别是绿色字体部分,如有笔误,烦请留言。

下一篇文章地址链接: 《【计算机与汇编原理②】——存储器系统【RAM ROM 高速缓冲存储器Cache】》.


一、计算机中的数制及转换:

1、计算机中的数制

  ● 数制:用来区分 数字大小不同 的一种表示方法。而且每一种进制里面都存在一种计算规则,比如十进制就是“逢十进一,借一当十”。

(1)十进制、二进制、十六进制、八进制

  ①十进制:日常习惯的一种表示,在编写程序的输入输出时使用较多。 “逢十进一,借一当十”
  在汇编语言编程中,十进制数直接表示。举个栗子, ( 150 ) 10 (150)_{10} (150)10 ( 150 ) D (150)_{D} (150)D 在汇编语言里面表示为 150 150 150 ,真实世界的大小也为 150 150 150。【注: D D D D e c i m a l Decimal Decimal 的缩写】


  ②二进制:计算机内部信息存储的一种表示,其运算、输入/ 输出都是二进制数。 “逢二进一”
  在汇编语言编程中,二进制数用 “XXXX B” 表示。举个栗子, ( 01000101 ) 2 (01000101)_{2} (01000101)2 ( 01000101 ) B (01000101)_{B} (01000101)B 在汇编语言里面表示为 01000101 B 01000101B 01000101B ,真实世界的大小为 69 69 69,计算规则和过程如下。【注: B B B B i n a r y Binary Binary 的缩写】

在这里插入图片描述
   ( 01000101 ) 2 = 0 × 2 7 + 1 × 2 6 + 0 × 2 5 + 0 × 2 4 + 0 × 2 3 + 1 × 2 2 + 0 × 2 1 + 1 × 2 0 = 64 + 4 + 1 = 69 (01000101)_{2}=0 \times 2^7+1 \times 2^6+0 \times 2^5+0 \times 2^4+0 \times 2^3+1 \times 2^2+0 \times 2^1+1 \times 2^0=64+4+1=69 (01000101)2=0×27+1×26+0×25+0×24+0×23+1×22+0×21+1×20=64+4+1=69


  ③十六进制数:当一串二进制数很长时,书写、阅读不方便,常改用等值的十六进制数表示。“逢十六进一,借一当十六”。而且用十六进制来表述计算机里面的数据,比起二进制,可以节省更多的资源空间。
  在汇编语言编程中,16进制数用 “XXXX H” 表示。举个栗子, ( 55 ) 16 (55)_{16} (55)16 ( 55 ) H (55)_{H} (55)H 在汇编语言里面表示为 55 H 55H 55H ,真实世界的大小为 85 85 85 ( F F F F ) 16 (FFFF)_{16} (FFFF)16 ( F F F F ) H (FFFF)_{H} (FFFF)H 在汇编语言里面表示为 F F F F H FFFFH FFFFH ,真实世界的大小为 65535 65535 65535【注: H H H H e x a d e c i m a l Hexadecimal Hexadecimal 的缩写】
  注: ( F F F F ) 16 = 15 × 1 6 3 + 15 × 1 6 2 + 15 × 1 6 1 + 15 × 1 6 0 = 65535 (FFFF)_{16}=15 \times 16^3+15 \times 16^2+15 \times 16^1+15 \times 16^0=65535 (FFFF)16=15×163+15×162+15×161+15×160=65535


  ④八进制数:在微型(计算)机中一般不采用八进制数。但数字电路、计算机组成原理课程中对它都有所讲解。表示规则和前面三种类似。


(2)BCD码

  那问题来了,我们在现实生活中习惯了用十进制表示数字,但计算机更喜欢用二进制表示,那么计算机怎么协调两者之间的差异的呢?

  在计算机中表示十进制数的方法是用 四位二进制数 代表 一位十进制数 ,又称BCD码。

  BCD码有多种形式,最常用的是8421BCD码,它是用 4位二进制数 对 1位十进制数 的每一位进行编码,这 4位二进制码的值 就是被编码的 1位十进制数的值 。示意图如下:

在这里插入图片描述



2、计算机中的数制转换

(1)二、八、十六进制数→十进制数

  算法:每位数字和该位的权值相乘,再累加求和。

  如: ( 1101.11 ) 2 = ( ? ) 10 (1101.11)_2=(?)_{10} (1101.11)2=(?)10
  解: 1 × 2 3 + 1 × 2 2 + 0 × 2 1 + 1 × 2 0 + 1 × 2 - 1 + 1 × 2 - 2 1×2^3+1×2^2+ 0×2^1 + 1×2^0+1×2^{-1}+1×2^{-2} 1×231×220×211×201×211×22
    = 8 + 4 + 0 + 1 + 0.5 + 0.25 = 8 + 4 + 0 + 1 + 0.5 + 0.25 =84010.50.25
    = ( 13.75 ) 10 =(13.75 )_{10} =(13.75)10

  如: ( 29 A F ) 16 = ( ? ) 10 (29AF)_{16} = ( ? )_{10} (29AF)16=(?)10
  解: 2 × 1 6 3 + 9 × 1 6 2 + 10 × 1 6 1 + 15 × 1 6 0 2×16^3+9×16^2+ 10×16^1+ 15×16^0 2×1639×16210×16115×160
    = 8192 + 2304 + 160 + 15 = 8192 + 2304 + 160 + 15 =8192230416015
    = ( 10671 ) 10 =(10671)_{10} =(10671)10


(2)二进制数→十六进制数

  算法:四位二进制数为一组,每组用等值的十六进制替换。

  如: ( 101011.11 ) 2 = ( 10 , 1011.1100 ) 2 = ( 2 B . C ) 16 (101011.11)_{2}=(10,1011.1100)_{2} =(2B.C)_{16} (101011.11)2(10,1011.1100)2=(2B.C)16


(3)十六进制数→二进制数

  算法:一位十六进制数用等值的四位二进制数替换。

  如: ( 17 E . 58 ) 16 = ( 0001 , 0111 , 1110.0101 , 1000 ) 2 (17E.58)_{16}=(0001,0111,1110.0101,1000)_{2} (17E.58)160001,0111,1110.0101,1000)2


(3)十进制数→二进制数

  ① 十进制整数→二进制数
  算法:除2取整,直到商为零为止,将余数倒叙输出。

  如: ( 11 ) 10 = ( ? ) 2 (11)_{10} = ( ? )_{2} (11)10=(?)2
在这里插入图片描述

  所以, ( 11 ) 10 = ( 1011 ) 2 (11)_{10}=(1011)_2 (11)10=(1011)2


  ② 十进制小数→二进制数
  算法:乘2取整,直到乘积的小数部分为0时止,再将整数部分顺序输出。

  如: ( 0.8125 ) 10 = ( ? ) 2 (0.8125)_{10} = ( ? )_{2} (0.8125)10=(?)2
在这里插入图片描述

  所以, ( 0.8125 ) 10 = ( 0.1101 ) 2 (0.8125)_{10}=(0.1101)_2 (0.8125)10=(0.1101)2




二、计算机中数据的编码(包含 码制 内容)

1、非数值型信息编码方法(ASCII码)

  在计算机中除了数值之外,还有一类非常重要的数据,那就是字符

  计算机常用的输入/输出设备有键盘、显示器、打印机,它们处理的数都是人熟悉的字符,有英文的大小写字母,数字符号(0,1,…, 9)以及其他常用符号(如:“,”、“。”、“%”、“@” 等)。

  在计算机中,这些字符都是用二进制编码的形式表示,每一个字符被赋予一个唯一固定的二进制编码。 目前,一般都是采用美国标准信息交换码(ASCII)。

  它使用七位二进制编码来表示一个字符。由于用七位码来表示一个字符,故该编码方案中共有128个符号 ( 2 7 = 128 ) (2^7=128) (27=128)

在这里插入图片描述

  举个两个栗子:
  键入“1”,实际写入键盘存储区的是 ( 31 ) 16 (31)_{16} (31)16【即 ( 49 ) 10 (49)_{10} (49)10,即 ( 0011 , 0001 ) 2 (0011,0001)_2 (0011,0001)2
  键入“A”, 实际写入键盘存储区的是 ( 41 ) 16 (41)_{16} (41)16【即 ( 65 ) 10 (65)_{10} (65)10,即 ( 0100 , 0001 ) 2 (0100,0001)_2 (0100,0001)2

  重点补充,汇编语言中要牢记以下18个字符的ASCII码:⭐️ ⭐️ ⭐️
    ①0~9的ASCII码为: ( 30 ) 16 (30)_{16} (30)16 ( 39 ) 16 (39)_{16} (39)16 ,即 30 H 30H 30H 39 H 39H 39H
    ②A~F的ASCII码为: ( 41 ) 16 (41)_{16} (41)16 ( 46 ) 16 (46)_{16} (46)16 ,即 41 H 41H 41H 46 H 46H 46H
    ③回车符的ASCII码为: ( 0 D ) 16 (0D)_{16} (0D)16, 即 0 D H 0DH 0DH
    ④换行符的ASCII码为: ( 0 A ) 16 (0A)_{16} (0A)16, 即 0 A H 0AH 0AH


2、数值型信息编码方法(也称 码制)

  ● 码制:用来在微型计算机机领域中区分 有符号数 的一种表示方式。
  补充:计算机只能识别0和1组成的 数或代码,全部符号数的字符也只能用0和1来表示。

(1)真值、机器数、字长

  真值:用“+”表示正数,用“-”表示负数。
  例如:“+00000101” 表示 “+5” ,“-00000101” 表示 “-5”

  机器数:把二进制数的最高位定义为符号位,其余位为数值位。符号位为 0 表示正数,符号位 1 表示负数。符号位和数值位在一起表示一个数,称为机器数。如下图所示:

在这里插入图片描述
  例如:“00000101” 表示 “5” ,“10000101” 表示 “-5”

  字长:计算机在同一时间内处理二进制数的位数。对有符号数来讲,字长指包括符号位在内,一个二进制数占有的位数。
  如:字长 n = 8 n=8 n=8 的二进制数,除了符号位,数值部分为 7 位。


(2)原码、补码、反码、移码

  ● 由于数值部分的表示方法不同,有符号数可有三种表示方法,即机器数有三种形式,分别叫做原码、反码和补码。最后我再补充移码的概念。

  原码表示的有符号数,最高位为符号位,数值位部分就是该数的绝对值。
  例如:假设某机器为8位机,即一个数据用8位 (二进制)来表示。
  则: +2(即2H) 的原码机器数为 00000010;-23(即-17H)的原码机器数为 10010111

  其中最高位是符号位,后7位是数值位。
   x = + 5 x=+5 x=+5 字长为 8 位的原码机器数为 [ x ] 原 = 0   0000101 [x]_原=0\,0000101 [x]=00000101
   x = − 5 x=-5 x=5 字长为 8 位的原码机器数为 [ x ] 原 = 1   0000101 [x]_原=1\,0000101 [x]=10000101

   x = + 0 x=+0 x=+0 字长为 8 位的原码机器数为 [ x ] 原 = 0   0000000 [x]_原=0\,0000000 [x]=00000000
   x = − 0 x=-0 x=0 字长为 8 位的原码机器数为 [ x ] 原 = 1   0000000 [x]_原=1\,0000000 [x]=10000000


  反码表示的也是有符号数,反码通常是用来由原码求补码或者由补码求原码的过渡码。反码跟原码是正数时,一样;负数时,反码就是原码符号位除外,其他位按位取反。(即1变0,0变1)。
  例如:+5 的反码机器数为 00000101
      -23 的反码机器数为 11101000

   x = + 5 x=+5 x=+5 字长为 8 位的反码机器数为 [ x ] 反 = 0   0000101 [x]_反=0\,0000101 [x]=00000101
   x = − 5 x=-5 x=5 字长为 8 位的反码机器数为 [ x ] 反 = 1   1111010 [x]_反=1\,1111010 [x]=11111010

   x = + 0 x=+0 x=+0 字长为 8 位的反码机器数为 [ x ] 反 = 0   0000000 [x]_反=0\,0000000 [x]=00000000
   x = − 0 x=-0 x=0 字长为 8 位的反码机器数为 [ x ] 反 = 1   1111111 [x]_反=1\,1111111 [x]=11111111

  补码表示的有符号数,对于正数来说同原码、反码一样,但为负数时,它的数值位部分为原码的绝对值按位取反后末位加 1 。
  例如:+23 的补码为 00010111
      -23 的原码为 10010111
      -23 的反码为 11101000
      -23 的补码为 11101001
补 码 = { 原 码 ( 也 等 于 反 码 ) , 当 表 示 正 数 时 反 码 + 1 , 当 表 示 负 数 时 补码=\begin{cases}原码(也等于反码)&,当表示正数时\\反码+1&,当表示负数时\end{cases} ={()+1,,

   x = + 5 x=+5 x=+5,字长为 8 位的补码机器数为 [ x ] 补 = 0   0000101 [x]_补=0\,0000101 [x]=00000101
   x = − 5 x=-5 x=5,字长为 8 位的补码机器数为 [ x ] 补 = 1   1111011 [x]_补=1\,1111011 [x]=11111011

   x = + 0 x=+0 x=+0,字长为 8 位的补码机器数为 [ x ] 补 = 0   0000000 [x]_补=0\,0000000 [x]=00000000
   x = − 0 x=-0 x=0,字长为 8 位的补码机器数为 [ x ] 补 = 0   0000000 [x]_补=0\,0000000 [x]=00000000

  补码,反码都可以简化运算。
  但由于反码运算有循环进位问题。而补码只有一个 0,且运算更简便,所以为计算机内部常用。况且,你可以发现,+0 和 -0 的补码机器数是一样的,而反码不一样。


  移码:也是表示有符号数的,主要是用来针对数的比较大小的。
  比如说,你要比较 -1 和 1 的大小
  在计算机中,它俩分别“1000 0001”和“0000 0001”的形式(假设 8 位字长)存储。
  如果按照正常思路,一位一位地进行比较,那将得出 1000 0001 > 0000 0001,但显然这样不对。所以移码的作用就来了。
  移码怎么计算: 移 码 = 补 码 的 符 号 位 取 个 反 移码 = 补码的符号位取个反 =
  举个栗子: -1 的补码是 “1111 1111” ,那他的移码是“0111 1111”。而 1 的补码是“0000 0001” ,那他的移码是 “1000 0001” 现在比较大小的话,显然,0111 1111 小于 1000 0001,即 -1 < 1 。


(3)有符号数和无符号数

  ● 计算机处理的数据,包括有符号数和无符号数两类。有符号数用补码表示,其最高位代表符号。

  问:什么是无符号数?
  答:无符号数是相对于有符号数而言的。无符号数的最高位不代表符号,而是数值的一部分。

  一个数是无符号数,还是有符号数,其物理意义是由程序员定义的。 即:存放在计算机内部的一个数,其最高位实际表示符号位还是数值位,由程序员决定。因此在对其操作时,需要相应使用正确的针对有符号数或无符号数操作的指令。

  比如:数 N = ( 1111 , 1111 ) 2 N=(1111,1111)_2 N=(11111111)2 ,若它是有符号补码数,则其值为 “-1” ;若它是无符号数,则其值为 “255”。


小 结 : { ① 机 器 数 比 真 值 数 多 一 个 符 号 位 ② 正 数 的 原 、 反 、 补 码 与 真 值 数 相 同 ③ 负 数 原 码 的 数 值 部 分 与 真 值 数 相 同 ; 负 数 反 码 的 数 值 部 分 为 真 值 数 按 位 取 反 ; 负 数 补 码 的 数 值 部 分 为 真 值 数 按 位 取 反 末 位 加 1 ④ 没 有 负 零 的 补 码 , 或 者 说 负 零 的 补 码 与 正 零 的 补 码 相 同 ⑤ 由 于 补 码 表 示 的 机 器 数 更 适 合 运 算 , 为 此 , 计 算 机 系 统 中 负 数 一 律 用 补 码 表 示 ⑥ 机 器 数 的 数 值 范 围 ( 设 机 器 数 字 长 = n 位 , 用 来 表 示 整 数 ) { 原 码 的 真 值 范 围 为 − ( 2 n − 1 − 1 )    ~   + ( 2 n − 1 − 1 ) 反 码 的 真 值 范 围 为 − ( 2 n − 1 − 1 )    ~   + ( 2 n − 1 − 1 ) 补 码 的 真 值 范 围 为 − 2 n − 1    ~   + 2 n − 1 − 1 无 符 号 数 的 真 值 范 围 为    0    ~   + 2 n − 1 小结:\begin{cases}①机器数比真值数多一个符号位\\ ②正数的原、反、补码与真值数相同\\ ③负数原码的数值部分与真值数相同;负数反码的数值部分为真值数按位取反; 负数补码的数值部分为真值数按位取反末位加1\\ ④没有负零的补码,或者说负零的补码与正零的补码相同\\ ⑤由于补码表示的机器数更适合运算,为此,计算机系统中负数一律用补码表示\\ ⑥机器数的数值范围(设机器数字长=n位,用来表示整数)\begin{cases}原码的真值范围为 -(2^{n-1} -1) \,\,~ \, +(2^{n-1}-1)\\反码的真值范围为 -(2^{n-1} -1) \,\,~ \, +(2^{n-1}-1)\\补码的真值范围为 -2^{n-1} \,\,~ \, +2^{n-1} -1\\无符号数的真值范围为 \, \, 0 \, \,~ \, +2^n -1 \end{cases} \end{cases} ;;1(=n,)(2n11)+(2n11)(2n11)+(2n11)2n1+2n110+2n1

  对于 举两个栗子:
  设:8 位补码数为1000,0000~ 0111,1111
  则:十进制真值数为 -128~+127

  设:16 位补码数为
  1000,0000,0000,0000~0111,1111,1111,1111
  则:十进制真值数为 -32768~+32767

  补充知识:在计算机中数据用补码表示,因为补码可以统一符号位与数值位的运算,同时解决了+0、-0 问题,并将空出来的二进制原码 1000 0000 (原码的 “1000 0000” 表示 “-0” )表示为 -128,这也符合自身逻辑意义的完整性。因此八位二进制数表示范围为-128 ~ +127。


(4)溢出和进位

  ● 进位:运算后,最高位向更高位的进位值。
  ● 溢出:运算结果超出了运算器所能表示的范围。

  <1> 计算机内部判断溢出的方法(溢出判断电路实现):

  首先:
    ① 计算机一律把操作数看成是有符号数
    ②最高位的进位值保存在 “进位标志寄存器” 中,有进位则进位标志为1 (即CF = 1,其中 “CF” 来自于 “Carry full adder” )
    ③加数,被加数的最高位相同,且和结果的最高位相异,则溢出标志为1(即OF = 1,其中 “OF” 来自于 “Overflow full adder”)

  假设:
     [ X ] 补 = X n − 1 X n − 2 X n − 3 … X 0 [X]_补= X_{n-1}X_{n-2}X_{n-3}…X_0 [X]=Xn1Xn2Xn3X0
     [ Y ] 补 = Y n − 1 Y n − 2 Y n − 3 … Y 0 [Y]_补=Y_{n-1}Y_{n-2}Y_{n-3}…Y_0 [Y]=Yn1Yn2Yn3Y0

  现在我们要计算 X + Y =    ? X + Y = \,\,? X+Y=?
     [ Z ] 补 = [ X ] 补 + [ Y ] 补 = Z n − 1 Z n − 2 Z n − 3 … Z 0 [Z]_补=[X]_补+[Y]_补 = Z_{n-1}Z_{n-2}Z_{n-3}…Z_0 [Z]=[X]+[Y]=Zn1Zn2Zn3Z0

  其中 X n − 1 X_{n-1} Xn1, Y n − 1 Y_{n-1} Yn1, Z n − 1 Z_{n-1} Zn1 分别表示加数、被加数、和的符号位。( 其中 n = 8 n = 8 n=8 )
  分别用 X s X_s Xs Y s Y_s Ys Z s Z_s Zs表示,则 O F = X s ⋅ Y s ⋅ Z s ‾ + X s ‾ ⋅ Y s ‾ ⋅ Z s OF = X_s·Y_s ·\overline{Z_s} + \overline{X_s} ·\overline{Y_s} ·Z_s OF=XsYsZs+XsYsZs


  <2> 程序员判断溢出的方法:
    如果参与运算的数是无符号数,则判断进位标志。若进位标志=1,表示溢出。
    如果参与运算的数是有符号数,则判断溢出标志。若溢出标志=1,表示溢出。

  例1:
在这里插入图片描述

  两个字长 n = 8 n=8 n=8 的数相加,“和” 的红色部分CF=0表示进位,“和” 的蓝色部分用于计算溢出位。【 O F = 0 ⋅ 0 ⋅ 1 ‾ + 0 ‾ ⋅ 0 ‾ ⋅ 1 = 1 OF=0·0·\overline{1}+\overline{0}·\overline{0}·1=1 OF=001+001=1

  若加数、被加数为无符号数,因为CF=0,则结果 = 10100101 = 165 ( √ √ )
  若加数、被加数有符号数,因为OF=1,则结果 = -91 ( × × × )

  例2:
在这里插入图片描述
  若加数、被加数为无符号数,因为 CF=1,则结果 = 91 ( × × × )
  若加数、被加数有符号数,因为 OF=1,则结果 = +91 ( × × × )
  【 O F = 1 ⋅ 1 ⋅ 0 ‾ + 1 ‾ ⋅ 1 ‾ ⋅ 0 = 1 OF=1·1·\overline{0}+\overline{1}·\overline{1}·0=1 OF=110+110=1




三、微型计算机系统的基本组成

1、微型计算机的系统组成

  ● 硬件:泛指设备而言。
  ● 软件:泛指程序而言。
  ● 微型计算机的系统简称 “微机系统”,由微型计算机、显示器、输入输出设备、电源及控制面板等组成的计算机系统。配有操作系统、高级语言和多种工具性软件等。

  计算机组成的五大部件:
   ①控制器(Control):是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。

  ②运算器(Datapath):运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。

  ③存储器(Memory):存储器的功能是存储程序、数据和命令等信息,并在需要时提供这些数据。

  ④输入设备(Input system):输入设备的作用是将程序、控制命令等数据信息输入到计算机。常见的输入设备有键盘、鼠标等。

  ⑤输出设备(Output system):输出设备的作用是将程序结果、数据符号等数据信息输出出来。常见的输出设备有显示屏、打印机等。

  补充:输入设备与输出设备合你为外部设备,简称外设。


2、微型机的软件结构

  泛指程序而言:
  系统软件(操作系统,程序设计语言及其编辑、编译软件……)
  应用软件:为解决某一实际问题而编制的软件

3、微型机的硬件结构

在这里插入图片描述
  ①CPU:即微处理器,是超大规模集成电路,内部集成了运算器、控制器、寄存器组,存储器管理部件

  ②存储器:也称内存或主存,用来存放程序、数据,在《存储器系统》章节将进行详细讲解。

  ③I/O接口:是CPU和外部设备交换信息的“中转站”。

  ④I/O设备:如键盘、鼠标、显示器、打印机。

  ⑤总线:总线是CPU与存储器、I/O接口交换信息的公共通道。
  按总线上信息传输的物理意义, 总 线 分 为 : { 地 址 总 线 : 用 于 传 输 C P U 的 地 址 信 号 并 访 问 存 储 器 或 访 问 I / O 端 口 的 地 址 信 号 数 据 总 线 : 用 于 传 输 C P U 的 数 据 、 读 / 写 内 存 数 据 、 读 写 I / O 端 口 数 据 控 制 总 线 : 用 于 传 输 C P U 发 出 的 控 制 命 令 、 接 受 外 部 向 C P U 提 出 的 请 求 总线分为:\begin{cases}地址总线: 用于传输CPU的地址信号并访问存储器或访问I/O端口的地址信号\\数据总线: 用于传输CPU的数据、读/写内存数据、读写I/O端口数据 \\ 控制总线: 用于传输CPU发出的控制命令、接受外部向CPU提出的请求 \end{cases} 线线CPU访访I/O线CPU/I/O线CPUCPU

  补充:“AB” 是 “Address bus” 的缩写。“DB” 是 “Data bus” 的缩写。“CB” 是 “Control bus” 的缩写。
      “读”:即输入,信息从外部→CPU。“写”:即输出,信息从CPU→外部。“读内存”:从存储器某单元取信息→CPU。“写内存”:信息写入存储器某单元

  地址总线通常是单向总线,数据总线通常是双向总线,大部分控制线是单向,少数是双向。 图中只花了 “3条” 是习惯画法,其实每一条都有若干根。为了灵活地扩展系统的功能,总线在主板上通过总线扩展插槽向外引出,在《总线》章节将进行详细讲解。

4、计算机的工作过程

在这里插入图片描述

  工作环境:程序由多条有逻辑关系的指令组成,指令的长度不等(一般为1~4字节),指令是程序员发出的,计算机能识别的,通知CPU执行某种操作的命令。
  • 计算机的工作就是逐条执行由指令构成的程序。
  • 程序和数据均以二进制代码的形式不加区别地存放在存储器中,存放位置由地址指定,地址码也是二进制形式。

  工作过程:计算机按程序的流程自动地连续取出指令并执行之。
  • 为实现自动连续地执行程序,控制器中设置了一个程序计数器PC,它可根据指令的长度自动增量(总是指向下一条指 令)。只要给出程序中第一条指令的地址,控制器就可依据存储程序中的指令顺序周而复始地取指令、译码、执行,直到完成全部指令操作为止,即控制器通过指令流的串行驱动实现程序控制。

   核 心 步 骤 : { ① 取 指 令 ② 分 析 指 令 ③ 看 指 令 要 求 , 是 否 取 操 作 数 ④ 执 行 指 令 ⑤ 返 回 结 果 核心步骤:\begin{cases}①取指令\\ ②分析指令 \\③看指令要求,是否取操作数 \\④执行指令 \\ ⑤返回结果 \end{cases}




五、参考附录:

[1] 《微型计算机原理与接口技术(慕课板)》
清华大学出版社

[2] 《汇编语言程序设计(第2版)》

下一篇文章地址链接: 《【计算机与汇编原理②】——存储器系统【RAM ROM 高速缓冲存储器Cache】》.


正在施工中…🌳 🌳

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一支王同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值