4 微机原理:两种典型的微处理器

微机原理:两种典型的微处理器

  • 定义:将中央处理器的所有构件封装到一块硅芯片上,即微处理器。

  • 第一个微处理器:Intel 4004

  • 发展历史:继电器——真空管——晶体管

  • 处理器性能评价标准:

    • 数据通路宽度(几位微处理器?)

    • 最大时钟频率(主频)(相同时间完成更多操作)

    • 可寻址存储器最大空间(空间换时间)

一、Intel公司的8080处理器
  • 基本属性:

    • 8位微处理器

    • 时钟频率:2MHz

      • 8080每条指令需要418个时钟周期,意味着每条指令的执行时间为29μs\mu s
    • 寻址空间:64KB

    • 类型:单芯片微处理器

  • 寄存器信息:8080内含6个寄存器,每个寄存器都是8位寄存器

    • 分别命名为: B,C,D,E,H,LB,C,D,E,H,L (A是内部的累加器的代号)

    • 通常把两个8位寄存器 H 和 L 合起来构成一个16位 寄存器对(register pair),

      称作[HL]。

    助记符 指令含义
    LOD 加载
    STO 保存
    STA 保存到累加器
    LDA 加载到累加器
    STAX 保存到BC或DE寄存器
    LDAX 加载到BC或DE寄存器
    MOV 把一个寄存器中的内容转移<br>到另一个寄存器(可以是原来的寄存器、累加器)
    HLT 停止

例如:

1
2
3
4
5
LDA A, [aaaa]
MOV A, [HL]
MOV [HL], C
STAX [BC], A
LDAX A, [BC]
  • 三种寻址方法

    • 直接寻址法:MOV B, [aaaa] (源操作数为地址信息)

    • 间接寻址法:MOV B, [HL](源操作数为地址所在的寄存器)

    • 立即数寻址法:MOV B, 37h (源操作数为要操作的数据对象)

立即数操作

操作 含义
MVI 传送立即数
ADI 立即数加法
ACI 立即数进位加法
SUI 立即数减法
SBI 立即数借位减法
ANI 立即数与
XRI 立即数异或
ORI 立即数或
CPI 立即数比较
  • 不符合规则的操作结果

    MOV A, A 并不会执行有意义的操作;

    MOV [HL], [HL]该指令是不存在的,实际上该指令的实际意义 人为规定等价于HLT

  • 操作码的位模式:

比如:MOV操作码由八位组成

01dddsss,ddd表示目标操作数的代码,sss表示源操作数的代码

代码 对应寄存器
000 寄存器B
001 寄存器C
010 寄存器D
011 寄存器E
100 寄存器H
101 寄存器L
110 合并寄存器HL
111 累加器A

如:MOV L, E 表示为操作码:01101011

  • 标志位(flag)

    8080的标志位包括:CF(进位标志),ZF(零标志位),SF(符号标志位),PF(奇偶标志位),AF(辅助进位标志)

  • 程序状态字(PSW):在8080中,专门的8位寄存器,来存放所有的标志位

  • LDA,STA,MOV指令不会影响标志位。ADD,SUB,ADC(进位加法),SBB(借位减法)会影响标志位状态。

  • 但是以下两个直接影响CF

    操作 含义
    STC 令CF置1
    CMC 令CF取反
  • CMP指令:和SUB指令类似,也是把两个数相减。但是他是把结果保存在标志位

    • 如果A中既有的值小于CMP的源操作数存储器中的值,那么进位标志位CF置1;如果A中既有的值等于源操作数存储器中的值,那么零标志位ZF置1。
操作 含义
CMP 比较,可设置标志位
  • 两种特别的8080指令:
操作 含义
CMA 累加器中的数按位取反
DAA 十进制调整累加器,使用BCD码进行十进制的算术运算(加在运算出原十六进制结果后,切换结果)
  • 增量减量操作

INR和DCR都是单字节操作,可以影响除了CF之外所有标志位

操作 含义
INR 寄存器或存储器中的数加1
DCR 寄存器或存储器中的数减1
  • 移位操作
操作 含义
RLC 使累加器循环左移
RRC 使累加器循环右移
RAL 带进位的累加器循环左移
RAR 带进位的累加器循环右移

执行RAL时,将原最高位移至CF

执行RAR时,将原最低位移至CF

二、Intel 8080微处理器的RAM与栈
  • 随机访问存储器RAM:可以寻址访问的存储器

  • 栈指针:8080微处理器设置了一个专门的16位寄存器作为栈,对这段空间寻址的寄存器叫作栈指针(SP,Stack Pointer)

  • 栈的特性:后进先出(LIFO)

  • 入栈出栈指令

    操作 含义
    PUSH 压入堆栈
    POP 弹出堆栈

如果你想把寄存器中所有内容保存到栈内,可以使用如下指令:

1
2
3
4
PUSH PSW
PUSH BC
PUSH DE
PUSH HL

POP BC 则表示从栈中弹出一个值,按照来顺序保存到BC存储器中。

  • 栈的工作方式

    假设栈指针初始时位于8000h。当有数据入栈时,栈指针-1,变成7FFFh,且在7FFFh位置存储压入的数据

  • 栈上溢和栈下溢

    • 栈上溢(stack overflow):使用过多PUSH指令,覆盖掉存储器中其他内容

    • 栈下溢(stack underflow):使用过多POP指令,栈中数据取完了还在POP

  • 寄存器和栈的共用操作

操作 含义
LXI 对寄存器  或 堆栈指针  加载(Load)扩展的立即数(两个字节)
INX 对寄存器对和堆栈指针加1
DCX 对寄存器对和堆栈指针减1
DAD 把由任意2个寄存器组成的16位寄存器对的内容加到寄存器对HL中
  • LXI 指令:
1
LXI BC, 527Ah

以上指令等价于:

1
2
MVI B, 52h
MVI C, 7Ah
  • DAD 指令:

    一般用于计算存储器的地址,对PSW中只有对CF有影响

  • 栈操作指令

操作 含义
SHLD 直接保存HL中的数据
LHLD 直接加载数据到HL
PCHL 将HL保存的数据加载到程序计数器
SPHL 将HL保存的数据加载到堆栈指针
XTHL 把HL中的内容和堆栈顶部2个字节进行交换
XCHG 把DE中的内容和HL中的内容进行交换
  • Call 和 Return指令

    • Call(调用)指令:执行之后,程序计数器(PC)将加载一个新地址,而原来的地址则被保存到栈当中。(这种指令记录了“从何处跳转”,即保存了跳转之前的信息)
  • 补充:8080处理器中的转移指令

    操作 含义
    JMP 转移
    JZ 零转移
    JNZ 非零转移
    JC 进位转移
    JNC 无进位转移
三、Intel 8080与周围设备

内存映像 I/O:除了常规的65536个地址外,另增了256个地址专门用来访问输入/输出设备,这些地址被称为I/O端口

操作 含义
OUT 把累加器中的内容  写入到  紧跟该指令后的字节  所寻址的端口
IN 把一个字节从端口读入到累加器
1
2
OUT PP
IN PP

当外围设备需要中断微处理器当前操作时,它需要把8080的INT端口的输入信号置1。8080通过从存储器取出指令的方式,来响应该中断,同时控制信号指明有中断发生。

操作 含义
DI 禁止中断
EI 允许中断
  • 其他操作
操作 含义
RST 重新启动,立即跳转到特定的地址
NOP 无操作
四、Motorola公司生产的6800微处理器
  • 对比: Motorola 6800相比于Intel 8080
  1. 时钟信号较简单
  2. 没有独立I/O端口
  3. B也是累加器,无其他8位寄存器
  4. 16位索引寄存器(类似HL寄存器)
  5. 对应操作码和助记符完全不同
  6. 无奇偶标志位,有溢出标志位
  7. 汇编语言不兼容
  8. 6800高前低后,8080低前高后(Motorola方式,Intel方式)
五、现代微处理器技术
  • 苹果公司的Mac的PowerPC微处理器

    采用RISC技术(精简指令集计算机)

    • 特点1:指令等长,只有Load和Store能访问存储器

    • 特点2:设置大量寄存器,避免频繁访问存储器

  • 流水线技术

    处理器在执行一条指令时同时读取下一条指令

  • 高速缓冲存储器(Cache)

    在处理器内部设置一个访问速度很快的RAM阵列,存放最近要执行的指令,Cache能避免常用小循环的反复加载