8086cpu给出物理地址的方法
8086cpu有20位地址总线,即可以传输20位地址,但是8086cpu一次只能给出十六位二进制数,其通过分两次输送,第一次传输高位地址,这部分称为段地址,第二次传输低位地址,这部分称为偏移地址,它们被传入地址加法器,地址加法器进行(段地址*16+偏移地址),再传到控制输入输出电路
段
可以把一些连续且段地址相同的内存单元认为是一个段,一个段最大位64kb(由十六位偏移地址限制)
段寄存器
段地址存放在段寄存器中,8086cpu有CS,DS,SS,ES四个段寄存器,访问内存地址时有段寄存器来提供段地址
IP寄存器(指令指针寄存器)
IP寄存器存放确定指令地址的偏移地址,cpu会执行CS:IP指向的指令,每执行完一条指令,IP会自动增加至下条指令
(开机时IP=0000H,CS=FFFFH,即FFFF0H处指令为开机后执行的第一条指令)
修改CS:IP
修改CS:IP需要用jmp指令,jmp指令的用法形如“jmp 段地址:偏移地址”, 仅需要修改IP时可以使用形如“jmp 某寄存器”(意为将某寄存器的值赋给IP)
代码段
可以根据需要把一组内存单元定义为段,把一些代码存在段中,想要执行这段代码时使CS:IP指向这个段