鱼C论坛

 找回密码
 立即注册
查看: 2405|回复: 0

[学习笔记] 《汇编语言》第二章2.9节~2.12节

[复制链接]
发表于 2017-7-16 13:42:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
2.9节 段寄存器
段地址存放在段寄存器中,8086CPU有四个段寄存器:CS、DS、SS、ES。

2.10节 CS和IP
CS为代码段寄存器,IP为指令指针寄存器
在任意时刻,CS中的内存为M,IP中的内容为N,8086CPU将从内存M * 16 + N的物理地址访问内存,读取一条指令并执行(注意这里不是数据,二手指令)
8086CPU读取和执行指令的相关过程:
如2.6节形成物理地址的过程差不多,不过在那之前由CS提供段地址,有IP提供了偏移地址,最后将物理地址通过地址总线送到内存,然后将从内存得到的机器指令通过数据总线送到输入输出控制电路,输入输出控制电路将机器指令送入指令缓冲器,这时IP将自动在本身的基础上加从内存读取到的若干单元数,如读取了3B的内存单元,则 IP = IP + 3。最后执行控制器执行指令。

概括来讲就是:
(1)从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器;
(2)IP = IP + 所读取指令的长度,从而指向下一个指令;
(3)执行指令。转到步骤(1),重复这个步骤。

8086CPU在加电启动或复位后CS和IP被设置为CS = FFFFH,IP = 0000H,即8086PC机在启动或重启的时候执行的第一条指令的物理地址为FFFF0H,其中的指令为CPU第一条执行的指令。

如果内存中的某一条信息曾被CPU使用过的话,那么,它所在的内存单元必然被CS:IP指向过。

2.11节 修改CS、IP的指令
修改CS和IP不可以使用mov指令。
1、若想同时修改CS和IP可用”jmp 段地址:偏移地址“的指令完成。如;jmp 2AE3:3,执行后,CS = 2AE3H,IP = 0003H,CPU将从2AE3H处读取指令。
2、若想仅修改IP的内容,可用形如”jmp 某一合法的寄存器“的指令完成,如:jmp ax,指令执行前,ax = 1000H,CS = 2000H,IP = 0003H,指令执行后,ax = 1000H, CS = 2000H,IP = 1000H。

2.12节 代码段
我们可以将长度为N(N<=64KB)的一组代码,存在一组地址连续、起始位置为16的倍数的内存单元中,我们可以认为,这段内存是用来存放代码的,从而定义了一个代码段。

总结:
(1)CS和IP寄存器是分别来存放段地址和偏移地址的寄存器,CPU执行的都是他们指向内存中物理地址的的机器指令。
(2)在任意时刻,CPU执行的是CS:IP所指向的机器指令
(3)8086CPU的工作过程:
         1、从CS:IP指向的内存读取指令,读取的指令进入指令缓冲器;
         2、IP指向下一个指令
         3、执行指令(重复步骤(1),重复这个过程)
(4)8086CPU提供可以修改CS和IP中内容的指令:
1、jmp 段地址:偏移地址
2、jmp 某一合法寄存器

评分

参与人数 1鱼币 +3 收起 理由
小甲鱼 + 3

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 10:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表