在35页的小结中第三点:
(3)8086CPU的工作过程:
1、从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器
2、IP指向下一条指令
...
这里看到CPU是一条指令一条指令的读的,从之前章节的图例来看,读完一条指令后接着就执行了,那么,是不是意味着CPU每读一次必然是一条完整的指令?像JAVA一条指令是由“;”结束的,CPU是否也是用类似";"来判断一条指令已经结束?
- [doing1984] 我做错了~~~! mov ax,1 mov ds,ax 04/18 16:54
- [doing1984] 3.3字的传送写得很清楚了“因为8086CPU是16位结构,有16根数据线.......” 04/18 15:49
- [doing1984] 看了下别人的答案,说是修改了四次了,我之前也是想着四次的,但是我觉得执行指令后IP是自己移动的,不是 04/18 10:56
- [doing1984] 我觉得我这种解释比书说的“左移4位”要好理解一些,书上写的进制好混乱,看得我一头雾水 04/17 20:15
- [doing1984] 谢谢游客,反正它一次读一条指令就对了,不知道书后面有没有具体解释 09/03 08:21
- [游客] 十六进制10001H不是10H(16)的整数倍啊。 段地址最后一位如果为0,说明SA*10H=** 08/31 15:25
- [游客] 应该与源代码中指令操作符有关系,特定的操作符号集合决定了这个指令将被编译成多少个字节码,当然也包括指 08/31 15:15
- [游客] 不是的,你看到的“;”是字符层面上的,而机器指令是2进制层面的。你的源代码经过编译器的编译才能变成机 08/31 15:12
- [doing1984] “这不是一个16位数”写错了,应该是这不是一个16的倍数 08/31 09:08
- [doing1984] 上面那个写错了,20000H-FFFFH=65537 08/31 09:04
[ 游客 发表于 2012-08-31 15:12 ]
不是的,你看到的“;”是字符层面上的,而机器指令是2进制层面的。你的源代码经过编译器的编译才能变成机器码,这个过程才会判断你源代码的起止,到了cpu指令级别已经处理完毕了,这时候的每条指令占多少字节,应该有信息的,至于深层的细节,我也不知道了。
[ 游客 发表于 2012-08-31 15:15 ]
应该与源代码中指令操作符有关系,特定的操作符号集合决定了这个指令将被编译成多少个字节码,当然也包括指令符号本身。
[ doing1984 发表于 2012-09-03 08:21 ]
谢谢游客,反正它一次读一条指令就对了,不知道书后面有没有具体解释