. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  没人对检测点9.1 (3) 提出意见吗?  [待解决] 回复[ 7次 ]   点击[ 954次 ]  
hino
[帖 主]   [ 发表时间:2008-08-27 00:02 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:3
注册日期:2008-06-22 20:23
表面上是CS=0060 IP=00BE

但事实上,我在debug中无法正常用命令写入代码,所以把es改成了ds。

结果运行下来IP没有问题,但CS没有变化,显示为13B9。真是奇怪。有人能来解释一下吗?

-a
13B9:0100 mov ax,2000
13B9:0103 mov es,ax
13B9:0105 jmp dword ptr es:[1000]
                        ^ Error
13B9:0105
-a
13B9:0105 mov ax,2000
13B9:0108 mov ds,ax
13B9:010A jmp dword ptr [1000]
13B9:010E
-r ip
IP 0100
:0105
-u
13B9:0100 B80020        MOV     AX,2000
13B9:0103 8EC0          MOV     ES,AX
13B9:0105 B80020        MOV     AX,2000
13B9:0108 8ED8          MOV     DS,AX
13B9:010A FF260010      JMP     [1000]
13B9:010E 0000          ADD     [BX+SI],AL
13B9:0110 0000          ADD     [BX+SI],AL
13B9:0112 0000          ADD     [BX+SI],AL
13B9:0114 0000          ADD     [BX+SI],AL
13B9:0116 0000          ADD     [BX+SI],AL
13B9:0118 0000          ADD     [BX+SI],AL
13B9:011A 0000          ADD     [BX+SI],AL
13B9:011C 3400          XOR     AL,00
13B9:011E A813          TEST    AL,13
-t

AX=2000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=13B9  ES=13B9  SS=13B9  CS=13B9  IP=0108   NV UP EI PL NZ NA PO NC
13B9:0108 8ED8          MOV     DS,AX
-t

AX=2000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=2000  ES=13B9  SS=13B9  CS=13B9  IP=010A   NV UP EI PL NZ NA PO NC
13B9:010A FF260010      JMP     [1000]                             DS:1000=00BE
-t

AX=2000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=2000  ES=13B9  SS=13B9  CS=13B9  IP=00BE   NV UP EI PL NZ NA PO NC
13B9:00BE 6E            DB      6E
hino
[第1楼]   [ 回复时间:2008-08-27 12:48 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:3
注册日期:2008-06-22 20:23
编了段小代码,这回不管ES还是DS,都正常了。就是不知道为什么原来在debug里直接用a命令写入时,就会不一样。还是希望谁能来解释一下。

assume cs:code

code segment
start:
        mov ax,2000h
        mov ds,ax
        mov bx,1000h
        mov ax,00beh
        mov dx,0006h
        mov word ptr [bx],ax
        mov word ptr [bx+2],dx
        mov ax,2000h
        mov ds,ax
        jmp dword ptr ds:[1000h]




code ends

end start
ailesargentees
[第2楼]   [ 回复时间:2010-03-22 23:25 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-01-02 17:21
直接用EMU8086单步调试没有问题
vs9841
[第3楼]   [ 回复时间:2011-06-30 19:02 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-01-17 12:29
用debug编辑代码13B9:0105 jmp dword ptr es:[1000]
                                         ^ Error 
出错是因为debug 不支持这样编写
上面指令应分为两行编写:
-a
13B9:0105 mov ax,2000
13B9:0108 mov ds,ax
13B9:010A es:
13B9:010B jmp far ptr [1000]
cjlchenjilin
[第4楼]   [ 回复时间:2011-07-01 11:14 ]   [引用]   [回复]   [ top ] 
荣誉值:1
信誉值:0
注册日期:2011-05-30 14:33
恩,是的。
227873
[第5楼]   [ 回复时间:2012-11-17 20:31 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-11-16 13:28
难怪在debug中单步执行的时候看到而是es:会另为一行,那在debug中是不是也不允许出现 mov al,'a'是不是这样格式也只能在编译器中编写?
chinatree
[第6楼]   [ 回复时间:2012-11-18 02:08 ]   [引用]   [回复]   [ top ] 
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59
自行实验。
227873
[第7楼]   [ 回复时间:2012-11-18 19:28 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-11-16 13:28
在debug中不行,只能在编译器中,就是想知道到底什么时候可以直接输入,除了用终端的时候
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved