跳转至

6.段地址、偏移地址、物理地址、数据段、代码段、堆栈段

1.段地址、偏移地址、物理地址

  • \(物理地址=段地址\times 16+偏移地址\)

  • x16即段地址左移一位

  • 例:$ $

    段地址 偏移地址 物理地址
    2000H 1F60H 21F60H
    2100H 0F60H 21F60H
    21F0H 0060H 21F60H
    21F6H 0000H 21F60H
    1F00H 2F60H 21F60H

2.数据段

  • ds寄存器存储数据段地址

  • 形如[60]​的地址表示ds寄存器中地址+60偏移地址

3.代码段

  • 代码段由cs:ip寄存器来表示

  • cs寄存器存储代码段的地址,ip寄存器存储偏移地址(可以理解为指针),cs寄存器左移一位加上ip寄存器即为当前要执行的机器码的物理地址

  • jmp指令

  • jmp 1000:3​:表示将cs寄存器改为1000,ip寄存器改为3,实现运行代码的跳转

  • jmp 2​:表示将ip寄存器改为2

4.堆栈段

  • 堆栈段由ss:sp寄存器来表示
  • ss寄存器存储栈的地址,sp寄存器存储偏移地址,表示栈的指针,指向栈顶
  • push、pop指令

  • push ax:将ax中的数据入栈

  • pop ax:出栈并存入ax
  • image