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

为什么寄存器存址指令 MOV DS,AX 合法,而寄存器存址指令MOV CS,AX不合法呢?
麻烦知道的GG或JJ从寄存器CS与DS的区别上教教我咯-!-
嘿嘿 谢谢诶哒

从两个方面来讲:
一、寄存器和程序执行期的意义
寄存器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根本不认识,无法正确执行,也就无从说它是合法的了。
温馨提示:答案为网友推荐,仅供参考
相似回答