8086CPU所有的寄存器都是16位的可以存放两个字节。
为了保证兼容性这四个寄存器都可以分为两个独立的8位寄存器使用。
AX可以分为 AH还有AL; AH还有AL寄存器是可以独立使用的8位寄存器
BX可以分为BH还有BL;
CX可以分为CH还有CL;
一个字可以存在一个16位的寄存器中,这个字的高位字节和低位字节自然就存在这个寄存器的高8位寄存器和低8位寄存器中
汇编指令是不区分大小写的
如果超过数据的存储范围,就会有数据的丢失
这里的丢失指的就是进位制不能在8位寄存器中保存,但是CPU不是真的丢弃这个进位值
CPU访问内存单元的时候要给出内存单元的地址,所有的内存单元构成的存储空间是一个一维的线性空间
我们将这个唯一的地址称为物理地址。
决定一个CPU是多少位的有以下三方面的特点
运算器一次最多可以处理16位的数据。
寄存器的朂大宽度为16位
寄存器和运算器之间的通路是16位的。
8086CPU在读写内存的时候发生了一些事情:
CPU中的相关部件提供两个16位的地址,一个称为段哋址另一称为偏移地址
段地址和偏移地址通过内部总线送入一个称为地址加法器的部件;
地址加法器将两个16位地址合并成一个20位的地址。
地址加法器合成物理地址的方法:
物理地址=段地址×16+偏移地址
内存并没有分段段的划分来自于CPU,由于8086CPU用“段地址*16”+偏移地址=物理地址嘚方式实际上,内存并没有划分成一个一个的段
以后在编程的时候,根据需要将若干个地址连续的内存单元看作一个段用段地址X16定位段的起始地址(基础地址),用偏移地址定位段中的内存单元
段的起始地址一定是16的倍数。
偏移地址为16位所以一个段的长度最大为64k。
CPU可以用不同的段地址还有偏移地址来形成同一个物理地址
段寄存器就是用来提供段地址的。8086CPU有4个段寄存器:CS、DS、SS、ES
当8086CPU要访问内存的时候由这4个段寄存器提供内存单元的段地址。
CS和IP是8086CPU中最关键的寄存器他们指示了CPU当前要读取的指令的地址。
CS为代码段寄存器用来存放指令的段地址。
IP为指令指针寄存器用来存放指令的偏移地址。
修改CS、IP的内容不能使用MOV指令而是通过使用 JMP进行的。
jmp 段地址:偏移地址
功能:用指令中给出的段地址修改CS偏移地址修改IP
可以将长度为N(N<=64KB)的一组代码,存在一组地址连续、起始地址为16的倍数的内存单元中这段内存是用来存放代码的,从而定义了一个代码段
CPU只认被CS:IP指向的内存单元中的内容为指令。
————————————————