「期末」微机原理复习速成(上)

前言:公号 「编程有料」后台回复 “大礼包” 即可获取近1000本助力你编程之路的电子书

期末微机原理超强基础复习(上)

    • 1,冯. 诺依曼思想
    • 2,计算机系统的软硬件组成与层次结构
    • 3,计算机中编码、数制及转换
      • 数制的转换方法
      • 简单总结
    • 4,运算中的溢出
      • 检测方法:
    • 5,机器数的表示和运算
      • 表示机器数时考虑的三个主要因素:
        • 1,机器数的范围
        • 2,机器数的符号
        • 3,机器数中小数点的位置
      • BCD码
    • 6,8086、8088的内部结构和外引线
        • 1,CPU的功能
        • 2,CPU的基本组成
        • 3,引脚初识
    • 7,8086/8088工作模式
    • 8,总线BUS
        • 1,总线的定义
        • 2,总线标准
        • 3,三大总线
    • 9,8086/8088CPU的寄存器
        • 1,通用寄存器组
        • 2,指针与变址寄存器
        • 3,段寄存器
        • 4,标志寄存器
    • 10,总线操作及时序
        • 1,操作控制器
        • 2,时序产生器
        • 3,指令周期的基本概念
    • 11,指令系统与汇编语言程序设计
        • 1,什么是汇编语言
        • 2,程序、指令、指令系统、指令格式
        • 3,对操作数的寻址方式
          • 常见的寻址方式
          • 常见数据寻址方式小总结
      • 4,常用指令
        • 1,传送指令MOV
        • 2,进栈指令PUSH
        • 3,出栈指令POP
        • 4,数据交换指令XCHG
        • 5,累加器专用传送指令:输入指令IN/输出指令OUT
        • 6,地址传送指令
        • 7,算术运算指令
          • 1,加法指令
          • 2,减法指令
          • 3,乘法指令
          • 4,除法指令

1,冯. 诺依曼思想

  • (1)采用二进制代码表示数据和指令

计算机是处理信息的工具,所处理的信息称为数据。计算机的具体工作表现为执行程序,而程序的最终可执行形态是指令序列,即若干用数字代码表示的机器指令。

数据和指令都采用二进制表示,则它们在外形上并无区别,都是由0或1组成的代码序列,只是各自约定的含义不同而已。

  • (2)采用存储程序工作的方式

a,实现编制程序

b,将程序存储于计算机的存储器之中

c,计算机在运行时将自动地连续地从存储器中依次取出指令加以执行。

  • (3)硬件系统由五大部分构成

计算机硬件系统由运算器、存储器、控制器、输入设备、输出设备五大部件构成。
「期末」微机原理复习速成(上)_第1张图片

2,计算机系统的软硬件组成与层次结构

  • (1)硬件系统

计算机的硬件是指系统中可以触摸到的物理设备实体。

  • (2)软件系统

计算机软件通常泛指各类程序和文件。由于它们在计算机中的表示是一些不能直接接触到的二进制信息,所以称为软件。软件可分为系统软件(操作系统、语言处理程序)和应用软件(通用软件、用户程序)。

3,计算机中编码、数制及转换

  • 二进制的表示:仅有两个计数符号:0,1。加法规则:“逢2进1,借1当2”。
  • 十六进制的表示:“逢16进1,借1当16”。

数制的转换方法

1,任意进制与十进制整数之间的相互转换方法:

任意进制转换成十进制的方法是:按权展开后相加即可。而十进制整数转换为任意进制整数的方法较为复杂:首先用基数除十进制数可得商及余数,此余数为任意进制代码的最低位。再用基数除该商数,又可得商数和余数,则此余数为次低位的任意任意进制代码。再用同样的方法继续用基数除下去,直到商为零为止。

如下,举一个将十进制数3转换为二进制的例子:

3除以2得商为1,余数为1,则余数1为二进制代码的最低位。然后再用2除1,可得商为0,余数为1,故最终结果为 “11B”。(小学学的除和除以的区别可别忘记了)

2,十进制小数转换为任意进制小数方法:

不断用基数去乘要转换的十进制小数,将每次所得到的整数部分依次计为X1,X2…,若乘积的小数部分最后能为0,那么最后一次乘积的整数部分计为Xm,则将结果书写为0.X1X2…Xm.(注意:一个十进制小数不一定能完全准确地转换为一个二进制小数)

如下,举一个将一个十进制小数0.25转换为二进制小数的例子:

0.25*2=0.50,其所得的整数部分为0,计为X1.

0.5*2=1.0,其小数部分能为0,即最后一次乘积的整数部分为1,计为X2

则转换的最终结果为:0.01B。同时,你可以试一下将十进制数0.75转换成二进制数,或许你会觉得上面的结论有问题,不过结论是没有问题的,关键是我们要理解取整的含义。

简单总结

1,十进制整数转换成其他进制整数:除R取余,R为基数(把余数写成二进制数时,注意顺序:从下到上,从左到右)

2,十进制小数转换成其他进制小数:乘R取整,R为基数(从上到下取整,从左到右写数)

4,运算中的溢出

在计算机中,若采用定点小数,数的表示范围为|X|<1,如果出现运算结果超出数的表示范围的现象,就称为溢出。

  • 两个正数相加,结果为负(即:大于机器所能表示的最大正数),称为上溢。
  • 两个负数相加,结果为正(即:小于机器所能表示的最小负数),称为下溢。

例如:x=+0.1011,y=+0.1001,求x+y。

得出各自的补码后相加,发现结果为1.0100,即两正数相加,结果为负,显然错误。

检测方法:

  • 1,双符号位法(变形补码法)

用两个相同的符号位表示一个数的符号,左边第一位为第一符号位,是结果的真正符号位,相邻的为第二个符号位。定义双符号位的含义为:00表示正号;11表示符号;01表示正向溢出;10表示负向溢出。

还是根据上面那个例子:[X]补=00.1011,[Y]补=00.0111,则计算出来的结果为01.0010,表示的是正向溢出。

对于原码、反码和补码的知识,可以参考这篇文章:一文带你搞懂原码、反码和补码

  • 2,单符号位操作检测方法

当操作数中的加数与被加数符号相同时,若运算结果的符号与操作数的符号不一致,表示溢出;否则,表示没有溢出。而当加数和被加数符号不同时,相加运算的结果是绝对不会溢出的。

5,机器数的表示和运算

真值:正、负号加二进制绝对值。例:-001011B、+101101B

机器数:在机器中使用的连同数符一起数码化的数。例:1001011B、0101101B

表示机器数时考虑的三个主要因素:

1,机器数的范围

字长为8位,无符号整数的最大值是(1111 1111)B=(255)D,此时机器数的范围是0~255.

2,机器数的符号

在算术运算中,数据是有正有负的,将这类数据称为带符号数。为了在计算机中正确地表示带符号数,通常规定每个字节的最高位为符号位,并用0 表示正数,用1 表示负数。

3,机器数中小数点的位置

在机器中,小数点的位置通常有两种约定:

一种规定小数点的位置固定不变,这时的机器数称为“定点数”。

另一种规定小数点的位置可以浮动,这时的机器数称为“浮点数”。

下面一起了解下浮点表示法:

浮点表示法与数学中的科学计数法类似,是指计算机中的小数点位置不是固定的,或者说是“浮动的”。对于任何一个二进制数N都可以表示为:

  • N=2±E ×(±M)
  • 式中,M称为N的尾数,是一个纯小数,E是数N的阶码,是一个整数。

具体例子看下图及其标注:
「期末」微机原理复习速成(上)_第2张图片

BCD码

BCD(Binary Code Decimal)码又称为“二—十进制编码”,专门用来解决用二进制表示十进制数的问题。最常用的是8421编码,其方法是4位二进制数表示1位十进制数,自左至右每一位对应的位权是8,4,2,1,如果按位权求和,和数就等于该数码所对应的十进制数。

例如,二进制数1000 1001B
采用BCD码表示为十进制数89D。

6,8086、8088的内部结构和外引线

程序告诉计算机:应该逐步执行什么操作;在什么地方找到用来操作的数据,结果存到何处等。

中央处理器是控制计算机自动完成取出指令和执行指令任务的部件,简称为CPU。

1,CPU的功能

