我们用分段的思想来管理内存,将若干地址连续的内存单元看做一个段
如地址10000H-1007FH 10080H-100FFH 的内存单元组成两个段 它们的起始地址(基础地址)为10000H、10080H 段地址为1000H 1008H 大小都是80H
注意:
段地址*16是16的倍数 所以一个段的起始地址是16的倍数 偏移地址为16位 16位地址的寻址能力是64KB 所以一个段的长度最大为64KB
CS 和 IP
CS为代码段寄存器 IP为指令指针寄存器8
8086CPU将从内存CS*16 + IP 开始,读取一条指令并执行 任意时刻 CPU将CS:IP指向的内容当作指令执行
修改CS IP的值
不能用mov 用jmp
jmp 段地址:偏移地址 jmp 2AE3:3 CPU将从2AE33H处读取指令
若想修改IP的内容,可用 jmp 某一合法寄存器 指令
jmp ax 含义好似 mov IP,ax
代码段 存放代码的片段 如123B0H-123B9H这是一个代码段 存放了指令 段地址为123BH 长度为10个字节 代码段仅仅是编程时的一个安排
浙公网安备 33010602011771号