寄存器
一个典型的CPU由运算器,控制器,寄存器(cpu工作原理)等器件构成。
运算器进行信息处理;
寄存器进行信息储存;
控制器控制各种器件进行工作;
内部总线连接各种器件,在他们之间进行数据的传送;
不同的CPU,寄存器的个数,结构是不同的,8086CPU有14个寄存器,AX, BX, CX, DX, SI, DI, SP, BP, IP, CS, SS, DS, ES, PSW;
通用寄存器
8086CPU所有寄存器都是16位的,存放两个字节
AX的低8位构成AL寄存器,高8位构成了AH寄存器
字在寄存器中的存储
一个字节由8个bit组成,可以存在8位寄存器中
几条汇编指令
注意:1.在写一条汇编指令或一个寄存器名称不区分大小写;
2.al,ah是独立的8位寄存器,分别只能存放两位16进制的数据,当执行汇编指令后出现158H时,最高位1会“丢失”(丢失是指进位值不能在8位寄存器中保存,但是CPU并不是真的丢失这个进位值,在哪里呢?)...........问题.........
3.指令的操作位数是一致的;
物理地址 每个内存单元在存储空间里都有唯一的地址→物理地址
16位结构CPU(8086CPU)
运算器一次最多处理16个数据
寄存器最大宽度16位
寄存器与运算器之间通路为16位
8086CPU 物理地址
物理地址=段地址×16+偏移地址
基础地址=段地址×16
8086寻址功能:基础地址+偏移地址=物理
段的概念
将若干个地址连续的内存单元看作一个段,用段地址×16 定位段的起始位置(基础地址),用偏移地址定位段中的内存单元
注意:断的起始位置也一定是16的倍数
偏移地址是16位,16位的寻址能力为64KB,所以一个段的最大长度是64kb
内存单元地址小节
1.CPU可以用不同的段地址和偏移地址形成同一物理地址
2.给定一个段地址,仅通过变化偏移地址来寻址,最多可以定位64KB的内存单元(偏移地址16位,变化范围0~FFFFH)
3.根据需要将地址连续,起始位置为16倍数的一组内存单元定义为一个段。
..............问题:当段地址给定多少时,CPU无论怎么变化偏移地址都无法寻到20000H单元?.....................
CS IP
工作原理
1.从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器;
2.IP=IP+所读取指令的长度,从而指向下一个指令;
3.执行指令,转到步骤一;
转移指令(能够改变CS:IP的内容)
jmp 段地址:偏移地址
(mov指令不用于修改cs:ip)
1 mov ax,6622H
2 jmp 1000:3
3 mov ax,0000
4 mov bx,ax
5 jmp bx
6 mov ax,0123H
7 转到第三步