大学课程《微机原理与接口技术》学习笔记整理

第一章 微型计算机基础概论

第一讲 关于

  • 计算机的主要应用:数值计算,信息处理,过程控制
  • 微机原理与接口技术包括:数值信息表示,微型机基本原理,汇编程序设计,半导体存储器及其接口设计,输入输出技术

第二讲 微型计算机系统组成

  • 计算机系统:
    • 硬件系统
      • 主机系统:CPU,存储器,输入输出接口,总线
      • 外部设备
    • 软件系统
  • 能够与CPU直接进行信息交换的部件属于主机系统,不能够与CPU直接进行信息交换的部件属于外部设备
  • CPU
    • 微处理器简称CPU,是计算机的核心
    • 主要包括:运算器,控制器,寄存器组
  • 存储器:
    • 计算机中的记忆装置。用于存放计算机工作过程中需要操作的数据和程序
    • 内存储器 :
      • 存取速度较快,容量相对较小
      • 内存按单元组织,每单元都对应一个惟一的地址
      • 每个内存单元中存放1Byte数据【每8位0或1称 为1字节(Byte)】
      • 内存单元个数称为内存容量
      • 按工作方式分类:随机存取存储器(RAM),只读存储器(ROM)
    • 外存储器
      • 联机外存:硬磁盘
      • 脱机外存:各种移动存储设备
  • 输入/输出接口
    • 接口是CPU与外部设备间的桥梁
    • 主要功能:
      • 数据缓冲寄存;
      • 信号电平或类型的转换;
      • 实现主机与外设间的运行匹配。
  • 总线
    • 是一组导线和相关的控制、驱动电路的集合。
    • 是计算机系统各部件之间传输地址、数据和控制信息的通道
    • 地址总线(AB) 数据总线(DB) 控制总线(CB)

第三讲 微机工作过程

  • 计算机的工作就是按照一定的顺序,一条条地执行指令
  • 指令: 由人向计算机发出的、能够为计算机所识别的命令
  • 过程:取指令->分析指令->读取操作数->执行指令->存放结果
  • 顺序执行: 一条指令执行完了再执行下一条指令。
    • 执行时间=取指令+分析指令+执行指令
    • 设:三个部分的执行时间均为Δt,则:执行n条指令时间T0为:
    • T0=3nΔt
  • 并行执行: 同时执行两条或多条指令。
    • 仅第1条指令需要3 Δt时间,之后每经过1 Δt,就有一条指令执行结束
    • 执行时间: T =3Δt +( n-1)Δt
  • 并行: 更高的效率,更高的复杂度
  • 相对于顺序执行方式,指令并行执行的优势用加速比S表示:
    • S=顺序执行花费的时间/并行执行花费的时间
    • 例: 3n Δt /(3Δt +( n-1)Δt) =3n/(2+n)
  • 冯 • 诺依曼计算机的工作原理: 存储程序工作原理,结构特点:运算器为核心
  • 冯 • 诺依曼机的工作过程
    • 取一条指令的工作过程:
      • ① 将指令所在地址赋给程序计数器PC;
      • ② PC内容送到地址寄存器AR,PC自动加1;
      • ③ 把AR的内容通过地址总线送至内存储器,经地址译码器译码,选中相应单元。
      • ④ CPU的控制器发出读命令。
      • ⑤ 在读命令控制下,把所选中单元的内容(即指令操作码)读到数据总线 DB。
      • ⑥ 把读出的内容经数据总线送到数据寄存器DR。
      • ⑦ 指令译码:数据寄存器DR将它送到指令寄存器IR,然后再送到指令译码器ID
    • 特点:
      • 程序存储,共享数据,顺序执行
      • 属于顺序处理机,适合于确定的算法和数值数据的处理。
    • 不足:
      • 与存储器间有大量数据交互,对总线要求很高;
      • 执行顺序由程序决定,对大型复杂任务较困难;
      • 以运算器为核心,处理效率较低;
      • 由PC控制执行顺序,难以进行真正的并行处理。
  • 哈佛结构
    • 指令和数据分别存放在两个独立的存储器模块中;
    • CPU与存储器间指令和数据的传送分别采用两组独立的总线;
    • 可以在一个机器周期内同时获得指令操作码和操作数。

第四讲 常用数制

  • 计算机中的常用计数制:十进制 ,二进制数 ,十六进制数 ,八进制数

第五讲 编码

  • 编码:
    • 信息从一种形式或格式转换为另一种形式的过程
    • 用代码来表示各种信息,以便于计算机处理。
  • 需要编码的信息种类:数值,字符,声音,图形,图像
  • 所有需要由计算机处理的信息,都需要编码,使所有信息都以二进制码形式表示
  • 计算机中的编码
    • 数值编码:
      • 二进制码
      • BCD码
    • 西文字符编码
      • ASCII码
  • BCD(Binary Coded Decimal)码
    • 用二进制表示的十进制数
    • 特点:
      • 保留十进制的权,数字用0和1表示。
  • 8421BCD编码:
    • 用4位二进制码表示1位十进制数,每4位之间有一个空格
    • 1010—1111是非法BCD码
    • (0001 0001 .0010 0101)BCD =11 .25 =(1011 .01)B
  • BCD码在计算机中的存储方式
    • 以压缩BCD码形式存放:
      • 用4位二进制码表示1位BCD码
      • 一个存储单元中存放2位BCD数
    • 以扩展BCD码形式存放
      • 用8位二进制码表示1位BCD码.即高4位为0,低4位为有效位
      • 每个存储单元存放1位BCD
  • ASCII码
    • 西文字符编码:将每个字母、数字、标点、控制符用1Byte二进制码表示
    • 标准ASCII的有效位:7bit,最高位默认为0
  • ASCII码的奇偶校验
    • 奇校验:加上校验位后编码中“1”的个数为奇数。
    • 偶校验:加上校验位后编码中“1”的个数为偶数。

第六讲 数及其运算

  • 定点数
  • 浮点数
    • 小数点的位置可以左右移动的数
    • 规格化浮点数:尾数部分用纯小数表示,即小数点右边第1位不为0
  • 无符号数
  • 有符号数:用最高位表示符号,其余是数值,0正,1负
    • 原码:最高位为符号位,其余为真值部分
      • [X]原=符号位+|绝对值|
    • 反码:
      • 若X>0 ,则 [X]反 = [X]原
      • 若X<0, 则 [X]反 = 对应原码的符号位不变,数值部分按位求反。
    • 补码:
      • 若X>0, 则 [X]补 = [X]反= [X]原
      • 若X<0, 则 [X]补 = [X]反+1
  • 无符号整数的表示范围(n表示字长): 0 ≤ X ≤ 2^n - 1
  • 有符号整数的表示范围:
    • 原码和反码: -(2^(n-1) -1) ≤ X ≤ 2^(n-1) -1
    • 补码: -2^(n-1) ≤ X ≤ 2n-1 -1
    • 对8位二进制数:
      • 原码: -127 ~+127
      • 反码: -127 ~+127
      • 补码: -128 ~+127

第七讲 基本逻辑运算和逻辑门

  • 逻辑,命题,推理
  • 基本逻辑运算:与或非
  • 逻辑运算是按位进行的运算,低位运算结果对高位运算不产生影响
  • 算术运算是两个数之间的运算,低位运算结果将对高位运算产生影响

第八讲 基本逻辑运算及其门电路

  • 与非,或非,异或,同或

第二章 微处理器与总线

第九讲 8088/8086微处理器

  • 8088/8086 CPU的特点
    • 采用并行流水线工作方式
      • 通过设置指令预取队列实现
    • 对内存空间实行分段管理
      • 将内存分为4个段并设置地址段寄存器,以实现对1MB空间的寻址
    • 支持协处理器
  • 8088/8086可工作于两种模式下
    • 最小模式:单处理器模式,所有控制信号由微处理器产生
    • 最大模式:最大模式为多处理器模式,部分控制信号由外部总线控制器 产生

第十讲 8088的主要引线及其内部结构

  • 8088最小模式下的主要引脚信号
    • 完成一次访问内存或接口所需要的主要信号
    • 与外部同步控制信号
    • 中断请求和响应信号
    • 总线保持和响应信号
  • 主要控制信号
    • WR: 写信号;
    • RD: 读信号;
    • IO/M:为“0”表示访问内存,为“1”表示访问接口;
    • DEN: 低电平有效时,允许进行读/写操作;
    • DT/R:数据收发器的传送方向控制;
    • ALE: 地址锁存信号;
    • RESET:复位信号。
  • 中断请求和响应信号
    • INTR:可屏蔽中断请求输入端
    • NMI: 非屏蔽中断请求输入端
    • INTA:中断响应输出端
  • 总线保持信号
    • HOLD:总线保持请求信号输入端。当CPU以外的其他设备要求 占用总线时,通过该引脚向CPU发出请求。
    • HLDA:总线保持响应信号输出端。CPU对HOLD信号的响应信 号。
  • 微处理器读取一条指令的控制过程
    • 1.发出读取数据所在的目标地址
      • 内存储器单元地址
      • I/O接口地址
    • 2.发出读控制信号
    • 3.送出传输的数据
  • 地址线和数据线:
    • 20位地址信号–》可产生220=1M个编码
    • 8位数据信号–》可同时传输8bit二进制码
  • 8088和8086CPU引线功能比较
    • 数据总线宽度不同:8088的外部总线宽度是8位,8086为16位。
    • 访问存储器和输入输出控制信号含义不同:8088——IO/M=0表示访问内存;8086——IO/M=1表示访问内存。
    • 其他部分引线功能的区别
  • 8088内部结构:
    • 执行单元EU
      • 构成:运算器,8个通用寄存器,1个标志寄存器,EU部分控制电路
      • 功能:指令译码,指令执行,暂存中间运算结果,保存运算结果特征
    • 总线接口单元BIU
      • 功能:
      • 从内存中取指令到指令预取队列,指令预取队列是并行流水线工作的基础
      • 负责与内存或输入/输出接口之间的数据传送
      • 在执行转移程序时,BIU使指令预取队列复位,从指定的新地址 取指令,并立即传给执行单元执行。
  • 指令预取队列的存在使EU和BIU两个部分可同时进行工作

