检测点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 读取执行指令过程的简要描述
逻辑结构展示
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页