. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  9.1检测点(3)debug调试  [待解决] 回复[ 2次 ]   点击[ 473次 ]  
xiaoshitou
[帖 主]   [ 发表时间:2009-04-08 08:52 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-02-19 12:59
9.1检测点(3)debug调试过程:
-e 2000:1000 be 00 06 00 00 00 00
-d 2000:1000 100f
2000:1000  BE 00 06 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
-r
AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1396  ES=1396  SS=1396  CS=1396  IP=0100   NV UP EI PL NZ NA PO NC
1396:0100 0000          ADD     [BX+SI],AL                         DS:0000=CD
-a
1396:0100 mov ax,2000
1396:0103 mov es,ax
1396:0105 jmp dword ptr es:[1000]
                        ^ Error
1396:0105 jmp dword ptres:[1000]
1396:0109
-g 109

Program terminated normally
-r
AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1396  ES=1396  SS=1396  CS=1396  IP=0100   NV UP EI PL NZ NA PO NC
1396:0100 B80020        MOV     AX,2000
-

为什么结果cs不是0006,ip不是00be呢?请给以指点,谢谢!!
acool
[第1楼]   [ 回复时间:2009-04-08 10:36 ]   [引用]   [回复]   [ top ] 
荣誉值:49
信誉值:0
注册日期:2008-10-15 16:15
你e写入的2000:1000 没错误,并且用d查看了一下是很好的步骤。

但是下面a写入命令后却没有用u命令查看,恰恰是这里出错了!(要注意确认实验步骤要正确~)

-a
0B04:0100 mov ax,2000
0B04:0103 mov es,ax
0B04:0105 jmp dword ptr es:[1000]
                        ^ Error
0B04:0105 jmp dword ptres:[1000]          ---------这样debug也能通过,真是汗"
0B04:0109

-u
0B04:0100 B80020        MOV     AX,2000
0B04:0103 8EC0          MOV     ES,AX
0B04:0105 FF260010      JMP     [1000]     --------这里和要写的不一样啊,段地址变成ds了。并且还是jmp


我是用下面方法实验的,写了一个asm文件:
C:\masm>type q.asm
assume cs:code
code segment
  start:
      mov ax,2000h
      mov es,ax
      jmp dword ptr es:[1000h]

      mov ax,4c00h  --这两句也是没用的,上面都jmp跑/~啦      
      int 21h
code ends
end start

C:\masm>debug q.exe
-u
0B68:0000 B80020        MOV     AX,2000
0B68:0003 8EC0          MOV     ES,AX
0B68:0005 26            ES:
0B68:0006 FF2E0010      JMP     FAR [1000]
0B68:000A B8004C        MOV     AX,4C00
0B68:000D CD21          INT     21
0B68:000F 90            NOP
0B68:0010 0056C4        ADD     [BP-3C],DL
0B68:0013 5E            POP     SI
0B68:0014 06            PUSH    ES
0B68:0015 26            ES:
0B68:0016 8B4708        MOV     AX,[BX+08]
0B68:0019 8946F8        MOV     [BP-08],AX
0B68:001C 26            ES:
0B68:001D 837F0600      CMP     WORD PTR [BX+06],+00
-e 2000:1000 be 00 06 00 00 00
-t

AX=2000  BX=0000  CX=000F  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=0B58  ES=0B58  SS=0B68  CS=0B68  IP=0003   NV UP EI PL NZ NA PO NC
0B68:0003 8EC0          MOV     ES,AX
-t

AX=2000  BX=0000  CX=000F  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=0B58  ES=2000  SS=0B68  CS=0B68  IP=0005   NV UP EI PL NZ NA PO NC
0B68:0005 26            ES:
0B68:0006 FF2E0010      JMP     FAR [1000]                         ES:1000=00BE
/*ES:1000=00BE --这个看出读取数据是正确的。*/
-t

AX=2000  BX=0000  CX=000F  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=0B58  ES=2000  SS=0B68  CS=0006  IP=00BE   NV UP EI PL NZ NA PO NC
0006:00BE 00F0          ADD     AL,DH
-
1169205963
[第2楼]   [ 回复时间:2009-05-04 21:18 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-04-24 09:00
楼主1396:0105 jmp dword ptres:[1000] 
  这里是肯定有问题的。 1396:0105 jmp dword ptr es:[1000]  不明白 ,为什么这里jmp dword ptr es:[1000] 这样写不对。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved