CPU概述:
一个典型的CPU由运算器、控制器、寄存器等器件构成,这些器件靠内部总线相连。
内部总线与外部总线区别:
内部总线实现CPU内部各个器件之间的联系。
外部总线实现CPU和主板上其他器件的联系。
寄存器概述:
对于CPU内部也需要存放数据,所以除了高级缓存和二级缓存,还有深入的寄存器。
8086CPU有14个寄存器:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。
2.1通用寄存器
8086CPU的所有寄存器都是16位的,可以存放两个字节。
AX、BX、CX、DX通常用来存放一般性数据被称为通用寄存器。
以AX寄存器为例,结构如图
一个16位的寄存器可以存储一个16位的数据。
16位数据在寄存器中的存放情况:
数据:18
二进制表示:10010
在寄存器AX中的存储:
数据:20000
二进制表示:1001111000100000
在寄存器AX中的存储:
一个16位寄存器所能存储的数据最大值为:2的16次方-1=65535
8086的上一代寄存器都是8位的;
为保证兼容性,这四个16位寄存器都可以分为两个独立的8位寄存器使用。
AX可以分为AH和AL(H是高位,L是低位,High和Low)
BX可以分为BH和BL
CX可以分为CH和CL
DX可以分为DH和DL
8086的8位寄存器的存储逻辑:
以AX为例,8086的16位寄存器分为两个8位寄存器的情况:
AH全部填0
AX的低8位(0位~7位)构成了AL寄存器,高8位(8位~15位)构成了AH寄存器。
AH和AX是可以独立使用的8位寄存器。
8086的8位寄存器数据存储情况:
一个8位寄存器所能存储的数据的最大值是255(2的15次方-1)
2.2 字在寄存器中的存储
一个字可以存在一个16位寄存器中,这个字的高位字节和低位字节自然就存在寄存器的高8位寄存器和低8位寄存器中。
1个字=2个字节=16位
关于数制的讨论:
由于一个内存单元可以存放8位数据,CPU中的寄存器又可以存放n个8位数据,也就是说计算机的数据大多是由1~N个8位数据构成的。
用16进制来表示数据可以直观的看出这个数据是由哪些8位数据构成的。每两位对应一个八进制。16进制数的一位相当于二进制数的四位。
2.3 几条汇编指令
注:汇编指令不区分大小写。第一行应该是将18送入AX
CPU执行下表中的程序段的每条指令后,对寄存器中的数据进行的改变。
答案应该是044CH(后面的H代表16进制),16进制8226+8226=1044C,但是寄存器只能存放16位二进制,16进制数的一位对应二进制数的四位,所以前面的1无法存放到AX寄存器中,这个1以后再说。
答案应该是0058H,十六进制C5+93=158,但是AL是AX的低8位寄存器,这里将AL和AH看作两个独立的寄存器,互不相干,一个8位寄存器只能存放16进制的两位,158前面高位的1无法存入AL中,也不会存入AH中。
到这里先完成检测题,再往下进行学习吧,后面的题目会越来越难,学习并不是越快越好,要扎实。