. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(CPU工作原理)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  2.10 cs和ip  [待解决] 回复[ 8次 ]   点击[ 490次 ]  
yunlong
[帖 主]   [ 发表时间:2012-05-17 10:33 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-05-17 10:25
不会拉图,就是“输入输出控制电路将物理地址20000H送上地址总线”和“从内存20000H单元开始存放的
机器指令B8 23 01通过数据总线被送入CPU”两张图,问题是既然被送上地址总线的是20000H那读取不应该就是在20000H里的“B8“一个值吗?为什么一下出来3个,是什么原因导致出来了3个?为什么不是在20000H里的那个一个值(图片在http://kb.cnblogs.com/a/1422236/的2.14和2.15两张)
tomato
[第1楼]   [ 回复时间:2012-05-17 12:23 ]   [引用]   [回复]   [ top ] 
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51
cpu要执行一条指令,必须要将这条指令读取完整后再去执行,至于,内存到Cpu内部的传送,肯定是一次传送一个字的长度。
cat_mouse
[第2楼]   [ 回复时间:2012-07-03 20:09 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2012-07-02 23:18
一条指令有几个字节是什么时候判断的呢?按理说CPU要从主存物理地址读取内容后才知道指令有几个字节。这个时候数据总线传送几个字节呢?如果不是在数据总线靠主存端有这个判断的单位,数据总线不知道应该传递几个字节

难道数据总线每次只传递一个,CPU判断了指令还不完整,就继续再传一个字节

还是说,数据总线不管指令是几个字节,不停的传,只是CPU只取一条完整指令,多余的内容被丢弃?
110011001110
[第3楼]   [ 回复时间:2012-07-19 20:53 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-07-18 22:23
其实有些问题,可以不明白,“就是这样的就好了”。应该不影响未来的学习进程。
doing1984
[第4楼]   [ 回复时间:2012-08-31 14:10 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-08-21 09:46
这个问题也是我想问的,为什么CPU有时候一次取了3个单元,有时候又只取了2个单元,这到底是为什么啊~~~~!
xuer2016
[第5楼]   [ 回复时间:2012-10-23 13:15 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-10-16 16:56
问了下度娘,有人说在第一个指令 也就是 B8 ,表示指令、相关容器、指令长度等信息,求真相!!
fpamc
[第6楼]   [ 回复时间:2012-10-24 07:37 ]   [引用]   [回复]   [ top ] 
荣誉值:30
信誉值:4
注册日期:2012-01-01 16:36
http://www.asmedu.net/blog/user/postcontent.jsp?neighborId=24179&kindId=36107&postId=41060&readSg=1&vs=1
wqh963577494
[第7楼]   [ 回复时间:2012-12-22 16:04 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-12-19 13:28
导致出来三个是因为这条指令占了三个字节
eaookii
[第8楼]   [ 回复时间:2013-03-16 14:40 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-03-16 12:52
我也在困惑这个问题,看了6楼同学的链接。找到一个说法:
数据和指令都是存放在内存单元中的,CPU是分辨不出来的,从一个内存单元读出0-1串,CPU仅仅可以分辨出来这个0-1串在CPU指令集中是存在还是不存在。如果存在就执行,否则就会产生非法指令的错误。 

其实还是有一些疑问,不是很清晰,但基本上,我认为可能是这样的:
首先是找到20000,读里面的数据B8,这个要先转换成二进制,到底代表什么,我不知道,但可能这个二进制数据不是一条指令,所以,CPU继续往下读,再读20001的23。加起来就是,是怎么加,哪个在前哪个在后,我也不清楚,但可能就是这两个数据相加。得到一个新的二进制数据。CUP再判断,这个二进制数据可不可以执行,如果可以就执行,不可以就再读,只到把读到的所有数据相加后得到的新的二进制数据可以被CPU理解为一条指令为止,然后CPU就执行这条指令。
后面的就好理解了,CPU读了多少个单元,IP就加上多少,再重复上面的步骤。
不知道我理解的对不对
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved