为什么寄存器存址指令 MOV DS,AX 合法,而MOV CS,AX不合法呢? 急急求教!

为什么寄存器存址指令MOVDS,AX合法,而寄存器存址指令MOVCS,AX不合法呢?麻烦知道的GG或JJ从寄存器CS与DS的区别上教教我咯-!-嘿嘿谢谢诶哒... 为什么寄存器存址指令 MOV DS,AX 合法,而寄存器存址指令MOV CS,AX不合法呢?
麻烦知道的GG或JJ从寄存器CS与DS的区别上教教我咯-!-
嘿嘿 谢谢诶哒
展开
 我来答
天池血崩
推荐于2018-04-15 · TA获得超过3699个赞
知道小有建树答主
回答量:202
采纳率:0%
帮助的人:268万
展开全部
从两个方面来讲:
一、寄存器和程序执行期的意义
寄存器DS是data segment也即数据段地址存放的地方,程序运行开始后需立即指定数据段,否则不能正确使用程序的数据。
寄存器CS是code segment也即代码段地址存放的地方,一个程序执行期间CPU会用它来指向内存中存放代码的地址。试想一个正在运行的程序怎么可以擅自让CPU跳转呢。

二、CPU的制造机理
所有的汇编指令都是CPU设计时期就已经写入了CPU内部的物理结构上的,也就是说,合法的指令永远合法,不合法的指令CPU是永远不认可的,如对ds,ss等段寄存器Mov时不可以用立即数传递值(像Mov ds,100之类的指令不合法)。
从理论上来说,Mov cs,ax这一句是可以人为理解的,从语法上来说完全正确,但是CPU的设计工程师们在制造CPU的时候根本就不给这一条指令生存的机会,CPU的内部结构里没有这条指令。也就是说——你写的指令 MOV CS,AX CPU根本不认识,无法正确执行,也就无从说它是合法的了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式