第十一讲 8088CPU内部寄存器

  • 含14个16位寄存器,按功能可分为三类:
    • 8个通用寄存器
      • 数据寄存器(AX,BX,CX,DX)
      • 地址指针寄存器(SP,BP)
      • 变址寄存器(SI,DI)
    • 4个段寄存器
    • 2个控制寄存器
  • 通用寄存器:
    • 数据寄存器:8088/8086含4个16位数据寄存器,它们又可分为8个8位寄存器,即:
      • AX——-AH,AL:累加器,所有I/O指令都通过AX与接口传送信息,中间运算结果也多放于AX中;
      • BX——-BH,BL:基址寄存器,在间接寻址中用于存放基地址
      • CX——-CH,CL:计数寄存器,用于在循环或串操作指令中存放计数值
      • DX——-DH,DL:数据寄存器,在间接寻址的I/O指令中存放I/O端口地址;在32位乘除法运算时,存放高16位数。
    • 地址指针寄存器:
      • SP: 堆栈指针寄存器,其内容为栈顶的偏移地址
      • BP:基址指针寄存器,常用于在访问内存时存放内存单元的偏移地址。
    • 变址寄存器
      • SI:源变址寄存器
      • DI:目标变址寄存器
      • 变址寄存器在指令中常用于存放数据在内存中的地址。
  • BX与BP在应用上的区别
    • 作为通用寄存器,二者均可用于存放数据;
    • 作为基址寄存器,用BX表示所寻找的数据在数据段;用BP 则表示数据在堆栈段。
  • 段寄存器:
    • 作用:用于存放相应逻辑段的段基地址
    • 8086/8088内存中逻辑段的类型
      • 代码段: 存放指令代码
      • 数据段: 存放操作的数据
      • 附加段: 存放操作的数据
      • 堆栈段: 存放暂时不用但需保存的数据。
    • CS:代码段寄存器,存放代码段的段基地址。
    • DS:数据段寄存器,存放数据段的段基地址。
    • ES:附加段寄存器,存放数据段的段基地址。
    • SS:堆栈段寄存器,存放堆栈段的段基地址
    • 段寄存器的值表明相应逻辑段在内存中的位置
  • 控制寄存器:
    • 状态标志位:
      • CF:进位标志位。加(减)法运算时,若最高位有进(借)位则CF=1
      • OF:溢出标志位。当算术运算的结果超出了有符号数的可表达范围时, OF=l
      • ZF:零标志位。当运算结果为零时ZF=1
      • SF:符号标志位。当运算结果的最高位为1时,SF=l
      • PF:奇偶标志位。运算结果的低8位中“1”的个数为偶数时PF=l
      • AF:辅助进位标志位。加(减)操作中,若Bit3向Bit4有进位(借位), AF=1
  • 控制标志位:
  • TF:陷井标志位,也叫跟踪标志位。TF=1时,使CPU处于单步执行指 令的工作方式。
  • IF:中断允许标志位。IF=1使CPU可以响应可屏蔽中断请求。
  • DF:方向标志位。在数据串操作时确定操作的方向。

第十二讲 实模式下的存储器寻址

  • 内存储器管理
    • 8088CPU是16位体系结构的微处理器
    • 可以同时处理16位二进制码
    • 8088CPU需要管理1MB内存
  • 内存地址变换
    • 内存单元编址
      • 段(基)地址
      • 段内地址(相对地址/偏移地址)
    • 存储器的编址
      • 段(基)地址
      • 相对地址(偏移地址)
      • 逻辑段的起始地址称为段首,段首的偏移地址0000H
  • 实地址模式下的存储器地址变换
    • 内存物理地址由段基地址和偏移地址组成
    • 物理地址=段基地址×16+偏移地址
  • 段寄存器:
    • 作用:用于存放相应逻辑段的段基地址
    • 8086/8088内存中逻辑段的类型
      • 代码段==>CS(代码段寄存器)
      • 数据段==>DS(数据段寄存器)
      • 附加段==>ES(附加段寄存器)
      • 堆栈段==>SS(堆栈段寄存器)
    • 8086/8088内存中每类逻辑段的数量最多64K个
  • 逻辑段与逻辑地址
    • 内存的分段式逻辑分段,不是物理段
    • 两个逻辑段可以完全重合或部分重合
  • 堆栈及堆栈段的使用
    • 堆栈:
      • 内存中一个特殊区域,用于存放暂时不用或需要保护的数据。
      • 常用于响应中断或子程序调用

第十三讲 8088 系统总线

  • 总线时序
    • CPU工作时序
      • CPU各引脚信号在时间上的关系
    • 总线周期
      • CPU完成一次访问内存(或接口)操作所需要的时间
      • 一个总线周期至少包括四个时钟周期
  • 总线:
    • 按层次结构分类:
    • CPU总线
    • 系统总线
    • 外部总线
    • 总线的基本功能
      • 数据传送
      • 仲裁控制
      • 出错处理
      • 总线驱动
    • 总线的主要性能指标
      • 总线带宽(B/S)
        - 单位时间内总线上可传送的数据量
        - 总线带宽=位宽×工作频率
      • 总线位宽(bit)
        - 能同时传送的数据位数
      • 总线的工作频率(MHz)
        - 总线带宽=(位宽/8)×(工作频率/每个存储周期的时钟数)

第三章 指令系统概述

第十四讲 8088/8086指令系统

  • 指令:控制计算机完成某种操作的命令
  • 指令系统:处理器所能识别的所有指令的集合
  • 指令的兼容性:同一系列机的指令都是兼容的
  • 一条指令应包含的信息:
    • 运算数据的来源
    • 运算结果的去向
    • 执行的操作
  • 指令格式
  • 指令中的操作数
    • 立即数:参加操作的数据本身,可以是8位或16位,只能作为源操作数,无法作为目标操作数
      • MOV AX, 1234H
    • 寄存器:数据存放地址
      • MOV AX, BX
    • 存储器:数据存放地址
      • 参加运算的数存放在存储器的某一个或两个单元中
      • 表现形式: [操作数在内存中的偏移地址]
      • MOV AL, [1200H]

第十五讲 指令的寻址方式

  • 操作数可能的来源或运算结果可能的去处:

    • 由指令直接给出
    • 寄存器
    • 内存单元
  • 寻找操作数所在地址的方法可以有三种大类型:

    • 指令直接给出的方式
    • 存放于寄存器中的寻址方式
    • 存放于存储器中的寻址方式
  • 1.直接寻址:

    • 指令中直接给出操作数的偏移地址
    • 直接寻址方式下,操作数默认为在数据段,但允许段重设,即由指令给出所在逻辑段。
    • MOV AX,ES:[1200H] ES:段重设符
  • 2.寄存器间接寻址

    • 操作数存放在内存中,数据在内存中的偏移地址为方括号中通用寄存器的内容
    • 仅有4个通用寄存器可用于存放数据的偏移地址,BXBPSIDI
    • 间接寻址的一般格式:[ 间址寄存器 ]
    • 例: MOV AX,[BX]
    • 可以段重设
  • 3.寄存器相对寻址

    • 操作数的偏移地址为寄存器的内容加上一个位移量
    • 相对寻址主要用于一维数组的操作
    • MOV AX,[BX+DATA]
  • 4.基址、变址寻址

    • 操作数的偏移地址为
      • 一个基址寄存器的内容 + 一个变址寄存器的内容;
    • 操作数的段地址由选择的基址寄存器决定
      • 基址寄存器为BX,默认在数据段
      • 基址寄存器为BP,默认在堆栈段
    • 基址变址寻址方式与相对寻址方式一样,主要用于一维数组操作。
  • 5.基址、变址、相对寻址

    • 操作数的偏移地址为:
      • 基址寄存器内容+变址寄存器内容+位移量
    • 操作数的段地址由选择的基址寄存器决定。
      • 基址变址相对寻址方式主要用于二维表格操作。
      • 例如:MOV AL, [BP][DI]5==>也可以表示为[BP+DI+5]
  • 隐含寻址

    • 指令中隐含了一个或两个操作数的地址,即操作数在默认的地址中。
    • 例:
      • MUL BL
    • 指令执行:
      • AL×BL-->AX

第十六讲 数据传送指令

  • 8086指令系统从功能上包括六大类:
    • 数据传送
    • 算术运算
    • 逻辑运算和移位
    • 串操作
    • 程序控制
    • 处理器控制
  • 数据传送类指令
    • 1.通用数据传送指令
      • 一般数据传送指令
        • MOV
        • 格式:MOV dest,src
        • 操作:src->dest
        • 例子:MOV AL, BL
        • 注意点:两操作数字长必须相同;两操作数不允许同时为存储器操作数;两操作数不允许同时为段寄存器;在源操作数是立即数时,目标操作数不能是段寄存器;IP和CS不作为目标操作数,FLAGS一般也不作为操作数在指令中出现。
      • 堆栈操作指令
        • 先进后出,以字为单位
        • 压栈:PUSH OPRD 16位寄存器或存储器两单元
        • 出栈:POP OPRD
        • 指令的操作数必须是16位;操作数可以是寄存器或存储器两单元,但不能是立即数;不能从栈顶弹出一个字给CS;PUSH和POP指令在程序中一般成对出现;PUSH指令的操作方向是从高地址向低地址,而POP指令的操作正好相反。
      • 交换指令
        • 格式:XCHG REG,MEM/REG
        • 注:两操作数必须有一个是寄存器操作数;不允许使用段寄存器。
        • 例:XCHG AX, BX,XCHG [2000], CL
      • 查表转换指令
        • 格式:XLAT
        • 说明:用BX的内容代表表格首地址,AL内容为表内位移量,BX+AL得到要查找元素的偏移地址
        • 操作:将BX+AL所指单元的内容送AL
      • 字位扩展指令
        • 将符号数的符号位扩展到高位;
        • 指令为零操作数指令,采用隐含寻址,隐含的操作数为AX及AX,DX
        • 无符号数的扩展规则为在高位补0
        • 字节到字:CBW,将AL内容扩展到AX ,若最高位=1,则执行后AH=FFH若最高位=0,则执行后AH=00H
        • 字到双字:CWD,将AX内容扩展到DX AX ,若最高位=1,则执行后DX=FFFFH,若最高位=0,则执行后DX=0000H
    • 2.输入输出指令
      • 从端口地址读入数据到累加器/将累加器的值输出到端口中
      • 指令格式:
        • 输入指令: IN acc,PORT
        • 输出指令 :OUT PORT,acc
      • 根据端口地址码的长度,指令具有两种不同的端口地址表现形式:直接寻址,间接寻址
    • 3.地址传送指令
      • 取偏移地址指令LEA,将变量的16位偏移地址写入到目标寄存器
      • LDS指令
        • LDS(Load pointer using DS)的一般格式:
          • LDS 通用寄存器,存储器操作数
      • LES指令
        • LDSLES均用于将一个32位的远地址指针写入到目标寄存器。
        • LES(Load pointer using ES)的一般格式:
          • LES 通用寄存器,存储器操作数
    • 4.标志传送指令
      • 隐含操作数AH,将FLAGS的低8位装入AH
      • LAHF(Load AH from Flags)
      • SAHF(Store AH into Flags)
      • 隐含操作数FLAGS
      • PUSHF(Push flags onto stack)
      • POPF(Pop flags off stack)

除标志传送指令外,其它指令的执行对标志位不产生影响

第四章 算术运算,逻辑运算与移位操作指令

第十七讲 算术运算类指令

  • 加法运算指令
    • 1.ADD
      • 格式:ADD OPRD1,OPRD2
      • 操作:OPRD1+OPRD2-->OPRD1
      • ADD指令的执行对全部6个状态标志位都产生影响
    • 2.ADC指令
      • OPRD1+OPRD2+CF-->OPRD1
    • 3.INC指令
      • 格式:INC OPRD
      • 操作:OPRD+1-->OPRD
      • 常用于在程序中修改地址指针,OPRD不能是段寄存器,不能是立即数
  • 减法运算指令
    • 1.普通减法指令SUB
      • 格式:SUB OPRD1,OPRD2
      • 操作:OPRD1- OPRD2-->OPRD1
      • 对标志位的影响与ADD指令同
    • 2.考虑借位的减法指令SBB
      • 操作:OPRD1- OPRD2- CF-->OPRD1
    • 3.减1指令DEC
      • 格式:DEC OPRD
      • 操作:OPRD - 1-->OPRD
    • 4.比较指令CMP
      • 格式: CMP OPRD1,OPRD2
      • 操作:OPRD1- OPRD2
      • 指令执行的结果不影响目标操作数,仅影响标志位!
    • 5.求补指令NEG
      • NEG OPRD
      • 操作:0-OPRD-->OPRD
  • 乘法指令
    • 乘法指令采用隐含寻址,隐含的是存放被乘数的累加器AL或AX及存放结果的AX,DX;
    • 1.无符号的乘法指令MUL
      • MUL OPRD不能是立即数
      • 操作:
        • OPRD为字节数AL×OPRD-->AX
        • OPRD为16位数AX×OPRD-->DXAX
    • 2.带符号的乘法指令IMUL
      • 格式:IMUL OPRD
      • 指令格式及对操作数的要求与MUL指令相同。
      • 指令执行原理:
        • ① 将两个操作数取补码(对负数按位取反加1,正数不变);
        • ② 做乘法运算;
        • ③ 将乘积按位取反加1。
  • 除法指令
    • 1.无符号除法指令
      • 格式: DIV OPRD
    • 2.有符号除法指令
      • 格式: IDIV OPRD
        算术运算指令的执行大多对状态标志位会产生影响

第十八讲 逻辑运算指令

  • 逻辑运算指令
    • 对操作数的要求:
      • 大多与MOV指令相同。
      • “非”运算指令要求操作数不能是立即数;
    • 对标志位的影响
      • 除“非”运算指令,其余指令的执行都会影响除AF 外的5个状态标志;
      • 无论执行结果任何,都会使标志位OF=CF=0。
      • “非”运算指令的执行不影响标志位。
  • 1.”与”指令
    • 格式:AND OPRD1,OPRD2
    • 操作:两操作数相“与”,结果送目标地址。
  • 2.”或”指令
    • 格式:OR OPRD1,OPRD2
    • 操作:两操作数相“或”,结果送目标地址
  • 3.”非”指令
    • 格式:NOT OPRD
    • 操作:操作数按位取反再送回原地址
  • 4.”异或”指令
    • 格式:XOR OPRD1,OPRD2
    • 操作:两操作数相“异或”,结果送目标地址
  • 5.”测试”指令
    • 格式:TEST OPRD1,OPRD2
    • 操作:执行“与”运算,但运算的结果不送回目标地址。
    • 应用:常用于测试某些位的状态

第十九讲 移位操作指令

  • 移位操作指令
    • 控制二进制位向左或向右移动的指令
      • 非循环移位指令
      • 循环移位指令
    • 移动移动1位时由指令直接给出;移动两位及以上时,移位次数必须由CL指定
  • 1.非循环移位指令
    • 逻辑左移SHL
    • 算术左移SAL
    • 逻辑右移SHR
    • 算术右移SAR
  • 2.循环移位指令
    • 不带进位位的循环移位
      • 左移 ROL
      • 右移 ROR
    • 带进位位的循环移位
      • 左移 RCL
      • 右移 RCR

第五章 串操作指令

第二十讲 串操作指令

  • 针对数据块或字符串的操作
  • 可实现存储器到存储器的数据传送;
  • 待操作的数据串称为源串,目标地址称为目标串。
  • 串操作指令的操作对象是多个字节数(一串字符或数据),因此,指令的执行需要确定:
    • 串所在的区域
      • 源串一般存放在数据段,偏移地址由SI指定。允许段重设。
      • 目标串必须在附加段,偏移地址由DI指定
    • 串的首地址(原串、目标串起始地址)
    • 串长度(大小)
      • 串长度值由CX指定
    • 串的操作方向
      • 由DF标志位决定。指令根据DF状态自动修改地址指针
        • DF=0 增地址方向
        • DF=1 减地址方向
  • 通过增加重复前缀, 可以实现对CX值的自动修改
    • 无条件重复
      • REP
        • 当CX≠0时,REP后的指令将继续重复执行
        • 常用于传送类指令前–》未传完则继续传送
    • 条件重复
      • 相等(为零)重复:REPE(REPZ)
      • CX≠0 ∩ ZF=1,则前缀后的指令将继续重复执行
      • 不相等(不为零)重复:REPNE( REPNZ)
      • CX≠0 ∩ ZF=0,则前缀后的指令将继续重复执行
      • 条件前缀常用于运算类指令前,当:
        • 1)操作未结束 AND 结果=0
        • 2)操作未结束 AND 结果≠0 使其后的指令继续重复执行。
  • 串操作指令
    • 串传送 MOVS
    • 串比较 CMPS
    • 串扫描 SCAS
    • 串装入 LODS
    • 串送存 STOS

第二十一讲 串传送与串比较指令

1.串传送指令

  • 功能:将原数据串传送到目标地址
  • 格式:
    • MOVS OPRD1,OPRD2
    • MOVSB,按字节传送
    • MOVSW,按字传送
  • 串传送指令常与无条件重复前缀连用

2.串比较指令

  • 功能:用于实现两个数据串的比较
  • 操作:
    • 目标串-源串,结果不写回目标地址
    • 常与条件重复前缀连用
  • 格式:
    • CMPS OPRD1,OPRD2
    • CMPSB
    • CMPSW
  • 前缀的操作对标志位不影响

第二十二讲 串扫描指令

  • 格式:

    • SCAS OPRD
    • SCASB
    • SCASW
  • 执行与CMPS指令相似的操作,区别是:这里的源操作数是AX或AL

  • 串扫描指令应用例:

    • 在ES段中从2000H单元开始存放了10个字符,寻找其中有无字符“A”。若有则记下搜索次数,将搜索次数写入到DATA1单元,并将存放“A”的地址写入DATA2单元。

第二十三讲 串装入与串存储指令

1.串装入指令

  • 格式:
    • LODS OPRD
    • LODSB
    • LODSW
  • 操作:
    • 对字节:AL [DS:SI]
    • 对 字:AX [DS:SI]

2.串存储指令

  • 格式:

    • STOS OPRD
    • STOSB
    • STOSW
  • 操作:

    • 对字节: AL [ES:DI]
    • 对 字: AX [ES:DI]
  • 串操作指令应用注意事项:

    • 需要定义附加段
      • 目标操作数必须在附加段
    • 需要设置数据的操作方向
      • 确定DF的状态
    • 源串和目标串指针分别为SI和DI
    • 串长度值必须由CX给出
    • 注意重复前缀的使用方法
      • 传送类指令前加无条件重复前缀
      • 串比较类指令前加条件重复前缀,但前缀不影响ZF状态

第六章 程序与处理器控制指令

第二十四讲 程序控制指令

  • 程序控制类指令
    • 转移指令
      • 通过修改指令的偏移地址或段地址及偏移地址实现程序的转移
      • 无条件转移指令–>无条件转移到目标地址,转移的目标地址不在当前代码段内
        • JMP OPRD
      • 条件转移指令–>当具备一定条件时转移到目标地址
        • JC/JNC
          • 判断CF的状态。常用于两个无符号数大小比较
        • JZ/JNZ
          • 判断ZF的状态。常用于循环体的结束判断
        • JO/JNO
          • 判断OF的状态。常用于有符号数溢出的判断
        • JP/JPE
          • 判断PF的状态。用于判断运算结果低8位中1的个数是否为偶数
        • JS /JNS
          • 判断SF的状态。常用于判断数的性质
        • JA/JAE/JB/JBE
          • 判断CF或CF+ZF的状态。常用于无符号数大小的比较
        • JG/JGE/JL/JLE
          • 判断SF+OF或SF+OF+ZF的状态。常用于有符号数大小的比较
        • JCXZ
          • 可根据指令执行后CX的结果实现转移
    • 循环控制
      • LOOP
        • 条件:CX≠0
      • LOOPZ
        • 条件:CX≠0,且ZF=1
      • LOOPNZ
        • 条件:CX≠0,且ZF=0
    • 过程调用
      • 用于调用一个子过程,必须保护返回地址
      • 调用指令的执行过程
        • ① 保护断点:将调用指令的下一条指令的地址(断点)压入堆栈
        • ② 获取子过程的入口地址:子过程第1条指令的偏移地址
        • ③ 执行子过程:功能实现,参数的保存及恢复
        • ④ 恢复断点,返回原程序:将断点偏移地址由堆栈弹出
      • 段内调用:被调用程序与调用程序在同一代码段
        • CALL NEAR PROCC
      • 段间调用:子过程与原调用程序不在同一代码段
      • 返回指令:
        • 功能:从堆栈中弹出断点地址,返回原程序
        • 格式:RET
        • 子程序的最后一条指令必须是RET
    • 中断控制
      • 中断的概念:某种异常或随机事件使处理器暂时停止正在运行的程序,转去执行一段特殊处理程序,并在处理结束后返回原程序被中断处继续执行的过程。
      • 中断指令:引起CPU产生一次中断的指令
        • 格式:INT n
        • 说明: nх4
      • 中断指令的执行过程
        • ① 将FLAGS压入堆栈;
        • ② 将INT指令的下一条指令的CS、IP压栈;
        • ③ 由n×4得到存放中断向量的地址;
        • ④ 将中断向量(中断服务程序入口地址)送CS和IP寄存器;
        • ⑤ 转入中断服务程序
      • 中断返回指令:
        • 格式:IRET
        • 中断服务程序的最后一条指令,负责:恢复断点;恢复标志寄存器内容

第二十五讲 处理器控制指令

  • 这类指令用来对CPU进行控制,如修改标志寄存器,使CPU暂停,使CPU与外部设备同步等。

第七章 汇编语言

