CPU如何取得下一条指令

rediums 2008-10-07 08:56:28
X86指令的长短是不同的,有的一个字节长,有的两个字节甚至更长,那么在指令指针IP指向一个内存单元的时候,CPU是如何取得一条完整的指令呢?比如指令是取一个字节还是几个字节?
...全文
458 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
clojurer 2008-11-15
  • 打赏
  • 举报
回复
好贴!! !
flyhighfairy 2008-10-20
  • 打赏
  • 举报
回复
重贴
flyhighfairy 2008-10-20
  • 打赏
  • 举报
回复
有道理!终于明白啦:)
rediums 2008-10-08
  • 打赏
  • 举报
回复
辛苦了,小弟万分感谢!!!
vyeah 2008-10-07
  • 打赏
  • 举报
回复
为了回答你这个问题,我特地翻箱倒柜翻出以前的书,如下:
如mov al,7
机器码 1011 0000
0000 0111
设程序放在以00h开始的存储单元,在执行时,给pc(程序计数器)赋以第一条指令的地址,然后进入第一条指令的取指阶段
1.pc的内容送至地址寄存器
2.当pc的内容送至地址寄存器后,pc的内容自动加1
3.地址寄存器把地址号00h通过地址总线送至存储器,经地址译码器译码,选中00号单元
4.cpu给出读命令
5.所选中的00号单元的内容读至数据总线上
6.读出的内容经过数据总线送至数据寄存器
7.因为是取指阶段,取出的为指令,送至指令寄存器,然后经译码发出执行这条指令的各种控制命令
此后就转入了第一条指令的执行阶段,经过对操作码译码后知道,这是一条把操作数送至al的指令,而操作数在第二个字节,所以要取操作数
1.把pc内容送至地址寄存器,然后pc自动加1
2.地址寄存器通过地址总线把地址号送至存储器,经过译码选中相应存储单元
3.cpu发出读命令
4.选中的存储单元的内容被读至数据总线,通过数据总线把读出的内容送至dr
5.因已知读出的是操作数,且指令要求把它送累加器al,故dr通过内部数据总线送至al
执行完毕

21,494

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