《编码:隐匿在计算机软硬件背后的语言》读书笔记 09
来源:互联网 发布:随机种子知乎 编辑:程序博客网 时间:2024/06/07 06:12
第十九章 两种典型的微处理器
微处理器将计算机中央处理器的所有构件整合在一起,集中在一个硅芯片上。
1971年,第一个微处理器 Intel4004系列,2300个晶体管。
1. 8080微处理器 摩托罗拉公司 8位 6000个晶体管,2MHZ 64KB 单芯片 40个管脚 (3个电源电压2个同步时钟输入16个寻址的输入信号8个输入输出信号10个控制信号)
封装为2英寸长,1/2英寸宽 1/4英寸厚
指令集:Load Store (助记符:STA LDA 加载和保存)
MOV :一条指令63个操作码 单字节指令(32条) MVI:传送立即数
四种基本运算方式:ADD ADC SUB SBB(加法 进位加法 减法 进位减法)
操作码 指令 操作码 指令
80 ADDA,B 90 SUBA,B
81 ADDA,C 91 SUBA,C
82 ADDA,D 92 SUBA,D
83 ADDA,E 93 SUBA,E
84 ADDA,H 94 SUBA,H
85 ADDA,L 95 SUBA,L
86 ADDA,[HL] 96 SUBA,[HL]
87 ADDA,A 97 SUBA,A
88 ADCA,B 98 SBBA,B
89 ADCA,C 99 SBBA,C
8A ADCA,D 9A SBBA,D
8B ADCA,E 9B SBBA,E
8C ADCA,H 9C SBBA,H
8D ADCA,L 9D SBBA,L
8E ADCA,[HL] 9E SBBA,[HL]
8F ADCA,A 9F SBBA,A
标志位 :CF(进位标志符) ZF(零标志符)符号标志位SF、奇偶标志位PF和辅助进位标志位AF像LDA、STA和MOV这样的指令不影响标志位,
而ADD、SUB、ADC和SBB指令却要影响标志位
程序状态字:所有标志位都保存在另一个叫作程序状态字(PSW:programstatusword)的8位寄存器中。
逻辑运算AND(与)、OR(或)和XOR(异或)。算术运算和逻辑运算都可通过处理器的算术逻辑单元(ALU)来执行
操作码 指令
SUB A,B
ADD A,[HL]
37 STC 置CF为1
3F CMC CF取反
A0 ANDA,B B0 ORA,B
A1 ANDA,C B1 ORA,C
A2 ANDA,D B2 ORA,D
A3 ANDA,E B3 ORA,E
A4 ANDA,H B4 ORA,H
A5 ANDA,L B5 ORA,L
A6 ANDA,[HL] B6 ORA,[HL]
A7 ANDA,A B7 ORA,A
A8 XORA,B B8 CMPA,B
A9 XORA,C B9 CMPA,C
AA XORA,D BA CMPA,D
AB XORA,E BB CMPA,E
AC XORA,H BC CMPA,H
AD XORA,L BD CMPA,L
AE XORA,[HL] BE CMPA,[HL]
AF XORA,A BF CMPA,A
MVI A,0Fh
MVI B,55h
AND A,Bh
MVI B,25h
CMP A,B
C6 ADIA,xx E6 ANIA,xx
CE ACIA,xx EE XRIA,xx
D6 SUIA,xx F6 ORIA,xx
DE SBIA,xx FE CPIA,xx
27 DAA
2F CMA
CMA即complementaccumulator,它对累加器中的值进行取反操作。每个0变为1,每个1变为0。如果累加器中的值为01100101,CMA指令使它变为10011010。也可以用下述指令来使累加器按位取反:
XRI A,FFh,
DAA即DecimalAdjustAccumulator,如前所述,它可能是8080中最复杂的一条指令。微处理器中有一个完整的小部件专门用于执行这条指令。
DAA指令帮助程序员用BCD码表示的数来进行十进制算术运算。在BCD码中,每一小块数据的范围在0000~1001之间,对应于十进制的0~9。利用BCD码格式,每8位字节可存储两个十进制数字。
操作码 指令 操作码 指令
04 INRB 05 DCRB
0C INRC 0D DCRC
14 INRD 15 DCRD
1C INRE 1D DCRE
24 INRH 25 DCRH
2C INRL 2D DCRL
34 INR[HL] 35 DCR[HL]
3C INRA 3D DCRA
单字节指令INR和DCR可影响除CF外的所有标志位。
8080也包含4个循环移位指令,这些指令可使累加器中的内容左移或右移1位:
操作码 指令 含义
07 RLC 累加器循环左移
0F RRC 累加器循环右移
17 RAL 累加器带进位循环左移
1F RAR 累加器带进位循环右移
这些指令只影响CF。
把微处理器寻址的存储器叫作随机访问存储器(RAM)是有原因的:微处理器可以简单地根据提供的地址访问某一存储位置** 堆栈 从底向上压入堆栈,从顶向下弹出堆栈,因此这也叫后进先出存储器,或LIFO
向堆栈中放入数据叫作push(压入),从堆栈中取走数据叫作pop(弹出)
操作码 指令 操作码 指令
C5 PUSH BC C1 POP BC
D5 PUSH DE D1 POP DE
E5 PUSH HL E1 POP HL
F5 PUSH PSW F1 POP PSW
PUSHBC指令把寄存器B和C的内容保存到堆栈中,POPBC指令恢复它们。最后一行的缩写PSW指的是程序状态字,前面讲过,它是包含有标志位的8位寄存器。最后一行的两条指令实际上是把累加器和PSW都压入和弹出堆栈Call指令可有效地保存“程序从哪里跳转”的标记。处理器最终可利用此地址返回到原来的位置。这个返回指令叫Return。Return指令从堆栈中弹出两个字节,并把该值装载到PC中。
微处理器是怎样与外围设备(对于连接到微处理器而不是存储器的东西的称呼)进行通信的呢?外围设备具有与存储器相似的接口,微处理器可通过对应于外设的具体地址来对外设进行读写。在有些微处理器中,外围设备实际上占用了通常用来寻址存储器的地址,这种配置叫作内存映像I/O。
指令:OUT指令用于把累加器中的数据写到紧跟该指令的字节所寻址的I/O端口中。IN指令把端口的数据读入到累加器中。
程序必须通过执行EI(Enableinterrupts)指令来允许中断,通过执行DI(DisableInterrupts)指令来禁止中断
Restart指令,它们与CALL指令相似,也需要把当前程序计数器的值压入堆栈;NOP代表noop,即nooperation(无操作)。NOP指令使微处理器什么都不做
2. 6800微处理器
6800有一个16位程序计数器PC、一个16位堆栈指针SP、一个8位状态寄存器(作为标志)以及两个8位累加器A和B;有一个16位索引寄存器(indexregister),可用来保存一个16位地址
6800和8080所实现的操作相同—装载、保存、加法、减法、移位、转移、调用,但很明显的区别是:它们的操作码和助记符完全不同
操作码 指令 含义
20h BRA 转移
22h BHI 大于则转移
23h BLS 小于或相同则转移
24h BCC 进位为0则转移
25h BCS 进位置1则转移
26h BNE 不等则转移
27h BEQ 相等则转移
28h BVC 溢出为0则转移
29h BVS 溢出置1则转移
2Ah BPL 为正则转移
2Bh BMI 为负则转移
2Ch BGE 大于或等于0则转移
2Dh BLT 小于0则转移
2Eh BGT 大于0则转移
2Fh BLE 小于或等于0则转移
6800没有像8080中那样的奇偶标志位PF,但它有一个8080中没有的标志位—溢出标志位(overflowflag)。上述转移指令中有些依赖于标志位的组合8080和6800还有一个有趣的不同点:在两种微处理器中,LDA指令都是从一个特定的地址处装载到累加器
8080认为低位在前,高位在后;6800则认为高位在前,低位在后
现代处理器使用了一些技术用来提高速度,其中之一是流水线技术,处理器在执行一条指令的同时读取下一条指令。由于转移指令会改变执行流程,实际上这样达不到预期效果。现在的处理器还包含一个Cache(高速缓冲存储器),它是做在处理器内部的快速RAM阵列,用于保存最近执行的指令。因为计算机程序经常执行一些小的指令循环,因而Cache可以避免这些指令重复装载。所有这些速度提升措施都需要在处理器中有更多的逻辑器件和晶体管。
节选于 :http://course.cug.edu.cn/cugFirst/computer_culturebase/kewaidwu/kewaiduwu.htm
- 《编码:隐匿在计算机软硬件背后的语言》读书笔记 09
- 《编码:隐匿在计算机软硬件背后的语言》 读书笔记 01
- 《编码:隐匿在计算机软硬件背后的语言》 读书笔记 02
- 《编码:隐匿在计算机软硬件背后的语言》 读书笔记 03
- 《编码:隐匿在计算机软硬件背后的语言》读书笔记 04
- 《编码:隐匿在计算机软硬件背后的语言》读书笔记 05
- 《编码:隐匿在计算机软硬件背后的语言》读书笔记 06
- 《编码:隐匿在计算机软硬件背后的语言》读书笔记 07
- 《编码:隐匿在计算机软硬件背后的语言》读书笔记 08
- 《编码:隐匿在计算机软硬件背后的语言》读书笔记 10
- 编码——隐匿在计算机软硬件背后的语言
- 《编码:隐匿在计算机软硬件背后的语言》笔记01
- 《编码:隐匿在计算机软硬件背后的语言》笔记02
- 《编码:隐匿在计算机软硬件背后的语言》笔记03
- 《编码:隐匿在计算机软硬件背后的语言》笔记04
- 《编码:隐匿在计算机软硬件背后的语言》笔记05
- 《编码:隐匿在计算机软硬件背后的语言》笔记06
- 《编码-隐匿在计算机软硬件背后的语言》读后
- RMAN备份标准过程(案例)(数据库备份)
- Linux Makefile自动编译和链接使用的环境
- rownum详解
- JSONObject JSONArray 对象使用
- 全网唯一:移动互联网服务器端开发!
- 《编码:隐匿在计算机软硬件背后的语言》读书笔记 09
- 第三章 栈和队列 总结
- cloud control 12c Patch 18090046
- C#中控件的tag属性
- 有用的链接
- 针对表单的CSS3伪类选择器
- 各大浏览器 CSS3 和 HTML5 兼容速查表
- 09分布式数据仓库 HIVE -- HIVE优化
- C#窗口移动特效,Download()