. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  为什么mov cs,ax这条命令运行后不能改变cs值  [已解决] 回复[ 12次 ]   点击[ 670次 ]  
ztf770710
[帖 主]   [ 发表时间:2009-10-19 10:07 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:2
注册日期:2008-01-16 11:01
在debug调试中,使用mov cs,ax这条命令,运行后cs的值不会做任何改变,为什么?
ztf770710
[第1楼]   [ 回复时间:2009-10-20 19:59 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:2
注册日期:2008-01-16 11:01
既然cs不能用mov命令,则这章中(mov 段寄存器,寄存器)这句话就是错误的。因为cs属于段寄存器
p541938340
[第2楼]   [ 回复时间:2009-10-21 12:51 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:0
注册日期:2009-09-08 11:48
大概你那个ax里的值和cs的值相同吧
tinyparticle
[第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
-
451200427
[第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代码段寄存器外的段寄存器
nigg
[第5楼]   [ 回复时间:2009-11-06 14:04 ]   [引用]   [回复]   [ top ] 
荣誉值:10
信誉值:4
注册日期:2009-05-30 22:14
又长见识了,新手常在这转转,好处多多^_^
jxsfreedom
[第6楼]   [ 回复时间:2009-11-08 20:39 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:20
注册日期:2009-10-29 19:56
- -!  我对CS 用了MOV操作   结果是条错误的指令
ouou
[第7楼]   [ 回复时间:2009-11-10 20:29 ]   [引用]   [回复]   [ top ] 
荣誉值:10
信誉值:2
注册日期:2009-11-05 15:19
没验证过 

不过在WINDOWS中的COMMAND中  
MOV CS,AX指令正确
marser
[第8楼]   [ 回复时间:2009-11-12 15:18 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2009-04-16 10:46
因为8086没有提供这样的功能,这是书上原话。
这个命令是可以的:jmp 段地址:偏移地址
mov 段地址,寄存器 这句话的确有误,应该加个条件:除cs以外。
alftmdh
[第9楼]   [ 回复时间:2009-12-22 21:21 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-12-17 14:31
可以  我的能运行
regex
[第10楼]   [ 回复时间:2009-12-23 00:56 ]   [引用]   [回复]   [ top ] 
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51
改变CS的方法只有用jmp指令(目前我只是范围), 没有对cs直接赋值的指令! 8喽朋友说的队, 王爽老师的书里解释的已经非常清楚啦。
willflyz
[第11楼]   [ 回复时间:2009-12-25 14:30 ]   [引用]   [回复]   [ top ] 
荣誉值:12
信誉值:0
注册日期:2009-02-14 14:25
可能这样做了为了安全性考虑吧,CS的值是非常重要的,个人认为比DS,SS,ES更重要,所以可能是采取了一种保护措施吧
ztf770710
[第12楼]   [ 回复时间:2010-02-06 15:54 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:2
注册日期:2008-01-16 11:01
此贴由 贴主 于 [ 2010-02-06 15:54 ] 结贴。 结贴原因:问题已解决
得分情况:
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved