为什么目的操作数不能是立即数?

<1>为什么目的操作数不能为立即数?(是结果没有地方存么?)

<2>为什么段寄存器之间不能传递数据?

<3>为什么目的操作数不能为段寄存器?但有的大学教程说除了cs外,别的可以,真把我搞糊涂了.

<4>为什么两存储器地址间不能传送数据?

解答:

你的问题是初学者常见的问题。问题的解答很简单,处理器设计时已经确定这样实现,无法改变。


具体来说:
<1>为什么目的操作数不能为立即数?(是结果没有地方存么?)
立即数是编码在处理器指令代码中的,而处理器指令代码执行时通常禁止修改。所以,结果无法存在指令代码中。

<2>为什么段寄存器之间不能传递数据?
段寄存器的改变会影响程序的执行,不应该随意改变。所以,设计师考虑不设计这个功能的指令。毕竟,设计一条指令就需要具有相应的实现电路。

<3>为什么目的操作数不能为段寄存器?但有的大学教程说除了cs外,别的可以,真把我搞糊涂了.
少数几个指令允许段寄存器为目的操作数,例如MOV和POP指令。但通常不要改变CS、即将CS为目的操作数,因为这样程序执行的位置就改变了。绝大多数指令都不把段寄存器作为操作数,不管是目的操作数还是源操作数,例如算术逻辑运算指令。

<4>为什么两存储器地址间不能传送数据?
如果设计两存储器地址互相传送数据,在指令代码中需要两个指明存储器地址的字段,通常会大大增加指令代码的长度,还会增加指令解码的难度和电路复杂性。

猜你喜欢

转载自blog.csdn.net/weixin_45394002/article/details/109654842
今日推荐