CPU具有指令控制、操作控制、时间控制和数据加工(对数据进行算术运算和逻辑运算处理)的作用。

2,CPU的基本组成

「期末」微机原理复习速成(上)_第3张图片

  • Cache(高速缓冲存储器),是为了解决CPU和主储存器之间速度匹配的问题而设置的。
  • 运算器 是数据加工处理部件,所进行的全部操作由控制器发出的控制信号指挥:执行所有的算术运算和逻辑运算,并进行逻辑测试。
  • 控制器 完成对整个计算机系统操作的协调与指挥:

1)控制机器从内存中取出一条指令,并指出下一条指令在内存中的位置;

2)对指令进行译码,并产生相应的操作控制信号,送往相应的部件,启动规定的动作;

3)指挥并控制CPU、内存与输入/输出(I/O)设备之间的数据流动方向。

3,引脚初识

「期末」微机原理复习速成(上)_第4张图片

7,8086/8088工作模式

8086/8088工作模式完全是由硬件决定的。为了尽可能适应各场合,在设计8086/8088cpu芯片时,就使得它们在两种模式下工作,即最大模式和最小模式。

所谓最小模式,就是在系统中只有8086/8088一个微处理器。在这种系统中,所有的总线控制信号都直接由8086/8088产生,因此,系统中的总线控制逻辑电路被减到最少。据此,也不难理解什么是最大工作模式了。

同时,在最大模式下,为了解决主处理器和协处理器之间的协调工作问题和对总线的共享控制问题,在多处理器系统中必须采用总线仲裁器来确定每一个时刻的总线使用权赋予优先级别较高的处理器使用。

8,总线BUS

1,总线的定义

微机中各模块、各设备间传输信息的一组公用信号线。

2,总线标准

在总线连接和传输信息时应该遵循的协议和规范。包括:时钟、结构、电气、机械等

3,三大总线

CPU通过什么将地址、数据和控制信息传到存储器芯片中呢?就是地址线、数据线和控制线。

9,8086/8088CPU的寄存器

1,通用寄存器组

8086/8088CPU指令执行部件EU中有8个16位通用寄存器,它们可分为两组。一组由AX,BX,CX和DX构成,称作通用数据寄存器,可用来存放16位的数据或地址。也可以把它看做8个8位寄存器来使用,就是将每个通用寄存器的高半部分和底半部分分开。如下图:

「期末」微机原理复习速成(上)_第5张图片

  • AX :称为累加器,是算术运算时使用的主要寄存器,所有外部设备的输入输出指令只能使用AL或AX作为数据寄存器。
  • BX:称为基址寄存器,它可以用作数据寄存器,在访问存储器时,可以存放被读写的存储单元的地址,具有双重功能的寄存器。
  • CX:称为计数寄存器,它可以用作数据寄存器,在字符串操作、循环操作和移位操作时用作计数器。
  • DX:称为数据寄存器,它可以用作数据寄存,在乘除法中作为辅助累加器,在输入输出操作中存放接口的地址。

2,指针与变址寄存器

4个16位寄存器,主要用来存放操作数的偏移地址(即操作数的段内地址)如下图:

「期末」微机原理复习速成(上)_第6张图片

  • SP:称为堆栈指针寄存器,在堆栈操作中存放栈顶的偏移地址。
  • BP:称为基址指针寄存器,常用做堆栈区的基地址寄存器。
  • SI:称为源变址寄存器,在字符串操作中存放源操作数的偏移地址。例如:传送1字节数据后把地址加1,为下次传送做好准备,变址寄存器因此得名。
  • DI:称为目的变址寄存器,主要用来存放地址,在字符串操作中存放目的操作数的偏移地址。

3,段寄存器

4个16位段寄存器如下图:
「期末」微机原理复习速成(上)_第7张图片

4,标志寄存器

8086/8088CPU中设置了一个16位标志寄存器FLAGS,用来存放运算结果的特征和控制标志。

存放9个标志位如下图:

在这里插入图片描述

  • CF(Carry Flag)进位标志位。CF=1,表示本次运算中最高位有进位或借位
  • PF(Parity Flag)奇偶标志位。PF=1,表示本次运算结果的低八位中有偶数个“1”;PF=0,表示有奇数“1”。
  • AF(Auxiliary Carry Flag)辅助进位标志位。AF=1,表示8位运算结果(限AL寄存器)中低4位向高4位有进位或者借位,这个标志位只在BCD数运算中起作用。
  • ZF(Zero Flag)零标志位。ZF=1,表示运算结果为0(各位全为0),否则ZF=0.
  • SF(Sign Flag)符号标志位。SF=1,表示运算结果的最高位为“1”
  • OF(Overflow Flag)溢出标志位。OF=1 表示二个用补码表示的有符号数的加法或减法结果超出了该字长所能表示的范围。OF 标志对无符号数的运算结果没有意义。
  • IF(Interrupt Flag)中断允许标志位。IF=1,表示允许CPU响应可屏蔽中断。
  • DF(Direction Flag)方向标志位。在串操作指令中,若DF=0,表示串操作指令执行后地址指针自动增量,串操作由低地址向高地址进行;

10,总线操作及时序

总线操作是指CPU通过总线对外的各种操作

1,操作控制器

操作控制器在各寄存器之间建立数据通路。其功能就是:根据指令操作码和时序信号,产生各种操作控制信号,以便正确地建立数据通路,从而完成取指令和执行指令的控制,有:1,硬布线控制器;2,微程序控制器

2,时序产生器

产生并发出计算机所需的时序控制信号

「期末」微机原理复习速成(上)_第8张图片

3,指令周期的基本概念

  • 指令周期:从CPU内存取一条指令并执行完成这条指令的时间总和(取指时间+执行指令时间)
  • CPU周期:又称机器周期(总线周期),CPU访问内存所花的时间较长,因此用CPU从内存读取一条指令字所需的最短时间来定义。
  • 时钟周期:通常称为节拍脉冲或T 周期。一个CPU周期包含若干个时钟周期。相互关系如下:
1个指令周期=若干个CPU周期
1个CPU周期=若干T 周期

关系图如下:
「期末」微机原理复习速成(上)_第9张图片

11,指令系统与汇编语言程序设计

1,什么是汇编语言

  • 汇编语言是一种面向机器的低级程序设计语言
  • 汇编语言以助记符形式表示每一条计算机指令
  • 用汇编语言书写的程序就是汇编语言程序(.ASM)
  • 汇编程序将汇编语言程序“汇编”成机器代码目标模块(.OBJ)

2,程序、指令、指令系统、指令格式

  • 计算机的程序是由一系列的指令组成
  • 指令是要计算机执行某种操作的命令
  • 指令系统是一台计算机中所有指令的集合
  • 指令格式是用二进制代码表示的指令形式

3,对操作数的寻址方式

寻址方式:形成指令或操作数的内存地址的方式,或者说查找指令或数据的方式。

寻址方式的类别:

  • 指令寻址方式:用于形成指令在内存中的地址
  • 数据(操作数)寻址:用于形成操作数在内存中的地址,一般也包括数据在寄存器的情况。
常见的寻址方式
  • 1,立即数寻址方式

    此方式中指令操作数部分直接给出指令的操作数,它与指令操作码相接,顺序存放在代码段中。立即数有8位和16位之分。

    例如:

    MOV AH,36H	;就是将立即数36H赋给AH
    

    注意:

    • (1)立即数寻址方式只能用于源操作数,主要用于给寄存器(存储单元)赋值。立即数无法作为目标操作数
    • (2)立即数可以是无符号或带符号数,其数值应在可取值的范围内。
  • 2,寄存器寻址方式

    此方式的操作数放在寄存器内,由指令直接给出某个寄存器的名字,以寄存器的内容作为操作数。寄存器可以是16位的AX,BXA,CX,DX,SI,DI,SP,BP寄存器,也可以是8位的AH,AL,BH,BL,CH,CL,DH,DL寄存器。

    例如:

    MOV AX,CX	; AX<---(CX)
    DEC AL		;AL<---(AL)
    

    注意:

    • (1)寄存器寻址方式的指令操作在CPU内部执行,不需要执行总线周期,执行速度快。
    • (2)寄存器寻址方式既适用于指令的源操作数,也可适用于目的操作数。
  • 3,直接寻址方式

    此方式的操作数在存储器中,指令中直接给出源操作数所在存储单元的有效地址。有效地址(EA)也称为偏移地址,它代表操作数所在存储单元距离段首地址的字节数。有效地址是一个无符号的16位二进制。

    例如:

    MOV AH,[2100H]	;将DS段中2100H单元的内容送给AH
    MOV AX,[2100H]	;将DS段中2100H单元的内容送给AL,2101H单元的内容送给AH。
    

    注意:

    • (1)直接寻址方式的操作数所在存储单元的段地址一般在数据段寄存器DS中。

    • (2)如果操作数在其他段,则需要在指令中用段超越前缀指出相应的段寄存器名。

      例如:

      MOV AH,ES:[2000H]	;将附加段寄存器ES的内容乘16D(或10H),在加上2000H 作为操作数所在存储单元的地址,取出该存储单元的内容送到寄存器AH中。
      
  • 4,寄存器间接寻址方式

    此方式的操作数在存储器中,指令中寄存器的内容作为操作数所在存储单元的有效地址(偏移地址)。寄存器可以是某个基址寄存器BX、BP,或某个变址寄存器SI、DI。

    当使用寄存器BX、SI、DI时,操作数所在存储单元的段地址存在数据段寄存器DS中;使用寄存器BP时,操作数所在存储单元的段地址存在堆栈段寄存器SS中。

    例如:

    已知:	(DS)=2100H,(DI)=2000H
    指令: MOV AX,[DI]
    	物理地址=16*(DS)+(DI)
    		   =16*2100H+2000H=23000H
    指令执行结果是将230000H和23001H单元的内容送入寄存器AX中。
    

    注意:

    • 如果操作数所在存储单元不在数据段中,需要在指令中用段超越前缀表明其所在段的段名。
  • 5,寄存器相对寻址方式

    此方式的操作数在存储器内,指令中寄存器的内容与指令指定的位移量之和作为操作数所在存储单元的有效地址(偏移地址)。寄存器可以是基址寄存器BX、BP,也可以是变址寄存器SI、DI。位移量是一个8位或16位的有符号二进制数。

    计算操作数所在存储单元的物理地址时与寄存器间接寻址方式相同,使用寄存器BX、SI、DI时与数据段寄存器DS有关,使用寄存器BP时与堆栈段寄存器SS有关。

    以寄存器SI、8位位移量为例,物理地址为:

    *物理地址=16 (DS)+(SI)+8位位移量

    以寄存器BP、16位位移量为例,物理地址为:

    物理地址=16 * (SS)+(BP)+16位位移量

    例如:

    已知:(DS)=2000H,(SI)=1000H,DA1=2000H(16位位移量)
    指令: MOV BX,DA1[SI]
    则物理地址=16*(DS)+(SI)+16位位移量
    		=20000H+1000H+2000H
    		=23000H
    指令执行结果是将23000H和23001H单元的内容送入寄存器BX中。
    
常见数据寻址方式小总结
  • 隐含寻址:在指令中不明显给出操作数
  • 立即寻址:指令中地址字段指出的不是操作数的地址,而直接是操作数本身
  • 直接寻址:在指令格式的字段中,直接给出操作数在内存的地址
  • 寄存器寻址:指令中给出的操作数地址不是内存的地址单元号,而是通用寄存器的编号。即操作数不放在内存中,而是放在通用寄存器中。
  • 寄存器间接寻址:指令中指定的寄存器中的内容不是操作数,而是操作数的地址
  • 基址(寄存器相对)寻址:基址寄存器的内容加上指令中给定的形式地址(偏移量),形成操作数的有效地址。

4,常用指令

1,传送指令MOV

语句格式:MOV 目的操作数 ,源操作数

功能:将源操作数传入目的地址,源地址内容不变。

