首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

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

2012-02-07 
王爽汇编RET指令,求详解!cpu执行ret指令时,进行下面两步操作:(1)(ip)((ss)*16+sp)(2)(sp)(sp)+2为什么这

王爽汇编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
 

热点排行