回 帖 发 新 帖 刷新版面

主题:下面三条指令为何非法?

1 MOV CS ,2000H
2 MOV CS ,[BX][BP]
3 MOV CS ,[CS]

回复列表 (共6个回复)

沙发

可以传数据到CS的?????

板凳

能直接对段寄存器操作的指令只有MOV等个别传送指令,并且不灵活 
MOV DS, 100H ;非法指令,修正: 
             ;mov ax,100h 
             ;mov ds,ax  
MOV CS, [SI] ;非法指令 
             ;指令存在,但不能执行

对于代码段寄存器CS,一般不要求用户进行赋值,由系统安排.

我也是汇编初学者,不知道以上能不能给你帮助。[em2]

3 楼

1 MOV CS ,2000H
2 MOV CS ,[BX][BP]
3 MOV CS ,[CS]

是不行的,会出错,因为这个是代码段,不允许用户直接操作,
它是由系统来完成的.
你应该用其他的数据段,如ds,es,ss等

4 楼


我刚学都知CS是不可以被人为付值的啊

5 楼

我怎么不知道还有这个规定,我晕,我要学习学习学习

6 楼

CS,SS,DS,ES是段寄存器。要想对其中写入地址,必须用到通用寄存器,如:
    MOV AX,2000H
    MOV DS,AX
应该这样才行。
之所以不能那样写,是因为intel公司没有做那样的CPU。

我来回复

您尚未登录,请登录后再回复。点此登录或注册