. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  ret和retf执行时,所进行的操作公式如何算出来的?望老师给于解答  [待解决] 回复[ 2次 ]   点击[ 349次 ]  
sexion
[帖 主]   [ 发表时间:2008-10-22 17:07 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-09-03 12:36
(IP)=((ss)×16(10)+(sp))怎么相等吗,费解啊,人笨没办法
zhyrjkf3
[第1楼]   [ 回复时间:2008-10-23 07:35 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-07-01 21:20
(IP)是代表IP的值,(ss)是代表ss的值,(sp)是代表sp的值;
(ss)×16+(sp):代表的是存放(IP)中IP的值的地址,所以就是(IP)=((ss)×16(10)+(sp))咯,
就是说()内的符号代表了地址,加上()就是那个地址里面存放的数据了...
sexion
[第2楼]   [ 回复时间:2008-10-23 09:00 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-09-03 12:36
明白了,其实就是栈中的数值((ss)×16(10)+(sp))这个表达式就是入栈的值的地址,我还以为怎么算出来的值怎么就等于IP了呢,因为RET后,IP=0,呵呵,原来是取这个地址的值。。。。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved