基于苏大ppt的计算机硬件笔记

`冯·诺依曼计算机特点
– 计算机由五大部件组成
• 输入数据和程序的“输入设备”
• 记忆程序和数据的“存储器”
• 完成数据加工处理的“运算器”
• 控制程序执行的“控制器”
• 输出处理结果的“输出设备”

– 指令和数据以同等地位存于存储器,可按地址寻访
– 指令和数据用二进制表示
– 指令由操作码和地址码组成
– 以运算器为中心 基础逻辑电路:与门,非门,或门,异或门,与非门,或非门,同或门 半加器
– 𝑆𝑖当前位, 𝐶𝑖进位符 全加器 (包括之前的进位cn-1) – 𝐹𝑛当前位, 𝐶𝑛进位符 𝐶𝑛 = 𝑋𝑛 ⋅ 𝑌𝑛 + 𝑋𝑛⨁𝑌𝑛 ⋅ 𝐶𝑛−1 图片 图片 图片 CPU与外设之间的数据交换必须通过接口来完成,通常接口有
以下一些功能:
– 设置数据的寄存、缓冲逻辑,以适应CPU与外设之间的速度差异;
– 进行信息格式的转换,例如串行和并行的转换;
– 协调CPU和外设两者在信息的类型和电平的差异,如电平转换驱动器、
数/模或模/数转换器等;
– 协调时序差异;
– 地址译码和设备选择功能;
– 设置中断和DMA(直接存储器存取)控制逻辑,以保证在中断和DMA
允许的情况下产生中断和DMA请求信号,并在接受到中断和DMA应答
之后完成中断处理和DMA传输。 `为何要用二进制表示(冯.诺依曼核心)
– 无法制造多个稳定状态的物理器件
– 编码、计数、运算规则简单
– 和逻辑的真、假对应,通过逻辑门电路可实现算数运算 BCD码
– 机器中用4位二进制对每个十进制数位进行编码方法
– 4位二进制有16种组合,选取其中的十个。
– 常用的方法有:8421码、余3码、格雷码

为什么要用BCD码
– 高精确度的计算
– 耗费更多的存储空间 数的定点与浮点表示 – 十进制的公式表示:𝑁 = 10𝐸 ∗ 𝑆 – 二进制数的公式表示:𝑁 = 2𝐸 ∗ 𝑆 • 定点数:阶码𝐸位置固定,存储时统一忽略阶码 – 定点整数: 𝐸 = 0, 𝑆为纯整数,小数点固定在数值部分的右边 – 定点小数: 𝐸 = 0, 𝑆为纯小数,小数点固定在数值部分的左边浮点数详解
– 浮点数的表示范围
• 阶码E的范围:−128 ≤ 𝑒 < 127
• 最大正数:0.111 ... 1 × 2011...1 = (1 − 2^−23) × 2^127
• 最小正数:0.100 ... 0 × 2100...0 = 1
2 × 2−128 = 2−129
– 浮点数的表示精度
• 总位数不变
– 阶码越大:数值表示范围越大
– 尾数越少:精度变低 图片 机器数的表示形式:原码、反码、补码
– 原码:符号+真值
• +41 原 = 0 0101001, −41 原 = 1 0101001
• +0 原 = 0 0000000, −0 原 = 1 0000000
– 反码:正数不变,负数时符号不变,其他各位取反
• +41 反 = 0 0101001, −41 反 = 1 1010110
• +0 反 = 0 0000000, −0 反 = 1 1111111
– 补码:正数不变,负数为反码+1(计算机表示带符号数的方法)
• +41 补 = 0 0101001, −41 补 = 1 1010111
• +0 补 = 0 0000000, −0 补 = 0 0000000
• +127 补 = 0 1111111, −127 补 = 1 0000001
• −128 补 = 1 0000000 `溢出
– 运算结果超出机器数所能表示的范围时,称为溢出
– 定点数溢出的判断方法
• 两个同符号的数相加,得到的和的符号与相加数的符号不一致。
– 采用双符号位:正数的符号位为00,负数的符号位为11。符号位参加运算。如果
两个符号位不相同,则溢出。(浪费资源)
• 任意两数相加,如果数值最高位的进位不等于符号位的进位,则溢出。
– 浮点数溢出的判断方法
• 看阶码是否溢出!

BCD码:用四位二进制数表达一个十进制数,方便运算和显示 浮点数:尾数S和阶码E 符号+阶码+符号+尾数 反码:正数不变,负数除了符号位取反 补码:正数不变,负数除了符号位加一 +0:00000000 -128:10000000 [x+y]补=[x]补+[y]补 [x-y]补=[x]补+[-y]补

有效地址EA=基址(BX/BP)+变址值(SI/DI)+位移量DISP +段基址=物理地址

CISC和RISC是CPU的两种基本架构

– CISC:寻址方式多,方便编程
– RISC:寻址方式少,指令短、规整

RISC特点

– 指令系统
• RISC指令长度相同;寻址方式少;指令执行时间相当
– RISC CPU内部寄存器多
– 存储器操作
• 只有取数/存数指令访问存储器,大部分指令都在寄存器之间进行
– 代码量增多,实现特殊功能时程序复杂
– 较少的单元电路,面积小,功耗低
– 结构简单,设计周期短

程序执行过程

– PC发起地址查询
– 内存依据地址返回指令/数据
– CPU进行指令解析
– PC增量或PC赋值
• 指令结构
– 操作码+地址码(操作数所在地)

寻址方式

  • 立即数寻址(办理人随身携带)
    – 操作数由指令的地址码部分直接给出来
    • 操作码+操作数
  • 寄存器直接寻址(办理人已寄存)
    – 指令地址码部分给出某一通用寄存器地址
    – 从寄存器存取数据比主存快得多
    – 由于寄存器的数量较少,其地址码字段短
  • 直接寻址(办理人在队伍里)
    – 指令中地址码字段给出操作数的地址
    • PC赋值——取操作数
  • 间接寻址(办理人在哪问家长)
    – 指令中给出的地址是存放操作数地址的地址
    – 寄存器间接寻址(家长已寄存)
    – 存储器间接寻址(家长在队伍里)
  • 偏移寻址(相对寻址)
    – 从我往后数A个
    – EA:有效地址 – 相对寻址: EA=A+(PC) 相对于当前指令处位移量为A的单元
    – 基址寻址: EA=A+(B) 相对于基址(B)处位移量为A的单元
    – 变址寻址: EA=A+(I) 相对于首址A处位移量为(I)的单元

8086/8088微处理器

指令队列缓冲器

– 取指令时,每当指令队列缓冲区满一条指令,EU立即开始执行
– 当指令队列中有2个空字节(8088一个)BIU自动去取指
– EU从指令队列中去取指,然后执行指令,当该指令需要内存或
I/O访问,EU请求BIU进入总线周期完成访问:
• BIU空闲状态:立即响应
• 正在取指:取指完后响应
– 指令队列已满,EU没有对BIU有请求,BIU进入空闲状态
– 执行转移、调用、返回指令:指令队列中的内容(原顺序指令)
被清除,BIU去取EU所指示的新的程序段指令

寻址空间计算

– 8位机寻址:8根地址线
• 地址范围:0~255
• 最大内存空间:28 = 256Byte
– 16位机:216 = 64KB
– 32位机:232 = 4GB
– 64位机:264 = 16EB

编程结构

图片 – 4个通用寄存器(16位)
• AX、BX、CX、DX(可8位单独使用)
– 4个专用寄存器(16位)
• BP(Base Pointer)基数指针
• SP(Stack Pointer)堆栈指针
• SI(Source Index)源变址
• DI(Destination Index)目的变址
– 4个段寄存器(16位)
• CS(Code Segment)代码段寄存器
• DS(Data Segment)数据段寄存器
• SS(Stack Segment)堆栈段寄存器
• ES(Extra Segment)扩展段寄存器 – CS用来存放程序当前使用的代码段的段地址,CPU执行的指令
将从代码段取得
• CS:IP构成传统意义的PC
– SS用来存放堆栈段的段地址,堆栈操作的数据就在堆栈段中
• 通常SS:SP和SS:BP构成堆栈段的访问
– DS用来存放数据段的段地址,一般地说,程序所用的数据就存
放在数据段中
• 通常DS:XX(通用寄存器)构成对数据段的访问;
– ES用来存放附加段的段地址,也用来存放数据,但典型用法是
存放处理后的数据

主存储器

主存储器处于中心地位的原因

• 当前计算机正在执行的程序和数据均存放在存储器中,
CPU直接从存储器取指令或数据;
• 输入输出设备增多,数据传输速度加快,因此采用了
DMA(直接存储器存取)技术和输入/输出通道技术,
在存储器与输入/输出系统之间直接传送数据;
• 共享存储器的多处理机的出现,利用存储器存放共享
数据,并实现处理机之间的通信。

存储器的分类和指标

随机存储器(random access memory,RAM)
• 又称读写存储器,指通过指令可以随机地、个别地对
各个存储单元进行访问(读写)的存储器
• 访问所需时间基本固定,与存储单元地址无关
• 停电会造成信号丢失
非易失性存储器
• 停电仍能保持其内容 容量 • 计算机可寻址的最小单位是一个存储字,一个存储字 所包括的二进制位数称为字长 • 一个字节(Byte)为8个二进制位(bit),一个字可 以由若干字节组成,一个字的字长通常是8的倍数。 • 主存储器的容量:以字或字节为单位来表示主存储器 存储单元的总数 • 单位:B、KB、MB、GB、 TB、PB、EB、ZB... • 指令中地址码的位数决定了主存储器的可直接寻址的 最大空间 • 32位微型机提供32位物理地址,支持对4G字节的物理主存 空间的访问存储器存取时间(Memory Access Time)
• 又称存储器访问时间
• 启动一次存储器操作到完成该操作所经历的时间。
`存储周期(Memory Cycle Time)
• 连续启动两次独立的存储器操作(例如连续两次读操
作)所需间隔的最小时间 • 主存储器和CPU是由总线连接的。CPU通过使
用AR(地址寄存器)和DR(数据寄存器)个
主存储器进行数据传送。若AR为K位字长,
DR为n位字长,则允许主存包含2^k个可寻址
字节或字。
• 在一个周期内,CPU和主存储器之间进行n位
数据传送。 读操作:存储器→CPU
• CPU把信息字的地址送到
AR,经地址总线送往主存
储器
• CPU通过控制总线发读
(Read)命令
• CPU等待主存储器的
Ready回答信号,Ready
为 1,表示信息已读出经
数据总线,送入DR。
AR:地址寄存器
DR:数码寄存器
主存储器的基本操作

• 写操作:CPU→存储器
• CPU把信息字的地址送
到AR,经地址总线送往
主存储器,并将信息字送
往DR
• CPU通过控制总线发写
(Write)命令
• CPU等待主存储器的
Ready回答信号,Ready
为 1,表示信息已从DR
经数据总线写入主存储

读写存储器

按存储元件在运行中能否长时间保存信息分为静
态存储器SRAM和动态存储器DRAM两种
• 静态存储器:利用双稳态触发器来保存信息,只
要不断电,信息就不会丢失
• 动态存储器:利用MOS电容存储电荷来保存信
息,使用时需不断给电容充电才能使信息保持
• 静态存储器的集成度低,功耗较大;动态存储器
的集成度高,功耗小,主要用于大容量存储器 • DRAM每片容量大,引脚少; 价格低; 功耗低; 但
速度低,须再生。 DRAM一般用作计算机的主
存储器。
• SRAM速度快,价格较高,一般用作容量不大的
高速存储器。 DRAM和SRAM是可任意读写的随机存储器,当发生掉电时,存储的
内容容易立即消失,属于易失性存储器。
非易失性存储器,即使掉电,内容也不会消失:
只读存储器(ROM)
• 掩膜式ROM,由芯片制造商在制造时写入内容,以后只能读不能写
可编程序的只读存储器(PROM)
• 用户根据自己需要确定ROM的内容;
• 有熔丝式PROM,刚出厂的产品熔丝是全部接通的,使用前,用户根据需要断开某些单元
的熔丝(写入)。
可擦除可编程序的只读存储器(EPROM)
• 产品出厂时,所有存储单元都不导通,当浮置栅注入电子后,存储单元将通导;当芯片用紫外线
照射后,浮置栅上的电子将逸散,即整体擦除。
可用电擦除的可编程序的只读存储器(E2PROM)
• 编程原理和EPROM同,但读写操作可按每个位或每字节进行(类似于SRAM),但每字节的写
入周期要几毫秒,寿命为10万次。
闪速存储器(Flash Memory)
• 用电擦除,但只能整体擦除或分区擦除。

8086/8088存储器组织

存储器分段
– 为什么分段
• 地址寄存器均为16位: 216 = 64KB
– 分段方便操作系统进行存储管理
– 如何分段
• 8086地址空间为20位=1MB,地址为5位16进制数:00000H~FFFFFH
– 从偏移地址考虑,理论上最多16个不重叠的地址段
– 从段地址考虑,最多可以定义216个不同段
– 段重叠
• 段区分配通常由操作系统完成
– CS、DS、SS、ES存储与程序相关的段基址
– IP、SP、BP、SI、DI存储与程序相关的偏移地址 逻辑地址和物理地址
– 逻辑地址
• 程序和指令表示的一种地址
• 包括两部分:段地址和偏移地址
– 物理地址
• 段地址*\16+偏移地址=物理地址
– 寻址操作根据操作系统默认规则完成 堆栈(段)
– 机制
• 栈顶为唯一出入口
– 地址较小的一端
• 后进先出原则
– 作用
• 数据暂存
• 保留轨迹 段加偏移”寻址机制允许重定位
– 重定位是指一个完整的程序块或数据块可以在存储器所允许的空
间内任意浮动,并定位到一个新的可寻址的区域
– 允许程序和数据不需要做任何修改

小结

• 微处理器的设计有CISC与RISC两种基本架构。深入理解16位微处理器8086的内部结构
及其工作原理,是掌握微机工作原理的基础和关键。Intel系列高档微处理器内部的复杂
结构及其工作原理,都是在8086CPU的结构基础上逐步分解结构和细化流水线操作而发
展起来的。透彻地掌握8086CPU的基础,将有利于理解高档微处理器的技术发展。
• 8086/8088 CPU的内部结构由总线接口单元BIU和执行单元EU两部分组成。其内部有3
组共14个寄存器,必须了解它们各自的功能,并能掌握它们的使用方法。
• 总线周期是理解CPU按时序工作的重要概念。8086/8088 CPU一个最基本的总线周期由
4个时钟周期组成,简称为4个状态,即T1、T2、T3与T4这4个状态。
• 微处理器的引脚及其功能是其重要的外部特性。由于8086/8088 CPU只有40条引脚,
学习和掌握它们的功能相对于高档微处理器说来就比较简单。

CF - 进位标志(Carry Flag),表示上一条指令的运算是否产生进位。如果产生进位,CF为1,否则为0。OF - 溢出标志(Overflow Flag),表示上一条指令的结果是否越界。如果结果超出目的操作数可以表示的范围,OF为1,否则为0。 SF - 符号标志(Sign Flag),表示上一条指令运算结果的符号。如果结果为负数,SF为1,如果为正数,SF为0。 ZF - 零标志(Zero Flag),表示上一条指令的运算结果是否为0。如果结果为0,ZF为1,否则为0。

指令格式

计算机是通过指令来处理各种数据,为指出数据的来源、
操作结果的去向及执行何操作,一条指令必须包含以下信
息:
– (1) 操作码——位数及位置。
– (2) 操作数的地址——操作数的个数
– (3) 操作结果的存储地址。
– (4) 下一条指令的地址 指令长度 – 可以等于机器字长,也可以大于或小于机器字长。 • 尽可能短 • 等于字节的整数倍。 – 若所有指令的长度都是相等的,称为定长指令字结构 • RISC指令大多采用定长指令结构 – 若各种指令的长度随指令功能而异,操作码
– 操作码的位数取决于计算机指令系统的规模
– 定长编码和变长编码 变长编码:分散地放在指令字的不同字段中,如INTEL 8086/Pentium
– 优点:能表示更多的指令
– 缺点:增加了译码难度,控制器复杂 指令涉及的数据类型 – 地址:无符号数,一般是加减操作(含移位) • 8、16或32位 – 数值数据 • 定点数(整数):补码表示 – 16位、32位、64位 • 浮点数(实数):IEEE754标准 – 位、位串、字符与字符串 • 用来表示文本、声音和图像等 • 字节、字(16位)、双字(32位)、四字(64位) – 现代32位计算机通常以32位为一个字:字节、半字(16位)、字(32位)、双字(64位) – 逻辑数据 • 按位操作(0-假/非0-真)数据寻址方式
– 有效地址EA(Effective Address)=基址值(BX或BP)+变址
值(SI或DI)+位移量DISP
• +段基址=物理地址
– 根据命令判断字段长短
• 通常由寄存器长度决定

寻址方式

  • 立即寻址
  • 寄存器寻址
  • 直接数据寻址
  • 寄存器间接寻址(间接寻址目标为存储器,故不能确定目标位置长度)
  • 基址加变址寻址
  • 寄存器相对寻址
  • 相对基址加变址寻址(带DISP的基址加变址寻址) 程序存储器寻址方式
    – 实现程序转移
    • 条件转移
    – 段内短转移(-128~+127)
    • JMP
    – 段内/段间,直接/间接寻址
    • CALL
    – 段内/段间,直接/间接寻址
    • 中断
1
2
3
4
5
6
7
8
9
10
11
12
其他寻址方式  
– 串操作指令寻址方式
• 操作类别:清0、复制、比较等
• 源数据地址:DS:SI
• 目标数据地址:ES:DI
– I/O端口寻址方式
• 直接端口寻址
– IN AL, n OUT n, AL
– 端口号:0~255
• 间接端口寻址
– IN AL, DX OUT DX, AL
– 端口号:0~65535

通用数据传送

//CS - Code Segment,代码段寄存器。它保存代码段的起始地址,用于查找程序的指令。IP - Instruction Pointer,指令指针寄存器。它保存下条指令的地址,用于告诉CPU去哪里找到下一条要执行的指令。 1、基本传送指令 MOV(Move):传送
– 一般形式:MOV dest, src
• dest  src,将源操作数src复制到目的操作数dest,src不变 2、堆栈操作
– PUSH src
– POP dest
– LIFO后进先出
– 堆栈操作按字进行
– 不能POP CS 3、XCHG(Exchange):交换
– 一般形式:
• XCHG oprd1, oprd2 ;交换oprd1与oprd2的内容
– 语法格式:
• XCHG reg/mem, reg/mem 4.字节翻译指令XLAT(代码转换或查表指令)
– BX 基址:代码转换表首地址(表大小:0~255)
– AL 偏移(码值) MOV BX,0030H
MOV AL,5
XLAT

目标地址传送类指令

LEA(Load Effective Address)装入有效地址 – 语法格式:LEA reg16, mem ;reg16 = mem的有效地址 – 通常用于建立串操作 – 对标志位的影响:无。 – 【例】设BX = 5678H • LEA SI, 2\[BX] ;执行后,SI = 567AH 将计算结果放入BX寄存器,而不会访问那个地址的值LDS reg16, mem
– 定位串操作源地址
– LDS SI, [DI+100AH]
– 低16位存入reg16,高16位存入DS
LES reg16, mem – 定位串操作目标地址 – 同上,高16位存入ESLAHF、SAHF(保存和设置标志位)
– 与AH寄存器交互
– SF:符号标志:运算结果符号位
– ZF:零标志:运算结果是否为0
– AF:辅助进位标志:低四位是否向高四位进位
– PF:奇偶标志:是否有偶数个1
– CF:进位标志:是否进位/借位

算术运算类指令

加法
– 一般形式:
• ADD dest, src ; dest  dest + src
• ADC dest, src ; dest  dest + src + CF
• INC oprd ;oprd  oprd + 1
– 语法格式:
• ADD reg/mem, reg/mem/imm
• ADC reg/mem, reg/mem/imm
• INC reg/mem
– 对标志位的影响:
• ADD、ADC:按一般规则影响CF、OF、SF和ZF
• INC:不影响CF,其它同ADD
• ADD与ADC的2个操作数必须类型匹配,且不能同时是内存操作数 减法
– 一般形式:
• SUB dest, src ; dest  dest - src
• SBB dest, src ; dest  dest - src - CF
• CMP oprd1, oprd2 ; oprd1 - oprd2
– 与SUB的区别在于,不将减法结果存入dest,只影响标志位
• DEC oprd ; oprd  oprd - 1
• NEG oprd ; oprd  0 – oprd = oprd + 1
– 语法格式:
• SUB reg/mem, reg/mem/imm
• SBB reg/mem, reg/mem/imm
• CMP reg/mem, reg/mem/imm
• DEC reg/mem
• NEG reg/mem SUB、SBB、CMP:影响CF、OF、SF、ZF、AF和PF
• DEC:不影响CF,其它同SUB
• SUB与SBB的2个操作数必须类型匹配,且不能同时是内存操作数 乘法
– MUL(Unsigned Multiplication):无符号乘法 – 一般形式: • MUL src – 语法格式: • MUL reg8/mem8 ; AX = AL × src • MUL reg16/mem16 ; DX:AX = AX × src • 对标志位的影响:若8位×8位、16位×16位的结果分别能由8、16位容 纳(即结果的高一半为0),则CF = OF = 0,否则,CF = OF = 1;其 余标志无定义。 • 由于2个n位数的乘积可能需要2n位,因此,若操作数是8位,则结果为 16位;同样,16位操作数相乘结果为32位(80386中32位数相乘结果 为64位)。IMUL(Integer Multiplication):带符号乘法
– 一般形式:
• IMUL src
– 语法格式:
• IMUL reg8/mem8 ; AX = AL × src
• IMUL reg16/mem16 ; DX:AX = AX × src
• 对标志位的影响:若结果的高一半为低一半的符号扩展,则CF = OF =
0,否则,CF = OF = 1;其余标志无定义
– 【例】对于同一个二进制数,采用 MUL与IMUL执行的结果可能
不同。设AL = 0FFH,BL = 1,分别执行下列指令,会得出不同
结果。
• MUL BL ; AX = 00ffh(255D)
• IMUL BL ; AX = 0ffffh(-1D) 除法
– 一般形式:
• DIV src ; 无符号数除法
• IDIV src ; 带符号数除法
– 语法格式:
• DIV reg/mem
• IDIV reg/mem
– 功能描述:
• src是8位:AX÷src,结果商在AL、余数在AH
• src是16位:DX:AX÷src,结果商在AX、余数在DX
– 对标志位的影响:无定义
– 若是8位÷8位或16位÷16位怎么解决?

符号扩展
– 对标志位的影响:无
– CBW、CWD(Convert Byte/Word to Word/Double word)
– 语法格式:
• CBW ; AL符号扩展为AX
– (若AL为正数,则零扩展,若AL为负数,则扩展部分全1)
• CWD ; AX符号扩展为32位数DX:AX
– 【例】设AL = 0FEH,给出依次执行下列指令后的结果。
• CBW ; ax = fffeh
• CWD ; dx = ffffh, ax不变,即dx:ax = -2
• 十进制调整指令(不要求)
– BCD码的加减乘除

逻辑运算类指令

AND reg/mem, reg/mem/imm
– OR reg/mem, reg/mem/imm
– XOR reg/mem, reg/mem/imm
– NOT reg/mem
– TEST reg/mem, reg/mem/imm;执行AND操作但不存储
结果
• 对标志位的影响:
– NOT:无。
– 其它指令:CF = OF = 0,按一般规则影响SF和ZF `使某位变反,其余位保持不变:对应位异或1,其余位为0
• 例: XOR AL, 60H ; 使第5、6两位为原来码的反码
• 特例: XOR AL, 0FFH = NOT AL

移位指令和循环移位指令

一般形式:
– SHL dest, count ; dest逻辑左移,count为移位次数
– SAL dest, count ; dest算术左移
– SHR dest, count ; dest逻辑右移
– SAR dest, count ; dest算术右移
– ROL, ROR循环左/右移;RCL, RCR带进位标志循环左/右移 对标志位的影响:
– 移位次数为1时,若移位后符号位发生了变化,则OF = 1,否则
OF = 0;若移位次数 > 1,则OF无定义
– 按一般规则影响ZF与SF。然而,若移位次数为0,则不影响标志
位;CF为最后移入位
• 参数规范:当count = 1时,可以立即数输入,否则需先
存入CL中;count取值范围0~255
• 【例】设AX的值为一个2字节非压缩BCD码,将其转换为
1字节压缩BCD码存入AL。
MOV CL, 4
SHL AH, CL ; ah低4位移到高4位
AND AL , 0FH ; al高4位清0
OR AL , AH

串操作指令

目标和源都是存储器 (字、字节)
– DS:SI 提供源,ES:DI提供目的,CX提供长度
• 种类
– MOVS(Move)传送
– CMPS(Compare)比较
– SCAS(Scan)搜索
– LODS(Load)读
– STOS(Store)写
• 方向(DF标志位)
• 重复前缀
– REP(Repeat)
– REPE/REPZ
– REPNE/REPNZ

程序控制类指令

无条件转移JMP(Jump)
• 一般形式:
– JMP target ; 转移到target指定的目标地址处
– 根据转移的距离,JMP指令可分为下列两类:
• 段内转移:在同一代码段内进行,又称近(Near)转移,只要修改IP的
值即可实现
• 段间转移:可在不同代码段之间进行,又称远(Far)转移,需要同时
修改CS和IP的值
– 根据目标地址的指定方式,JMP指令又可分为直接转移和间接转

• 直接转移:是指转移的目标地址直接出现在指令中,在程序执行前就已
确定
• 间接转移:指转移的目标地址是寄存器或内存操作数的值,只有执行到
该条指令时才能确定 – 直接转移
• JMP [NEAR PTR] label ; 段内转移
– 目标地址 = IP + label(2字节) ; ±32KB
例:JMP ADDR1 ; ADDR1代表一个段内目标地址
ADDR1与当前IP位移量1235H, CS=1500H, IP=2400H
目的地址:18638H JMP SHORT label
– 目标地址 = IP + label(1字节) ; -128~127
• JMP FAR PTR label ; 段间转移
– 间接转移
• JMP reg16/WORD PTR mem
; IP = reg16/mem16 段内间接转移
例:JMP FAR PTR ADDR2 ; ADDR2代表一个段间目标地址
ADDR2所在CS=6500H,IP=020CH
目的地址:6520CH
例:JMP BX ;BX→IP,CS不变
JMP WORD PTR [DI] ;[DS:DI] →IP,CS不变 JMP DWORD PTR mem
– ; CS = [mem+2],IP = [mem]
例:当前CS=1000H, IP=026AH
DS=2000H, BX=1400H, ADDR3=020AH
JMP DWORD PTR [BX+ADDR3]
CS=4000H, IP=320EH • CALL过程名
– CALL NEAR PROC 段内直接寻址(修改IP, CS不变)
– CALL BX 段内间接转移(BX → IP)
– CALL FAR PROC 段间直接调用
• IP、CS都改变,例如:CALL 2000H:5600H
• 返回地址入栈包括CS和IP
– CALL DWORD PTR [reg16] 段间间接调用
• 低字 → IP,高字 → CS
– CALL与JMP区别
• CALL调用时会将修改前IP(或IP与CS)入栈,且完成后会返回当前位置
• RET
– 要和CALL调用类型对应:RET(段内)与RETF(段间)

1
2
3
4
5
6
7
8
9
10
11
12
例】求AX累加器和BX累加器中两个无符号数之差的绝  
对值,结果放在2800H单元中
CMP AX, BX
JB AA
SUB AX, BX
MOV DI, 2800H
MOV [DI], AX
JMP STOP ;该句缺少怎样?
AA: SUB BX, AX
MOV DI, 2800H
MOV [DI], BX
STOP: HLT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
【例】从外设71H中取一个数M,判断其值是否在10和20之  
间,如果M≥20,则送0FFH给外设73H;如果M<10,则送
00H给外设73H;如果10≤M<20,则送88H给外设73H
IN AL, 71H
CMP AL, 10
JNC LP1
MOV AL, 00H
JMP LP3
LP1: CMP AL, 20
JNC LP2
MOV AL, 88H
JMP LP3
LP2: MOV AL, 0FFH
LP3: OUT 73H, AL
HLT

循环控制(短地址区间)
– LOOP 目标地址
• CX-1,如CX≠0,转移到目标地址(负值)
– LOOPE/LOOPZ 目标地址
• CX-1,如ZF=1且CX≠0循环(LOOPNE/LOOPNZ时ZF=0)

【例】求2个数组之和,每个数组长度为N。如遇到2个组
1
2
3
4
5
6
7
8
数元素都为0,则停止求和  
MOV SI, -1
MOV CX, N
NEXT: INC SI
MOV AL, [ADDR1 + SI]
ADD AL, [SI + ADDR2]
MOV [SI + ADDR3], AL
LOOPNZ NEXT

中断指令
– INT 中断类型
• 0-255
• 中断向量表
– 每种中断占4个字节
» 前两个为偏移地址,后两个为段地址
– 和CALL的区别
• 相同点:断点入栈
• 不同点
– 清除中断标志IF
– 清除单步标志TF
– 标志寄存器入栈
• 【例】 INT 20H
– IRET
– INTO 溢出中断(中断号04H)

1
2
3
4
5
6
7
8
9
10
11
12
延时一秒
START: MOV CX, 1000
DELAY1S: CALL DELAY1MS
LOOP DELAY1S
HLT
DELAY1MS: PUSH CX
MOV CX, 374
LP1: PUSHF
POPF
LOOP LP1
POP CX
RET

类型

汇编流程 – 汇编源程序:用助记符指令、变量名和标号编写的程序。 • 文件名:\*\*\*.ASM – 目标程序:机器能识别的二进制代码程序。 • 文件名:\*\*\*.OBJ – 执行程序:为PC系统所接受的应用程序。 • 文件名:\*\*\*.EXE • 工具程序 – 汇编程序:把汇编源程序翻译成机器能识别的机器指令程序的工
具程序。 • 文件名:MASM.EXE – 连接程序:把目标文件与库文件以及其他目标文件连接在一起。 • 文件名:LINK.EXE汇编语言语句类型
– 指令性语句——真指令
• 实际的CPU指令
• 汇编程序将其翻译成机器目标代码
• 由四部分组成:
[标号:] 指令助记符 [操作数] [; 注释]
– 指示性语句——伪指令[伪操作指令]
• 方便编制程序
• 不产生代码
[名字] 伪操作命令 [操作数表] [; 注释]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SSEG SEGMENT PARA STACK ; 堆栈段定义  
DW 256 DUP (?)
SSEG ENDS
DSEG SEGMENT ; 数据段定义
MESS DB 'HELLO', 0DH, 0AH, '$'
DSEG ENDS
CSEG SEGMENT ; 代码段(指令区)
ASSUME CS:CSEG, DS:DSEG ; 规定段的性质
START: MOV AX, DSEG ; 设置数据段基值
MOV DS, AX
MOV DX, OFFSET MESS ; 显示字符串信息
MOV AH, 09
INT 21H
MOV AH,4CH ; 结束本程序运行,返回DOS
INT 21H
CSEG ENDS
END START
汇编语言有若干个段
段名、开始、结束
唯一的END结束
定义起始执行地址

表达式和运算符
– 由汇编程序计算
• 值
• 地址
– 算术运算符(7种)
• +、-、*、/
• MOD
• SHL、SHR 逻辑运算符(4种)
• AND、OR、XOR、NOT
• 和指令助记符的区别
• MOV AL, 0ADH AND 0EAH → MOV AL, 0A8H
– 关系运算符(6种)
• EQ、NE、LT、GT、LE、GE
• 关系成立时返回0FFFFH,不成立时返回0
– 数值返回运算符
• SEG
• OFFSET
• TYPE • SIZE
• LENGTH 属性运算符
• PTR 修改操作数类型
• THIS

伪指令

数据定义伪指令(变量定义)
– 数据定义伪指令用来为数据分配内存空间(规定变量的类型),
并设置相应内存单元的初始值。
– 形式:
变量名 变量定义符 操作数, 操作数, ..., 操作数
• 其中,变量名是一个符号地址,表示其后操作数的首地址,变量名为可
选项,给出变量名只是为了按名存取其对应的内存单元。 变量定义符主要包括下列几种
– DB(Define Byte):定义字节,后面的每个操作数占1个字节。
– DW(Define Word):定义字,后面的每个操作数占1个字。
– DD(Define Dword):定义双字,后面的每个操作数占2个字。
– 操作数可以是
• 常数 例:DATA DB 10, 4, 10H
• 表达式 例:DATA DW 2*3, 8/4
• 字符串 例:DATA DB 'ABCD'
– ?表示只保留内存空间,未定义初始值。
• 例:DATA DD ?, 1, ?
• 重复次数 DUP (操作数,...,操作数)
– 例:DATA DB 3 DUP(?,9)

存储器的分类与组成

存储器分类 – 程序的执行是从主存中自动的取指令到控制器进行解释执行,需 要的数据也放在主存中根据指令需要存取。 – 按存储介质分类 • 半导体存储器:双极型,静态MOS型,动态MOS型 • 磁表面存储器:磁盘(Disk)、磁带 (Tape) • 光存储器:CD、CD-ROM、DVD – 按断电后信息的可保存性分类 • 非易失性存储器 – 信息可一直保留,不需电源维持(如 :ROM、磁表面存储器、光存储器等) • 易失性存储器 – 电源关闭时信息自动丢失。(如:RAM、Cache等) – 按存储器功能分类 • 读写存储器(Read/Write Memory):可读可写 • 只读存储器(Read Only Memory):只能读不能写 – 按工作方式/存取方式分类 • 随机存取存储器Random Access Memory (RAM) – 每个单元读写时间一样,且与各单元所在位置无关,如:内存。 • 顺序存取存储器Sequential Access Memory (SAM) – 数据按顺序从存储载体的始端读出或写入,因而存取时间的长短与信息所在位置 有关,例如:磁带。 • 直接存取存储器Direct Access Memory (DAM) – 直接定位到要读写的数据块,在读写某个数据块时按顺序进行。例如:磁盘。 • 相联存储器Associate Memory/Content Addressed Memory (CAM) – 按内容存储与检索,根据内容访问存储位置并进行读写。例如:快表。 – 按容量/速度 • 寄存器 • 高速缓存 • 主存 • 外存储器参数 – 存取速度:
• 存取时间𝑇𝑎:指的是CPU从启动一次存储器操作到完成所需要的时间。
• 存取周期𝑇𝑚:是指连续启动两次独立的存储器操作所需最小时间间隔。
• 带宽(数据传输速度)

读写过程

– 读
• CPU先把读单元地址送到AR,经过地址总线送往主存,同时CPU通过控
制总线发一个读请求,然后CPU等待从主存储器发来的信号,通知CPU
读操作已经完成。
• 存储器通过ready线回答,如果ready信号为1,说明存储字的内容已经
读出,并放在数据总线上,送往DR。
– 写
• CPU先将写单元地址经AR送往地址总线,并把写内容字送DR,同时通
过控制总线发出写命令,然后CPU等待写操作完成信号。
• 主存把收到的信息字写入CPU指定的地址后通过ready线发出完成信号。

只读存储器

分类
– ROM
• 芯片的内容在制造时已经输入,只能读,不能修改。
• 存储原理:是根据元件的有无来表示该存储单元的信息(1或0)。存储
元件:二极管或晶体管。
– PROM(Programmable ROM, PROM)
• 用户可根据自己的需要来确定ROM里的内容,常见的是熔丝式PROM
是以熔丝的接通来表示1、断开表示0。常用于工业控制机。
– EPROM(Erasable PROM, EPROM)
• 紫外线擦除,只能对芯片进行整体擦除,而不能对芯片中个别需要改写
的存储单元单独擦除。编程次数不受限制。 E2PROM(Electrically EPROM)
• 电擦除,可以用字擦除方式擦除,也可以用数据块擦除方式擦除。以字
擦除方式操作时,能够只擦除被选中的那个存储单元的内容;在数据块
擦除方式操作时,可擦除数据块内所有单元的内容。编程次数受限制。
– 闪速存储器(Flash Memory)
• 一种快擦写型存储器,它的主要特点是:既可在不加电的情况下长期保
存信息,又能进行快速擦除(整体擦除或分区擦除)与重写,兼备了E2
PROM和RAM的优点。
• 闪存的读取速度与DRAM相近,是磁盘的100倍左右;写数据(快擦-
编程)则与硬盘相近。

拓展

  • 字扩展(位数不变、扩充容量)
  • 位扩展(字数不变,位数扩展)
  • 字位同时扩展(字和位同时扩展)

内存

解决内存访问速度慢的措施有三个:
• 提高主存芯片本身的速度
• 采用多模块存储器技术
• 在主存和CPU之间加入Cache

外部存储器(辅助存储器

磁表面存储器
– 两类:数字磁记录和模拟磁记录。
– 原理:磁性材料沉积在基体上形成记录介质,通过磁头与记录介
质的相对运动来读写信息。
– 优点:
①容量大,位价低
②记录介质可重复使用
③信息可长期保存甚至可脱机保存
④非破坏性读出
– 缺点:
①速度慢
②对工作环境要求高 光存储器
– 记录原理:用激光在具有感光特性的介质上非接触地记录高密度
信息,以介质材料的光学性质的变化来表示0或1。
– 优点:容量大、可替换(便携带)
– 缺点:速度慢。

寻址时间
– 寻址时间包括两部分:磁头寻找目标磁道所需的寻道时间和找到
磁道后磁头等待所需要读写的区段旋转到磁头下方的等待时间。
– 平均寻址时间=平均寻道时间+平均等待时间
– 平均等待时间与磁盘转速有关,用磁盘旋转一周所需时间的一半
来表示。 数据传输率
– 外部:磁表面存储器的缓存在单位时间内与主机之间传送数据的
位数或字节数。
• 单位bps。
• 取决于总线的类型和标准
– ATA、SCSI、SATA、SAS
– 内部:磁头与硬盘内存之间的数据传输率。
• 传输率=记录密度D x 运动速度V
• 误码率
– 衡量磁表面存储器的出错概率,等于出错信息的位数和读出的总
信息位数比。 磁盘cache
– 基本情况:硬盘内存速度差 (ms-ns)
• 可采用增加磁盘主轴转速
• 提高I/O总线速度
• 改进读写算法
• 采用磁盘cache等方法
– 缓存的大小与速度是直接关系到硬盘的传输速度的重要因素。
– 主流硬盘的缓存8M以上(有些甚至1G)。
– 类型一般是DRAM或SDRAM。
– 采用预读策略(局部性规则):对顺序数据特别有效
• 视频数据
• 图像文件 磁盘阵列存储器(RAID)
• 廉价冗余磁盘阵列(RAID)是用多台磁盘储存器组成的大
容量外存储子系统。(Redundant Arrays of
Inexpensive Disk)由美国加州大学伯克利分校提出。
• 目的
– 组合小的廉价磁盘来代替大的昂贵的磁盘,降低大批量数据存储
的费用;
– 希望采用冗余信息的方式,使得磁盘失效时不会使对数据的访问
受损失;
– 能适当的提升数据传输速度。
– 保证数据的可靠性和高可用性 RAID的实现
– 专门的控制芯片来完成
– 用软件的方法来实现, RAID 0级(无冗余和无校验的数据分块)
– 将连续的数据块分别存放在不同的磁盘上。具有最高的I/O性能
和磁盘空间利用率,无数据冗余,无容错能力,不能应用于数据
安全性要求高的场合。
• RAID 1级(镜像磁盘阵列)
– 由磁盘对组成,每一个工作盘都有对应的镜像盘,上面保存着与
工作盘完全相同的数据,安全性高,但磁盘空间的利用率只有
50% RAID 2级(具有纠错海明码的磁盘阵列)
– 采用海明码纠错技术和位交叉技术,用户需增加足够的校验盘来
提供单纠错和双验错功能。当阵列内有G个数据盘时,则所需的
校验盘数C要满足公式: 2𝐶 ≥ 𝐺 + 𝐶 + 1,如果有4个数据盘,
则需要3个校验盘。对数据的访问涉及到磁盘阵列中的每一个盘,
对大数据量传送有较高性能,但不利于小数据量的传送。RAID
2很少使用。 位交叉存取
– 将一个数据段中的各位分别存储在不同的磁盘上,以同步方式进
行读写,最小访问数据单位是每个磁盘的最小读写单位(例如扇
区)X磁盘数。
– 适合传送批量数据
• 块交叉存取
– 以数据块为单位,将连续的数据块分别存放在不同的磁盘上,最
小访问数据单位是每个磁盘的最小读写单位(例如扇区)
– 适合传送少量数据 RAID 5级(无专用校验盘的奇偶校验磁盘阵列)
– 无专用的校验盘,将校验信息分布到组内所有盘上,对大、小数
据量的读写都有很好的性能,因而是一种较好的方案。
• RAID 10级(RAID 0级+RAID 1级)
– 由分块和镜像组成,是所有RAID中性能最好的磁盘阵列,但每
次写入时要写两个互为镜像的盘, CPU占用率高,磁盘的利用
率低 磁盘存储器与光盘存储器的比较
– 两种存储器的记录原理、组成部分等方面都是相同的。在计算机
中它们各有自己的特点与功能。
– 硬盘驱动器
• 容量大、数据传输率高、等待时间短。
– 光盘驱动器
• 存储密度高、容量大、价格低。但是光盘与主机的速度不匹配所以不能
作为中间存储器,即不能替代硬盘 图片 为什么这种层次化结构是有效的?
– 时间局部性(Temporal Locality)
• 含义:刚被访问过的单元很可能不久又被访问
• 做法:让最近被访问过的信息保留在靠近CPU的存储器中
– 空间局部性 (Spatial Locality)
• 含义:刚被访问过的单元的邻近单元很可能不久被访问
• 做法:将刚被访问过的单元的邻近单元调到靠近CPU的存储器中
– 大量典型程序的运行情况分析结果表明:程序具有访问局部性特

• 指令:指令按序存放,地址连续,循环程序段或子程序段重复执行
• 数据:连续存放,数组元素重复、按序访问

• 键盘
– 键盘是一组排列成阵列形式的按键开关,按下一个键就产生一个
相应的字符,然后转换成ASCII或其他码送往主机
– 键盘输入信号处理可分为三个步骤:
• (1) 按下一个键;
• (2) 查出按下的是哪一个键;
• (3) 将该键翻译成能被计算机接收的代码
• 键盘的种类
– 机械式键盘
• 触点的导通或断开
• 每个键由底座、轴帽、轴帽固定卡、弹簧、金属支脚、触点金属片 导电橡胶式键盘
• 通过导电的橡胶实现触点的连接
– 电容式键盘
• 当人体(手指)接触金属感应片的时候,由于人体相当于一个接大地的
电容,因此会在感应片和大地之间形成一个电容 薄膜式键盘
• 无机械磨损
• 低价格
• 低噪音
• 低成本
• 市场占有相当份额 • 鼠标
– 一种坐标定位部件,只能用来输入相对坐标。 • CMOS传感器将每一幅图像都发送给数字信号处理器(DSP)进行分析。
• DSP检测各图像中的图案,并分析图像中图案的位置如何变动。
• 根据一系列图像中图案位置的变化,DSP确定鼠标的移动距离并将相应
坐标发送给计算机。
• 计算机根据从鼠标接收到的坐标信息,移动屏幕上的光标。
– 与轨迹球鼠标相比,光电鼠标具有下列优势:
• 没有可移动的零部件,这意味着磨损更少、故障率更低。
• 灰尘无法进入鼠标内部并干扰跟踪传感器。
• 增加的跟踪分辨率意味着响应更顺畅。
• 不需要鼠标垫等专用表面。 触摸屏
– 电阻式:利用压力感应进行控制电阻
– 电容式:利用人体的电流感应进行工作
– 红外式:在显示器上加上光点距架框,在屏幕表面形成一个红外
线网
– 表面声波触摸屏:玻璃屏的左上角和右下角各固定了竖直和水平
方向的超声波发射换能器,右上角则固定了两个相应的超声波接
收换能器。玻璃屏的四个周边则刻有45°角由疏到密间隔非常精
密的反射条纹 条形码(Bar Code)
– 由一组宽度和反射率不同的平行相邻条和空按预先规定的编码规
则组合起来,用来表示一组数据的符号 主要类型
• 堆叠式/行排式
– 建立在一维条码基础之上,按需要堆积成二行或多行
– 继承了一维条码的一些特点
– 需要对行进行判定,其译码算法与软件也不完全相同于一维条码
• 矩阵式二维码
– 它是在一个矩形空间通过黑、白像素在矩阵中的不同分布进行编码
– 用点(方点、圆点或其他形状)的出现表示二进制“1”,点的不出现表示二进制
的“0”,点的排列组合确定了矩阵式二维条码所代表的意义 显示器显色原理
– 像素点:颜色显示的最小单元
• 一个像素点包含三原色
• 通过调整三原色的显示强弱来控制颜色 CRT
– 可用于字符、图形和图像显示器。
– CRT是一个真空器件,由电子枪、偏转装置和荧光屏组成。
– 玻璃屏内壁涂有荧光粉,它将电子束的动能转换成光能,显示出
光点。不同的荧光粉在电子束的轰击下发出不同的颜色。
– 对电子束的要求
• (1)电子束要有足够的强度和速度。
• (2)电子束要足够细。
• (3)电子束的运动方向要高度可控 有机发光二极管(OLED)
– 自发光的二极管,无需背光
• 等离子显示器(PDP)
– 利用惰性气体在一定电压下产生气体放电现象而实现的发光技术。
• 显示技术的重要技术指标
– 分辨率
• 字符显示方式
– 一屏可显示的最多字符数称为分辨率,例如80列×25行,表示每屏最多可显示25
行,每行可有80个字符。
• 在图形显示方式
– 一屏可显示的像点数称为分辨率,例如800×600,表示一屏可包含600条水平扫
描线,每线可分为800点。
• 分辨率越高,显示的信息越多 颜色数(位深):每个像素点可显示的颜色数(灰度级)
• 每种原色由8位表示灰度,三原色共计224种颜色
• 实际传输过程中采用32位表示一种颜色,而高端显示器每种原色用10位
表示,总共可表示230,约10.7亿色 按打字原理分:击打式打印机(点阵针式打印机)和非击
打式打印机(喷墨打印机、激光打印机)。
• 按工作方式分:串行打印机和行式打印机。串行打印机一
次只能打一个字,行式打印机一次可以打印一行
• 常见打印机类型
– 点阵针式打印机
– 激光打印机
– 喷墨打印机
– 热转印和热敏打字机
• 发展趋势
– 击打式和非击打式并存
– 击打式的多样化、特殊化:银行、铁路、超市、酒店