《汇编语言(第三版)》王爽笔记(10)CALL和RET指令

本文详细介绍了汇编语言中的CALL和RET指令,包括它们的使用方法、实现的转移类型以及在子程序设计中的作用。通过多个检测点分析了不同类型的CALL指令,如近转移、远转移、寄存器转移和内存转移,并探讨了子程序调用过程中的参数传递和寄存器管理策略。
摘要由CSDN通过智能技术生成

第十章 CALL和RET指令

call和ret也是转移指令,它们都修改IP或同时修改CS和IP。他们经常被共同用来实现子程序设计。

ret指令用栈中数据修改IP,实现近转移。使用方法:ret
retf指令用栈中数据修改CS和IP,实现远转移。使用方法:retf
CPU执行ret时,操作如下:
(IP) = ((ss * 16)+sp)
(sp) = (sp)+2
相当于进行 pop ip
CPU执行retf时,操作如下:
(IP) = ((ss * 16)+sp)
(sp) = (sp)+2
(CS) = ((ss * 16)+sp)
(sp) = (sp)+2
相当于进行 pop ip pop cs

检测点10.1

1000h
0

CPU执行call指令:
(1)将当前的IP或CS和IP压入栈中。
(2)转移。
call指令不能实现短转移,其他与jmp类似。具体分类如下:
call 标号(将当前IP压栈,转到标号处执行指令)(对应的机器指令中没有目的地址,只有相对转移位移)
(sp) = (sp)-2
((ss*16)+sp) = (IP)
(IP) = (IP)+16位位移
16位位移 = 标号处地址- ca

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值