|
主题 : : 为什么mov cs,ax这条命令运行后不能改变cs值 [已解决] |
回复[ 12次 ]
点击[ 670次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2009-10-19 10:07 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:2
注册日期:2008-01-16 11:01 |
在debug调试中,使用mov cs,ax这条命令,运行后cs的值不会做任何改变,为什么? | | |
|
|
|
|
[第1楼]
[ 回复时间:2009-10-20 19:59 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:2
注册日期:2008-01-16 11:01 |
既然cs不能用mov命令,则这章中(mov 段寄存器,寄存器)这句话就是错误的。因为cs属于段寄存器 | | |
|
|
|
|
[第2楼]
[ 回复时间:2009-10-21 12:51 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:0
注册日期:2009-09-08 11:48 |
|
|
|
|
|
[第3楼]
[ 回复时间:2009-10-21 20:22 ]
[引用]
[回复]
[ top ] | |
荣誉值:188
信誉值:4
注册日期:2009-07-05 19:26 |
Microsoft(R) Windows DOS
(C)Copyright Microsoft Corp 1990-2001.
C:\DOCUME~1\ADMINI~1>debug
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C01 ES=0C01 SS=0C01 CS=0C01 IP=0100 NV UP EI PL NZ NA PO NC
0C01:0100 007403 ADD [SI+03],DH DS:0003=9F
-a
0C01:0100 mov ax,cs
0C01:0102
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C01 ES=0C01 SS=0C01 CS=0C01 IP=0100 NV UP EI PL NZ NA PO NC
0C01:0100 8CC8 MOV AX,CS
-t
AX=0C01 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0C01 ES=0C01 SS=0C01 CS=0C01 IP=0102 NV UP EI PL NZ NA PO NC
0C01:0102 03E9 ADD BP,CX
- | | |
|
|
|
|
[第4楼]
[ 回复时间:2009-11-05 18:10 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-11-01 01:50 |
在DEBUG中试了下发现mov cs,ax这条命令不行的。。不会改变CS的值,要改变CS用JMP
楼主说的很对,CS代码段寄存器属于段寄存器,这章中(mov 段寄存器,寄存器)这句话是错误的..只能给DS,SS,ES段寄存器赋值...正确的应该是(mov 段寄存器,寄存器)除CS代码段寄存器外的段寄存器 | | |
|
|
|
|
[第5楼]
[ 回复时间:2009-11-06 14:04 ]
[引用]
[回复]
[ top ] | |
荣誉值:10
信誉值:4
注册日期:2009-05-30 22:14 |
|
|
|
|
|
[第6楼]
[ 回复时间:2009-11-08 20:39 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:20
注册日期:2009-10-29 19:56 |
- -! 我对CS 用了MOV操作 结果是条错误的指令 | | |
|
|
|
|
[第7楼]
[ 回复时间:2009-11-10 20:29 ]
[引用]
[回复]
[ top ] | |
荣誉值:10
信誉值:2
注册日期:2009-11-05 15:19 |
没验证过
不过在WINDOWS中的COMMAND中
MOV CS,AX指令正确 | | |
|
|
|
|
[第8楼]
[ 回复时间:2009-11-12 15:18 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2009-04-16 10:46 |
因为8086没有提供这样的功能,这是书上原话。
这个命令是可以的:jmp 段地址:偏移地址
mov 段地址,寄存器 这句话的确有误,应该加个条件:除cs以外。 | | |
|
|
|
|
[第9楼]
[ 回复时间:2009-12-22 21:21 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-12-17 14:31 |
|
|
|
|
|
[第10楼]
[ 回复时间:2009-12-23 00:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51 |
改变CS的方法只有用jmp指令(目前我只是范围), 没有对cs直接赋值的指令! 8喽朋友说的队, 王爽老师的书里解释的已经非常清楚啦。 | | |
|
|
|
|
[第11楼]
[ 回复时间:2009-12-25 14:30 ]
[引用]
[回复]
[ top ] | |
荣誉值:12
信誉值:0
注册日期:2009-02-14 14:25 |
可能这样做了为了安全性考虑吧,CS的值是非常重要的,个人认为比DS,SS,ES更重要,所以可能是采取了一种保护措施吧 | | |
|
|
|
|
[第12楼]
[ 回复时间:2010-02-06 15:54 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:2
注册日期:2008-01-16 11:01 |
此贴由 贴主 于 [ 2010-02-06 15:54 ] 结贴。 结贴原因:问题已解决 | | |