初学汇编,见到指令中n多限制,如:

初学汇编,见到指令中n多限制,如:<1>为什么目的操作数不能为立即数?(是结果没有地方存么?)<2>为什么段寄存器之间不能传递数据?<3>为什么目的操作数不能为程序段寄存... 初学汇编,见到指令中n多限制,如:
<1> 为什么目的操作数不能为立即数?(是结果没有地方存么?)
<2> 为什么段寄存器之间不能传递数据?
<3> 为什么目的操作数不能为程序段寄存器?
<4> 为什么两存储器地址间不能传送数据?
展开
 我来答
KawaguchiSky
2011-08-18 · TA获得超过2638个赞
知道小有建树答主
回答量:296
采纳率:100%
帮助的人:129万
展开全部
<1> 为什么目的操作数不能为立即数?(是结果没有地方存么?)
目的操作数为立即数,没有意义。CPU能够暂存数据,得益于它的空间结构。

<2> 为什么段寄存器之间不能传递数据?
以免引起指针混乱,这是Intel对CPU进行设计时的安全考虑。

<3> 为什么目的操作数不能为程序段寄存器?
就CPU内部结构而言,段寄存器仅与基本寄存器构成通路,所以传递数据时,必须经由基本寄存器才能传递至段寄存器。而程序段寄存器CS比较特殊,编写的代码程序段全部被编译为二进制码存入CS:IP这段空间,如果直接传递给CS,无异于将代码段的地址指针修改。同样出于安全的考虑,Intel禁用了CS作为目的操作数的通路,当指令被编译时,CS:IP自觉地指向代码段的第一条指令。

<4> 为什么两存储器地址间不能传送数据?
CPU在读取内存数据时,必须经过CPU本身才能被识别,同理,内存本身也不会在其内部构成数据传递的通路,必须由CPU作为中介读取内存。

指令中的限制都是死的,这纯粹是CPU架构问题,所以不必深究。换做其他的CPU,如单片机,指令不同,对指令的限制也略微有点区别。
做而论道
高能答主

2011-08-16 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
这些都是Intel公司,当年就是这样设计的。
如果学习别的CPU,就会有另外一套功能和限制。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小睡黍
2011-08-16 · TA获得超过403个赞
知道小有建树答主
回答量:288
采纳率:0%
帮助的人:290万
展开全部
<1> 因为东西要存在内存或寄存器里的。
<2> 是为了安全,免得指针被随随便便搞乱了(汇编直接操作硬件,而硬件不一定不会出错)。
<3> 是说代码段寄存器吗?因为这就可能把指令覆盖掉了呀。
<4> 因为数据处理都是经过CPU的,不能直接从外设到外设。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
baitang3671b
2011-08-16 · TA获得超过5040个赞
知道大有可为答主
回答量:4421
采纳率:31%
帮助的人:1137万
展开全部
当初设计8086cpu的人脑袋一热,就这么规定的。
你想用这个系列的cpu,必须服从这些规定,即使这些规定没什么道理。
将来你想学别的cpu,也只能服从人家的规矩。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
晓爱洛殇
2011-08-18 · TA获得超过106个赞
知道答主
回答量:124
采纳率:0%
帮助的人:65.4万
展开全部
楼主,这个有点烦,
其实不必要看这么多。
建议楼主去网上搜索一下,鱼C论坛的《零基础学汇编语言》,里边讲的很透彻,
楼主之所以这么问,是楼主还不是太清楚汇编的大致设计理念,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式