CPU由运算器,寄存器,控制器等组成···
在CPU内部:
运算器进行数据处理
寄存器进行信息的存储
控制器控制各种器件工作
内部总线相连来控制各个器件工作
而程序员是通过寄存器的内容来实现对CPU的控制
16位寄存器可分为两个独立的8位寄存器单独使用
2.2字在寄存器中的存储
处于兼容性的考虑,8086CPU可以一次性处理以下两种数据:
字节byte 一个字节
字word 两个字节
2.3几条汇编指令
mov ax,18
mov ah, 78
add ax, 8
mov ax,bx
add ax,bx
不区分大小写
在这里要注意:
**寄存器的位是一定的,
add 8226,8226 = 1044C中的1要舍去**
在进行运算和数据传送时要注意两个操作对象的位数应当是一致的
//2的4次方
mov ax,2
add ax ,ax
add ax,ax
add ax,ax
//由此实现2的4次方的计算
//2^1 = 2
//2^2 = 4
//2^3 = 8
//2^4 = 16
2.4物理地址:
内个内存单元的地址成为物理地址
CPU 16位的含义:
运算器最多一次性处理16位数据
寄存器的最大宽度为16位
寄存器和运算器之间的通路为16位
ADD:
计算机是以字节作为最小存储单元的,不是位,
16根地址线,寻址能力为:2^16 / 1024 = 64KB
2.6 8086CPU给出物理地址的方法:
8086系列的计算机,CPU外部地址总线为20根,CPU内部总线为16根
,采用的方法:
8086CPU采用一种在内部用两个16位地址合成的方法来形成一个20位的物理地址。
用一个16位生成段地址,再用一个16位寄存器生成偏移地址,送到地址加法器,生成20位的物理地址。
地址加法器是采用物理地址 = 段地址 * 16 + 偏移地址。
段地址 * 16 更常规的说法是左移四位。
右移一位相当于除2,右移n位相当于除以2的n次方。这里是取商哈,余数就不要了,低位要移出。
2.7“段地址 * 16 + 偏移地址”的本质含义:
在CPU进行访问时,用一个基础地质(段地址 * 16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。
2.8短的概念:
内存并没有分段,只是CPU对内存地址分了段,使得我们可以用分段的方式管理内存。
以后,在编程时可以把地址连续的内存单元看做一个段。有两点需要注意:
段地址* 16 必然是16的倍数,所以一个段的起始地址也一定为16的倍数,
偏移地址为16位,所以一个段的长度最大为64KB
··待续