汇编网首页登录博客注册
byzero的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
好友圈
文章收藏
友情链接

[2010-07-08 14:59] 汇编语言——第三天

1.段寄存器
    当8086CPU要访问内存时由CS(code segment)、DS(data segment)、SS(stack segment)、ES(extra segment)这4个段寄存器提供内存单元的段地址。        
2.CS和IP
    CS(代码段寄存器)和IP(指令指针寄存器)是8086CPU中两个最关键的寄存器,它们指示了CPU当前要读取指令的地址。
    8086机中,任意时刻,CPU将CS:IP指向的内容当作指令执行。
8086CPU的工作过程简要描述如下:
(1)从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器;
(2)IP=IP+所读取指令的长度,从而指向下一条指令;
(3)执行指令。撞到步骤(1),重复这个过程。
    在8086CPU加电启动或复位后,CS和IP被设置为CS=FFFFH,IP=0000H,记载8086PC极刚启动时,CPU从内存FFF0H单元中读取指令执行,FFFF0H单元中的指令是8086PC机开机后执行的第一条指令。
    第一章中说,在内存中,指令和数据没有任何区别,都是二进制信息,CPU在工作的时候把有的信息看作指令,有的信息看作数据。现在,如果提出一个问题:CPU根据什么将内存中的信息看作指令?
    我们可以说,CPU将CS:IP指向的内存单元中的内容看作指令,因为,在任何时候,CPU将CS、IP中的内容当作指令的段地址和偏移地址,用它们合成指令的物理地址,到内存中读取指令码,执行。
    如果说,内存中的一段信息曾被CPU执行过的话,那么,它所在的内存单元必然被CS:IP指向过。

 那CPU又是根据什么将内存中的二进制信息看作数据呢???

3.修改CS、IP的指令
    在CPU中,CPU从何处执行指令是由CS、IP中的内容决定的,程序员可以通过改变CS、IP中的内容来控制CPU执行目标指令。
    mov指令被称为传送指令,但不能用于设置CS、IP的值,当然8086CPU提供了jmp(转移指令)来修改CS、IP的值。
    若想同时修改CS、IP的内容,可以形如“jmp 段地址:偏移地址”的指令完成。
    如仅想修改IP的内容,可以形如“jmp 某一合法寄存器”的指令完成。功能解释:用寄存器中的值修改IP。
    jmp ax,在含义上类似:mov IP,ax(不能使用此命令,因为CPU未提供,只是含义上类似)
4.代码段
    将一段内存当作代码段,仅仅是我们在编程时的一种安排,CPU并不会由于这种安排,就自动地将我们定义的代码段中的指令当作指令来执行。CPU只认被CS:IP指向的内存单元中的内容为指令。所以要执行代码段中的指令,需要要将CS:IP指向所定义段中的第一条指令的首地址。
评论次数(0)  |  浏览次数(1078)  |  类型(汇编笔记) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码