mov cs,ax CUP遇到无效的指令。

来源:百度知道 编辑:UC知道 时间:2024/06/17 18:41:59
mov ax,1000
mov cs,ax
运行mov cs,ax,就出错了~提示NTVDM CPU 遇到无效的指令。
换了台机也是这样子~为什么呢?
用DEBUG的

cs是一个代码段,是不能的当作数据寄存器使用的。所以把cs改成一个数据寄存器就没有的问题了。

cs代码段寄存器不能当做目标操作数。
我们不能用mov指令来修改cs寄存器的值。
如果在debug中,想修改的话,可以用-r cs 来修改。
如果想在程序中修改,那么只能用 jmp 1000:0100,即跳转到内存逻辑地址为1000:0100处的这条指令执行,相当于修改cs=1000,修改ip=0100。
注意:这里的1000:0100是随意给出的值,如果想让cs为2000,ip为1000,那么可以用指令 jmp 2000:1000
如果想让cs为3000,ip为3A00,那么可以用指令 jmp 3000:3A00

而不能用mov指令直接修改cs的值。

这应是DEBUG监测到你的指令出错而给出的处理.
CS:段址不允许直接赋值.想改变段址,要把CS段址
和IP指针压栈后,用JMP PAR 指令跳转.