. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  10.1 ret 和 retf  [已解决] 回复[ 2次 ]   点击[ 382次 ]  
luoage
[帖 主]   [ 发表时间:2013-08-01 11:50 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:2
注册日期:2013-07-10 14:19
我把代码复制了一遍,使用debug执行,发现 IP 没有被置成 0,下面是代码.


assume cs:code
stack segment
        db 16 dup (0)
stack ends

code segment
        mov ax,4c00h
        int 21h
        start : mov ax,stack
        mov ss,ax
        mov sp,16
        mov ax,0
        push ax
        mov bx,0
        ret
code ends
end start

这里是debug内容

G:\asm>debug tt.exe;
-r
AX=0000  BX=0000  CX=0025  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=0B67  ES=0B67  SS=0B77  CS=0B78  IP=0005   NV UP EI PL NZ NA PO NC
0B78:0005 B8770B        MOV     AX,0B77
-u
0B78:0005 B8770B        MOV     AX,0B77
0B78:0008 8ED0          MOV     SS,AX
0B78:000A BC1000        MOV     SP,0010
0B78:000D B80000        MOV     AX,0000
0B78:0010 50            PUSH    AX
0B78:0011 BB0000        MOV     BX,0000
0B78:0014 C3            RET
0B78:0015 5F            POP     DI
0B78:0016 06            PUSH    ES
0B78:0017 D1E3          SHL     BX,1
0B78:0019 8B369616      MOV     SI,[1696]
0B78:001D 8B00          MOV     AX,[BX+SI]
0B78:001F 898672FF      MOV     [BP+FF72],AX
0B78:0023 8BD8          MOV     BX,AX
-q

----------------------------------------------------
0B78:0014 C3            RET
ret 之后根本没有执行上面的 mov ax,4c00h , int 21h

请问这是为什么呢 ?
luoage
[第1楼]   [ 回复时间:2013-08-01 14:15 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:2
注册日期:2013-07-10 14:19
已经找到答案了, 虽然使用 u 看不出变化,但是执行到那一步,就自动更改 IP 的值.然后去执行mov ax,4c00h ..
luoage
[第2楼]   [ 回复时间:2013-08-01 14:16 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:2
注册日期:2013-07-10 14:19
此贴由 贴主 于 [ 2013-08-01 14:16 ] 结贴。 结贴原因:问题已解决
得分情况: 1楼(luoage):2分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved