第二章 寄存器(CPU工作原理)
CPU概述:
*一个典型CPU由运算器,控制器,寄存器组成
*CPU——内部总线——内部器件
CPU——外部总线——主板器件
寄存器概述:
*8086CPU寄存器是16位——可存放两个字节
*AX,BX,CX,DX——通用寄存器
*逻辑结构
*16位数据存放情况
数据:18
二进制表示:10010
在寄存器AX中存储:
*一个16位寄存器最大存储2^16-1个数据
*AH可分为AH和AL(H高:8-15 L低:0-7)
*八位寄存器存储逻辑:
*AL和AH可独立使用
几条汇编指令
(指令不区分大小写)
*当计算值超过8位寄存器最大值时,超过的位不能被保存,但不会被丢失
1.AX=F4A3H
2.AH=35A3H
3.AL=35C6H
4.AX=6B6BH
5.BX=826CH
6.CX=AX=6B6BH
7,AX=BX=826CH
8.AX=F4C6H
9.AL=F482H
10.AH=6C82H
11.AH=C682H
物理地址
*物理地址:CPU访问内存时给出内存单元的地址
16位CPU
1.运算器一次最多可以处理16位数据
2.寄存器的最大宽度为16位
3.寄存器和运算器之间的通路是16位
*8086有20位地址总线(2^20=1MB),内部为16位(2^16=64KB)
8086利用16位合成20位示意图:
地址加法器
*物理地址=段地址x16+偏移地址
*段地址x16也可以说为数据左移四位
*一个二进制数据左移N位,相当于数据乘以2^N(其他进制同理)
段的概念
*编程时可根据需要将若干个地址连续的内存单元看作一个段
用段地址x16定位段起始地址
用偏移地址定位段内存地址
*偏移地址为16位 一个段长度最大为64K
*偏移地址16位,变化范围为0~FFFFH,最多可寻64K
段寄存器
*8086有四个段寄存器:CS DS SS ES
8086访问内存用这四个段寄存器提供段地址
*CS IP为8086中最关键的寄存器,他们指示了CPU当前要读取指令的地址
修改CS IP指令
*mov不能设置CS IP的值
8086CPU为CS IP提供了转移指令来改变他们的值
jmp段地址:偏移地址
jmp 2AE3:3
jmp 3:OB16
功能:用指令给出的段地址修改CS
用偏移地址修改IP
*仅修改IP的内容
jmp 某一合法寄存器
功能:用于寄存器中的值修改IP
CPU运行流程
代码段
*对于8086,编程时可将一组内存单元定义为代码段
*可将长度为N的一组代码存在一组地址连续,起始地址为16的倍数的内存单元中, 用来存放代码
ex:
*CPU只认被 CS:IP 指向的内存单元中的内容为指令