<汇编语言(第2版)>2011041001
【摘抄】
call和ret指令都是转移指令
详细:
ret指令用栈中的数据,修改IP的内容,实现近转移
retf指令用栈中的数据,修改CS和IP的内容,实现远转移
CPU执行ret指令
(IP)=((SS)*16+(sp))
(sp)=(sp)+2
CPU执行retf指令
(IP)=((SS)*16+(sp))
(sp)=(sp)+2
(CS)=((SS)*16+(sp))
(sp)=(sp)+2
call指令:
CPU执行此指令,将当前IP和CS或IP压入栈中,再实现转移
常用格式如下:
call 标号,IP
call far ptr 标号,CS,IP
call 16位 reg,IP
call word ptr 内存单元地址,IP
call dword ptr 内存单元地址,CS,IP
call与ret指令共同支持了汇编语音编程中的模块化设计。
那么,有如下问题有待思考:
1、将参数N存储在哪?
2、计算得到的数值,存储在哪?
用寄存器来存储参数和结果是最常用的方法。
另外通用的方法是使用栈来传递参数。
call和ret指令都是转移指令
详细:
ret指令用栈中的数据,修改IP的内容,实现近转移
retf指令用栈中的数据,修改CS和IP的内容,实现远转移
CPU执行ret指令
(IP)=((SS)*16+(sp))
(sp)=(sp)+2
CPU执行retf指令
(IP)=((SS)*16+(sp))
(sp)=(sp)+2
(CS)=((SS)*16+(sp))
(sp)=(sp)+2
call指令:
CPU执行此指令,将当前IP和CS或IP压入栈中,再实现转移
常用格式如下:
call 标号,IP
call far ptr 标号,CS,IP
call 16位 reg,IP
call word ptr 内存单元地址,IP
call dword ptr 内存单元地址,CS,IP
call与ret指令共同支持了汇编语音编程中的模块化设计。
那么,有如下问题有待思考:
1、将参数N存储在哪?
2、计算得到的数值,存储在哪?
用寄存器来存储参数和结果是最常用的方法。
另外通用的方法是使用栈来传递参数。
无论生活、还是技术,一切都不断的学习和更新~~~努力~