[004][汇编语言]检测点2.3 CS IP jmp 指令执行 段地址寄存器

检测点2.3

[004][汇编语言]检测点2.3 CS IP jmp 指令执行 段地址寄存器_第1张图片
《汇编语言》检测点2.3

遵循指令被送入指令缓冲器 -> IP值自动增加 -> 指令被执行的顺序 : 四次修改

  • mov ax,bx 被送到 指令缓冲器 之中
  • IP自动增加【第一次修改】
  • mov ax,bx被执行
  • sub ax,ax被送到 指令缓冲器 之中
  • IP自动增加【第二次修改】
  • sub ax,ax被执行,ax=ax-ax, ax中的内容变成0000H
  • jmp ax被送到 指令缓冲器 之中
  • IP自动增加【第三次修改】
  • jmp ax指令被执行 ,就是讲IP的内容修改成0000H【第四次修改】

8086CPU 读取执行指令过程的简要描述

逻辑结构展示

[004][汇编语言]检测点2.3 CS IP jmp 指令执行 段地址寄存器_第2张图片
8086 CPU 逻辑结构展示

8086CPU 读取执行指令过程的简要描述

1、从CS:IP 指向的内存单元读取指令,读取的指令进入指令缓冲器
2、IP寄存器内的值自动增加,指向下一条指令
3、执行指令,并转到步骤1

8086 CPU 寄存器

  • 8086CPU,有一个叫做IP指令指针寄存器
  • 8086CPU ,有4个段地址寄存器:CS DS SS ES
  • CS代码的段地址寄存器
  • CPU将 CS:IP(即段地址X16+偏移地址)指向的内存单元中的内容看作是指令(而非数据
  • 8086CPU,加电启动或者复位后,CS=FFFFH,IP=0000H,因此,CS:IP=FFFF0H单元中的指令是8086PC机器开机后执行的第一条指令

汇编指令

  • (物理地址 计算方法 复习点我)
  • jmp 段地址:偏移地址 含义是:用指令中的段地址修改CS寄存器中的内容,用指令中的偏移地址修改IP寄存器中的内容
汇编指令  jmp 2AE3:3
执行后  CS = 2AE3H  IP=0003H
CPU 将从 2AE33H 处开始读取指令

  • jmp 某一合法寄存器 : 用寄存器中的值修改IP寄存器中的值
jmp ax 
指令执行前 ax=1000H CS=2000H IP=0003H
指令执行后 ax=1000H CS=2000H IP=1000H

IP寄存器中的值被修改成和ax一样的了
  • jmp 指令是一种转移指令mov指令是一种传送指令

IP 寄存器的自动增加

  • 执行的指令占用了 2 个内存单元,IP寄存器的值就会自动加 2
  • 执行的指令占用了 3 个内存单元,IP寄存器的值就会自动加 3
  • 一个内存单元存放一个Byte(字节),也写作一个B,3个内存单元意味着长度就是3Byte,(点我复习 内存单元, 见小标题-地址宽度)

8086CPU 读取,执行一条指令的过程

  • 书上本章的图解是step-by-step的,相当漂亮,强烈推荐!

《汇编语言(第3版)》 第2章 寄存器 26页~29页


[004][汇编语言]检测点2.3 CS IP jmp 指令执行 段地址寄存器_第3张图片
图2.11

[004][汇编语言]检测点2.3 CS IP jmp 指令执行 段地址寄存器_第4张图片
图2.12~2.14

[004][汇编语言]检测点2.3 CS IP jmp 指令执行 段地址寄存器_第5张图片
图2.15~2.17

[004][汇编语言]检测点2.3 CS IP jmp 指令执行 段地址寄存器_第6张图片
图2.18~2.19

你可能感兴趣的:([004][汇编语言]检测点2.3 CS IP jmp 指令执行 段地址寄存器)