主题:下面三条指令为何非法?
wyjq395
[专家分:2710] 发布于 2007-05-06 08:50:00
1 MOV CS ,2000H
2 MOV CS ,[BX][BP]
3 MOV CS ,[CS]
回复列表 (共6个回复)
沙发
zmm4040 [专家分:10] 发布于 2007-05-06 14:17:00
可以传数据到CS的?????
板凳
含笑风清 [专家分:20] 发布于 2007-05-06 22:52:00
能直接对段寄存器操作的指令只有MOV等个别传送指令,并且不灵活
MOV DS, 100H ;非法指令,修正:
;mov ax,100h
;mov ds,ax
MOV CS, [SI] ;非法指令
;指令存在,但不能执行
对于代码段寄存器CS,一般不要求用户进行赋值,由系统安排.
我也是汇编初学者,不知道以上能不能给你帮助。[em2]
3 楼
bobyellow [专家分:100] 发布于 2007-05-07 17:22:00
1 MOV CS ,2000H
2 MOV CS ,[BX][BP]
3 MOV CS ,[CS]
是不行的,会出错,因为这个是代码段,不允许用户直接操作,
它是由系统来完成的.
你应该用其他的数据段,如ds,es,ss等
4 楼
精灵王子 [专家分:10] 发布于 2007-05-09 18:52:00
我刚学都知CS是不可以被人为付值的啊
5 楼
banboooo [专家分:20] 发布于 2007-05-12 08:58:00
我怎么不知道还有这个规定,我晕,我要学习学习学习
6 楼
瘟神huang [专家分:40] 发布于 2007-05-12 16:51:00
CS,SS,DS,ES是段寄存器。要想对其中写入地址,必须用到通用寄存器,如:
MOV AX,2000H
MOV DS,AX
应该这样才行。
之所以不能那样写,是因为intel公司没有做那样的CPU。
我来回复