第二十六讲 汇编语言程序设计

  1. 汇编语言源程序与汇编程序
    (1)汇编语言源程序:用助记符编写
    (2)汇编程序:源程序的编译程序
  2. 汇编语言程序设计与执行过程
    (1)输入汇编语言源程序:源文件.ASM
    (2)汇编MASM:目标文件.OBJ
    (3)链接LINK:可执行文件.EXE
    (4)调试TD:最终程序
  3. 汇编语言语句类型和格式
    (1)语句类型:指令性语句,指示性语句
    (2)语句格式:
    指令性语句:[标号:] [前缀] 助记符 [操作数],[操作数] [ ;注释]
    指示性语句格式: [名字] 伪指令助记符 操作数 [,操作数,…] [ ;注释]
  4. 汇编语言语句中的操作数
    (1)寄存器
    (2)存储器单元
    (3)常量:(数字/字符串)
    (4)变量或标号
    (5)表达式 :算术运算;逻辑运算;关系运算;取值运算(OFFSET,SEG)和属性运算(PTR);其它运算

第二十七讲 数据定义伪代码

  1. 数据定义伪指令
    (1)用于定义数据区中变量的类型及其所占内存空间大小
    (2)DB(Define Byte):定义的变量为字节型
    (3)DW (Define Word) :定义的变量为字类型
    (4)DD (Define Double Word) :定义的变量为双字型
    (5)DQ (Define Quadword) :定义的变量为4字型
    (6)DT (Define Tenbytes) :定义的变量为10字节型
  2. 重复操作符
    (1)当同样的操作数重复多次时,可以使用重复操作符
    (2)作用:为一个数据区的各单元设置相同的初值
    (3)格式:[变量名] 伪指令助记符 n DUP(初值 [,初值,… ] )
    (4)例:M1 DB 10 DUP(0)
  3. “?”的作用
    (1)表示随机值,用于预留存储空间
    (2)例:MEM1 DB 34H,’A’,?,例:DW 20 DUP(?)
  4. 调整偏移量伪指令
    (1)规定程序或变量在逻辑段中的起始地址
    (2)格式:ORG 表达式
    (3)例:
    1
    2
    3
    4
    DATA SEGMENT
    ORG 1200H
    BUFF DB 1,2
    DATA ENDS

第二十八讲 符号与段定义相关伪指令

  1. 符号定义伪指令
    (1)将表达式的值赋给一个名字。当源程序中需多次引用某一表达式时,可以利用EQU伪指令,用一个符号代替表达式,以便于程序维护。
    (2)格式:符号名 EQU 表达式
    (3)操作:用符号名取代后边的表达式,不可重新定义
    (4)例:CONSTANT EQU 100
  2. 段定义伪指令
    (1)在汇编语言源程序中定义逻辑段
    说明逻辑段的起始和结束
    说明不同程序模块中同类逻辑段之间的联系形态
    (2)格式:段名 SEGMENT [定位类型] [组合类型] [’类别’]
  3. 设定段寄存器伪指令
    (1)说明所定义逻辑段的性质
    (2)格式:ASSUME 段寄存器名:段名[,段寄存器名:段名,…]
  4. 结束伪指令
    (1)表示源程序结束
    (2)格式:END [标号]

第二十九讲 其他伪指令

  1. 过程定义伪指令
    (1)用于定义一个过程体
    (2)格式:
    1
    2
    3
    4
    过程名 PROC [ NEAR / FAR ]

    RET
    过程名 ENDP
    (3)
  2. 宏命令伪指令
    (1)宏:源程序中由汇编程序识别的具有独立功能的一段程序代码
    (2)当源程序中需要多次使用同一个程序段时,可以将该程序段定义为一个宏
    (3)格式:宏命令名 MACRO <形式参数>
    (4)

第三十讲 系统功能调用

  1. BIOS、DOS功能调用
    (1)BIOS:驻留在ROM中的基本输入/输出系统
    加电自检,装入引导,主要I/O设备处理程序及接口控制
    (2)DOS:磁盘操作系统
    DOS功能/BIOS功能调用是调用系统内核子程序
    (3)BIOS、DOS功能调用:DOS功能与BIOS功能均通过中断方式调用,DOS和BIOS中断均可能影响AX
  2. DOS软中断
    (1)DOS中断包括:设备管理,目录管理,文件管理,其它用中断类型码区分
    (2)DOS软中断:类型码为21H
  3. 单字符输入
    (1)调用方法:
    1
    2
    MOV AH01
    INT 21H
    (2)输入的字符在AL中
  4. 字符串输入
    (1)接收由键盘输入一串字符
    (2)输入的字符串存储在内存指导区域中
    (3)用户自定义缓冲区格式:
  5. 单字符显示输出
  6. 字符串显示输出
    AH 功能号09H
    DS:DX 待输出字符串的偏移地址
    INT 21H
  7. 返回操作系统(DOS)功能
    (1)功能号:4CH
    (2)调用格式:
    1
    2
    MOV AH,4CH
    INT 21H
    (3)功能:程序执行完该2条语句后能正常返回OS;常位于程序结尾处

第八章 半导体存储器

第三十一讲 半导体存储器概述

  1. 半导体存储器
    (1)由能够表示二进制数“0”和“1”的,具有记忆功能的半导体器件组成
    (2)能存放一位二进制数的半导体器件称为一个存储元
    (3)若干存储元构成一个存储单元
  2. 半导体存储器的分类
  • 内存储器:
    • 随机存取存储器(RAM)
      • 静态存储器(SRAM)
      • 动态存储器(DRAM)
    • 只读存储器(ROM)
      • 掩模ROM
      • 一次性可写ROM
      • 可读写ROM
        • EPROM
        • EEPROM
  1. 半导体存储器的主要技术指标
    (1)存储容量:存储单元个数×每单元的二进制数位数
    (2)存取时间:实现一次读/写所需要的时间
    (3)存取周期:连续启动两次独立的存储器操作所需间隔的最小时间
    (4)可靠性,功耗

第三十二讲 微机中的存储器

  1. 微机中的存储器
    (1)内存储器
    主内存
    高速缓冲存储器
    (2)外存储器
    联机外存
    脱机外存
    (3)虚拟存储器

内存外存
速度
容量
单位容量价格
制造材料半导体磁性材料
  1. 微机中的存储系统主要有:
    (1)Cache存储器系统
    (2)虚拟存储器系统

  2. 随机存取存储器
    (1)特点:可以随机读或写操作;掉电后存储内容即丢失
    (2)类型:静态随机存取存储器(SRAM);动态随机存取存储器(DRAM)

第三十三讲 存储单元的编址


第三十四讲 存储器扩展技术

  1. 存储器扩展:用已有的存储器芯片构造一个需要的存储空间
    (1)用多片存储芯片构成一个需要的内存空间;
    (2)各存储器芯片在整个内存中占据不同的地址范围;
    (3)任一时刻仅有一片(或一组)被选中。
    (4)存储器芯片的存储容量等于:单元数×每单元的位数
  2. 存储器扩展方法
    (1)位扩展–》扩展字长
    (2)字扩展–》扩展单元数
    (3)字位扩展–》既扩展字长也扩展单元数

第九章 输入输出与中断技术

第三十五讲 输入输出技术概述

  1. I/O接口
    (1)接口要解决的问题
    速度匹配👉数据的缓冲与暂存
    信号的驱动能力👉信号驱动
    信号形式和电平的匹配👉信号类型转换
    信息格式👉信号格式转换
    时序匹配(定时关系)
    总线隔离👉三态门
  2. I/O端口及其编址
    (1)端口:接口电路中用于缓存数据及控制信息的部件
    (2)分类:数据端口,控制端口,状态端口

    (3)I/0端口编址:为确保CPU能够访问到每个不同的端口
    (4)寻址端口的方法:
  • 先找到端口所在的接口电路芯片
  • 再在该芯片上找具体访问的端口
    • 若接口中仅有一个端口,则找到芯片即找到端口
    • 若接口中有多个端口,则找到芯片后需再找端口
      (5)每个端口地址=片选地址(高位地址)+片内地址
  1. I/O地址译码
    (1)目的:确定端口的地址
    (2)参加译码的信号:
    #IOR,#IOW,高位地址信号
    (3)对端口读/写信号的产生条件
  • IO/#M=1
  • #RD=0 #IOR=0
  • #WR=0 #IOW=0
    (4)当接口只有一个端口时:无片内地址,全部地址信号均为高位地址(可全部参与译码),译码输出直接选择该端口;
    (5)当接口具有多个端口时:则16位地址线的高位参与译码(决定接口的基地址),而低位则用于确定要访问哪一个端口

第三十六讲 简单接口芯片

  1. 接口的分类及特点
    (1)按传输信息的方向分类:
    输入接口
    输出接口
    (2)按传输信息的类型分类:
    数字接口
    模拟接口
    (3)按传输信息的方式分类:
    并行接口
    串行接口
  2. 接口特点
    (1)输入接口:
    要求对数据具有控制能力
    常用三态门实现
    (2)输出接口:
    要求对数据具有锁存能力
    常用锁存器实现

第三十七讲 基本输入输出方法

  1. 基本输入/输出方法
    (1)无条件传送:要求外设总是处于准备好状态
    优点:软件及接口硬件简单
    缺点:只适用于简单外设,适应范围较窄
    (2)查询式传送:仅当条件满足时才能进行数据传送;每满足一次条件只能进行一次数据传送。
    适用场合:外设并不总是准备好;对传送速率和效率要求不高
    工作条件:外设应提供设备状态信息;接口应具备状态端口
    (3)中断方式传送
    特点:外设在需要时向CPU提出请求,CPU再去为它服务。服务结束后或在外设不需要时,CPU可执行自己的程序。
    优点:CPU效率高,实时性好,速度快。
    缺点:程序编制相对较为复杂。
    (4)直接存储器存取(DMA) :
    特点:
    ①外设直接与存储器进行数据交换 ,CPU不再担当数据传输的中介者;
    ②总线由DMA控制器(DMAC)进行控制(CPU要放弃总线控制权),内存/外设的地址和读写控制信号均由DMAC提供。


第三十八讲 中断技术

  1. 中断的基本概念
    (1)CPU执行程序时,由于发生了某种随机的事件(外部或内部),
    引起CPU暂时中断正在运行的程序,转去执行一段特殊的服务
    程序,以处理该事件,该事件处理完后又返回被中断的程序
    继续执行,这一过程称为中断。
    (2)引入中断的原因
    提高对外设请求的响应实时性。
    提高了CPU的利用率
    避免了CPU不断检测外设状态的过程
    (3)中断类型

第十章 可编程数字接口电路

可编程定时计数器8253

可编程并行接口8255

第十一章 模拟接口电路

模拟量的输入输出

D/A转换器

A/D转换器