鱼C论坛

 找回密码
 立即注册
查看: 1845|回复: 2

8086cpu中ip是怎么知道要自动加2或3的

[复制链接]
发表于 2012-8-31 21:51:05 | 显示全部楼层 |阅读模式
1鱼币
8086cpu中ip是怎么知道要自动加2或3的

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-31 22:26:30 | 显示全部楼层
根据指令的长度不同
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-9-3 09:22:20 | 显示全部楼层
早上好~   楼主。  

问题  :8086cpu中ip是怎么知道要自动加2或3的

分析,  cpu 的执行指令的过程
           1, 从cs:ip指向的内存单元读取指令,  读取的指令进入指令缓冲器
           2, ip =ip+读取指令的长度,  从而指向下一条指令 (现在知道了吗?)
           3,指行指令,重复上面的过程
比如:( 假设  )
           cs = 1000  ,  ip = 0
         
          (内存)    (汇编指令对应的内存的内容)      (汇编指令)
          1000:0           b80000   ( 十六进制)                mov ax, 0
          1000:3           050100                                    add  ax,   1     
          1000 :  6          40                                             inc    ax
  
  你看     cs = 1000  ,  ip = 0,   这时cpu将从cs:ip指向的内存单元读取指令,  读取的指令进入指令缓冲器, 也就是 b80000 (mov ax, 0),    ip =ip+读取指令的长度, 也就是 ip = ip+3  因为 b80000 (mov ax, 0)占 3个 字节,  所以加3 ,              加3后指向了 1000:3 ,这时cpu将从cs:ip指向的内存单元读取指令,  读取的指令进入指令缓冲器, 也就是 050100 (add  ax, 1),    ip =ip+读取指令的长度, 也就是 ip = ip+3               加3后指向了 1000:6 ,这时cpu将从cs:ip指向的内存单元读取指令,  读取的指令进入指令缓冲器, 也就是 40 (inc  ax),    ip =ip+读取指令的长度, 也就是 ip = ip+1   

好了~   楼主  我描述完毕  希望能帮助你            
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-11 19:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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