当前位置: 代码迷 >> 汇编语言 >> 王爽汇编RET指令,求详解!该怎么处理
  详细解决方案

王爽汇编RET指令,求详解!该怎么处理

热度:4361   发布时间:2013-02-26 00:00:00.0
王爽汇编RET指令,求详解!
cpu执行ret指令时,进行下面两步操作:

(1)(ip)=((ss)*16+sp)

(2)(sp)=(sp)+2

为什么这段程序执行后IP为0
assume cs:code
stack segment
db 16 dup(0)
stack ends

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

end start


------解决方案--------------------------------------------------------
ret指令用栈中数据修改ip的值,从而实现段内转移。
这个程序里,
mov ax,0 ;此时sp=0eh,ss:sp指向内容为0000
push ax ;

ret ;实现了用栈中数据修改ip的功能,由于是段内转移,
;所以CS的值不变,仅仅用栈中弹出数据赋予ip新值。
;此时sp=10h,ip=0000
 
  相关解决方案