为了账号安全,请及时绑定邮箱和手机立即绑定

你好,求问一下在汇编语言中的call是什么意思?

你好,求问一下在汇编语言中的call是什么意思?

郎朗坤 2022-03-23 18:14:34
刚刚看到一个朋友写的病毒分析报告中,有这样一行00409917 . E9 D2010000 jmp 00409AEE ;这个jmp跳到后面 一个地方 然后又call了回来 应该是为了获得call函数下条指令的地址吧 ;这句话大概是什么意思,我对汇编懂得不多,新手入门
查看完整描述

3 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

汇编语言中CALL指令调用一个子程序,CPU执行call指令,进行两步操作:
(1)将当前的 IP 或 CS和IP 压入栈中;
(2)转移到紧跟的标号行地址执行程序。
比如:
CALL InputCheck
........
InputCheck:
........
其处理步骤如下:
(1) (sp) = (sp) – 2
((ss) ×16+(sp)) = (CS)
(sp) = (sp) – 2
((ss) ×16+(sp)) = (IP)
(2) (CS) = InputCheck所在的段地址
(IP) = InputCheck所在的偏移地址

查看完整回答
反对 回复 2022-03-28
?
慕娘9325324

TA贡献1783条经验 获得超5个赞

JMP是转移指令,转到JMP后面写的地址
CALL也是转移的效果,转到CALL之后写的标识符

查看完整回答
反对 回复 2022-03-28
?
冉冉说

TA贡献1877条经验 获得超1个赞

call 标号 ;转移到标号处,但在转移之前将ip/cs和ip入栈
;即push ip jmp near ptr 标号/push cs push ip jmp far ptr 标号

查看完整回答
反对 回复 2022-03-28
  • 3 回答
  • 0 关注
  • 276 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号