本文共 1207 字,大约阅读时间需要 4 分钟。
一个典型的cpu由运算器,控制器,寄存器等器件构成,这些器件靠内部总线相连,简单来说,在cpu中,运算器进行信息处理,寄存器进行信息存储,控制器控制各种器件进行工作,内线总线连接各种器件,在他们之间进行数据传递,对于汇编程序员来说,寄存器是cpu中可以用指令读写的部件,不同的cpu,寄存器的个数和结构是不相同的,每一个寄存器都有自几的名称,AX,BX,CX,DX。。。。
通用寄存器 8086CPU 所有的寄存器都是16位的,可以存放两个字节,AX,BX,CX,DX这4个寄存器通常存放一般性的数据,叫通用寄存器,以AX为代表,寄存器逻辑结构为如图为了保证兼容,8086CPU的AX,BX,CX,DX这四个寄存器都可以分为两个可独立的8位寄存器来使用
AX-------AH+AL BX-------BH+BL CX-------CH+CL DX-------DH+DL 字在寄存器中的存储 出于兼容性的考虑,8086cpu可以一次性处理一下俩种尺寸的数据段
段的划分来自于cpu,由于8086cpu用“基础地址(段地址*16)+偏移量地址=物理地址” 的方式给出内存单元的物理地址,使我们可以用分段的概念来管理内存(一个段的长度最大为64kb)段寄存器
cs和ip cs和IP是8086cpu中最关键的寄存器,它指示了cpu当前要读取指令的地址,cs为代码段寄存器,ip为指令指针寄存器,在任意时刻设,设CS的内容为M,IP的内容为N,8086cpu 将从M*16+N单元开始,读取一条指令并执行(在任意时刻,cpu将cs:ip指向的内容当作指令执行) CPU根据cs:ip指向的内存单元的内容看作指令,因为在任何时候,cpu将cs,ip中的内容当作指令的段地址和偏移地址,用于合成他们的物理地址,到内存中读取 指令码代码段
前面说,对于8086cpu的pc机,我们可以根据需要,将一组内存单元定义为一个段,我们可以将长度N(N<=64kb)的一组代码,存在一组地址连续,起始地址为16的倍数的内存单元中,我们可以认为,这段内存是用来存放代码的,从而定义了一个代码段转载地址:http://qjkgn.baihongyu.com/