应用注意一下几点:

  • 1,MOV指令不改变源操作数内容,不影响标志位。

  • 2,源操作数和目的操作数应该有相同的类型,即必须同为字节型或同为字型。

  • 3,代码段寄存器CS不能用作目的操作数,即不允许给CS赋值。

  • 4,立即数不能用作目的操作数,立即数也不能直接传送给段寄存器。

    例如:

    若要设置数据段寄存器DS的初值为2000H,不能直接用指令:
    
    MOV DS,2000H
    
    可以用如下两条指令表示:
    
    MOV AX,2000H
    
    MOV DS,AX
    
  • 5,不允许在段寄存器之间传送数据。

    例如:

    MOV DS,ES 	;为非法指令
    
  • 6,源操作数和目的操作数不能同时为存储单元操作数。

2,进栈指令PUSH

语句格式:PUSH SRC

功能:将寄存器、段寄存器或存储器中的一个字数据压入堆栈,堆栈指针减2.

3,出栈指令POP

语句格式:POP OPD

功能:将栈顶元素弹出送至某一寄存器、段寄存器(除CS外)或存储器,堆栈指针加2。

4,数据交换指令XCHG

语句格式:XCHG OPR1,OPR2

功能:将源地址与目的地址中的内容互换

例:

寄存器与存储器之间数据交换
MOV AX,5678H	;(AX)=5678H
MOV BX,0FFFFH	;(BX)=0FFFFH
XCHG AX,BX		;(AX)=0FFFFH,(BX)=5678H

5,累加器专用传送指令:输入指令IN/输出指令OUT

输入指令用来从制定的外设寄存器取信息送入累加器。此指令实现I/O端口与CPU之间的数据传送

用输入指令完成从输入端口到CPU的数据传送;

用输出指令完成从CPU到输出端口的数据传送。

例如:

IN DX,0600H	;(DX)<——0600H
OUT DX,AX	;(0600H)<——(AX)

注意:

  • 1,输入/输出指令只能使用累加器AL或AX接受或发送数据。

  • 2,使用短格式指令,必须将端口地址放入寄存器DX中。

  • 3,输入/输出指令不影响标志位。

6,地址传送指令

  • 有效地址传送指令LEA
  • 指针送寄存器和DS指令LDS
  • 指针送寄存器和附加数据段ES指令LES

7,算术运算指令

1,加法指令
  • 1,加法指令ADD

    指令格式:ADD DST,SRC

    指令功能:把源操作数的值加到目的操作数中。

  • 2,带进位加指令ADC

    指令格式:ADD DST,SRC

    指令功能:把源操作数和进位标志位CF的值(0/1)一起加到目的操作数中。

  • 3,加1指令INC

    指令格式:INC OPR

    指令功能是把操作数的值加1(不影响CF)

  • 4,交换加指令XADD

    指令格式:XADD oprd1,oprd2

    指令功能:先交换两个操作数的值,再进行算术加法操作。

2,减法指令
  • 1,减法指令SUB

    指令格式:SUB DST,SRC

    指令功能:从目的操作数中减去源操作数

  • 2,带借位减SBB

  • 3,减1指令DEC

    指令格式:DEC OPR

  • 4,求补指令NEG

    指令格式:NEG OPR

    指令功能:操作数=0-操作数

  • 比较指令CMP

    指令 格式:CMP OPD,OPS

    功能:目的操作数减源操作数,与SUB指令一样执行减法,但是不回送相减结果,结果只影响标志位。

3,乘法指令
  • 1,无符号数乘法指令MUL

    指令格式:MUL src,其中,src可以是寄存器或存储单元,但不能是立即数或段寄存器。

    功能:两个无符号数相乘。

    注意:指令中指定乘数,被乘数默认在寄存器AL或AX中。

  • 2,有符号乘指令IML

    语句格式:IMUL SRC

    功能:

    字节乘法:(AL)*(SRC)—>AX

    字乘法: (AX)*(SRC)—>DX,AX

4,除法指令

除法指令的被除数是隐含操作数,除数在指令中显示地写出来

  • 1,无符号除指令DIV

    语句格式:DIV OPS

    功能:

    字节除法:(AX)/(OPS)—>AL(商)、AH(余数)

    字除法:(DX、AX)/(OPS)—>AX(商)、DX(余数)

  • 2,有符号除指令IDIV

    8086/8088规定IDIV指令运算结果余数的符号与被除数相同。

你可能感兴趣的:(微机原理,微型计算机原理,期末复习)