段寄存器

1.段寄存器

8086CPU有4个段寄存器:CS、DS、SS、ES。当8086CPU访问内存时,由这4个段寄存器提供内存单元的段地址。


CS和IP是8086中最关键的寄存器,他们指示了CPU当前要读取指令的地址。CS是代码段寄存器,IP为指令指针寄存器。在8086PC机中,任意时刻,设CS中的内容是M,IP中的内容是N,8086CPU将从内存地址:M*16+N处读取指令并执行。也可以这样表述,8086机中,任意时候,CPU将CS:IP指向的内容当做指令执行,。CPU将CS、IP中的内容当做指令的段地址和偏移地址,用他们合成物理地址。


2.更改CS:IP的值

mov指令没法完成这个任务,8086CPU为CS:IP提供了另外的指令来改变他们的值:转移指令

比如,想同时修改CS:IP的内容:jmp 段地址:偏移地址。jmp 2AE3:3。功能:用指令中的段地址修改CP,偏移地址修改IP。


想修改IP的内容,可用指令“jmp 寄存器”来完成,jmp ax功能类似mov IP,ax.

jmp ax指令执行前:ax=1000H,CS=2000H,IP=0003H

指令执行后:ax=1000H,CS=2000H,IP=1000H


3.代码段

对于8086PC机,在编程时,可以根据需要,将一组内存单元定义为一个段。

可以将长度为N(N<64)的一组代码,存在一组连续地址、起始地址为16的倍数的内存单元中,这段内存是用来存放代码的,从而定义一个代码段。

将一段内存当做代码段,仅仅是我们编程时的一种安排,CPU并不会由于这种安排就自动地将我们定义得代码段中的指令当做指令执行。

CPU只认被CS:IP指向的内存单元中的内容为指令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值