汇编笔记03

  • 8086CPU在访问内存时要由相关部件提供内存单元的段地址和偏移地址,送入地址加法器合成物理地址。
  • 段地址在8086CPU的段寄存器中存放。8086CPU有4个段寄存器:CS、DS、SS、ES。
  • CS和IP是8086CPU中两个最关键的寄存器,它们指示了CPU当前要读取指令的地址。CS为代码段寄存器,IP为指令指针寄存器,从名称上我们可以看出它们和指令的关系。
  • 在8086PC机中,任意时刻,设CS中的内容为M,IP中的内容为N,8086CPU将从内存M×16+N单元开始,读取一条指令并执行。也可以这样表述:8086机中,任意时刻,CPU将CS:IP指向的内容当做指令执行。
  • 8086CPU的工作过程可以简要描述如下:
    1. 从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器;
    2. IP=IP+所读取指令的长度,从而指向下一条指令;
    3. 执行指令。转到步骤1,重复这个过程。
  • 修改CS、IP的指令:jmp指令
  • 想同时修改CS、IP的内容,可用形如“jmp段地址:偏移地址”的指令完成。例:
    • jmp 2AE3:3,执行后:CS=2AE3H,IP=0003H,CPU将从2AE33H处读取指令。
    • jmp 3:0B16,执行后:CS=0003H,IP=0B16H,CPU将从00B46H处读取指令。
  • “jmp 段地址:偏移地址”指令的功能为:用指令中给出的段地址修改CS,偏移地址修改IP。
  • 若想仅修改IP的内容,可用形如“jmp 某一合法寄存器”的指令完成,如:
    • jmp ax,指令执行前:ax=1000H,CS=2000H,IP=0003H;指令执行后:ax=1000H,CS=2000H,IP=1000H
    • jmp bx,指令执行前:bx=0B16H,CS=2000H,IP=0003H;指令执行后:bx=0B16H,CS=2000H,IP=0B16H
  • “jmp 某一合法寄存器”指令的功能为:用寄存器中的值修改IP
  • jmp ax,在含义上好似:mov IP,ax

转载请注明:guanjianhe的博客 » 汇编笔记03