全站数据
8 4 2 0 5 8 1

call是什么指令

一心备考教师 | 简单学习,快乐成才!         
问题更新日期:2024-10-12 18:26:18

问题描述

call是什么指令求高手给解答
精选答案
最佳答案

call指令不能实现短转移(短转移IP修改范围为:-128~127)

作用:

(1)将当前IP或CS和IP压入栈

(2)转移

一、call 标号

作用:将当前IP压栈,然后跳转到标号处

原理:

(1)(SP) = (SP)- 2

(2)((SS*16) + (SP)) = (IP) //将IP入栈

(3)(IP) = (IP) + 16位偏移地址

//16位偏移地址 = 标号处的地址 - call指令后的第一个字节的地址

汇编语法解释:

push IP

jmp near ptr 标号

使用方法:

call 标号

二、call far ptr 标号

作用:先将CS压栈,再将IP压栈,然后跳转到标号处(实现短间转移)

原理:

(1)(SP) = (SP)- 2

(2)((SS*16) + (SP)) = (CS)// 先将CS入栈

(3)(SP) = (SP)- 2

(4)((SS*16) + (SP)) = (IP) //再将IP入栈

(5)(CS) = 标号处的段地址 //跳转

(IP) = 标号处的偏移地址

汇编语法解释:

push CS

push IP

jmp far ptr 标号

使用方法:

call far ptr 标号

三、call 16位reg

作用:将当前IP压栈,然后修改IP的内容为16位reg(寄存器)中的内容

原理:

(1)(SP) = (SP)- 2

(2)((SS*16) + (SP)) = (IP) //将IP入栈

(3)(IP) = (16位reg)

汇编语法解释:

push IP

jmp 16位reg

使用方法:

call 16位reg

四、call word ptr 内存单元

作用:将当前IP压栈,然后修改IP的内容为内存单元(长度为1个字,即两个字节,16位)中的内容

原理:

(1)(SP) = (SP)- 2

(2)((SS*16) + (SP)) = (IP) //将IP入栈

(3)(IP) = (内存单元)

汇编语法解释:

push IP

jmp word ptr 内存单元

使用方法:

call call word ptr 内存单元

其他回答

call指令是计算机转移到调用的子程序。

中文名

call指令

操作

转移到调用的子程序

调用

LCALL远调用,

学科

计算机

CALL(LCALL)指令执行时,进行两步操作:

(1)将程序下一条指令的位置的IP压入堆栈中;

(2)转移到调用的子程序。

(CALL近调用,LCALL远调用,

CALL 寻址2K空间范围

LCALL 寻址64K空间范围) 先压CS,再压IP!

CALL与RET结合使用,当CALL调用的子程序运行到RET命令时,压入堆栈的IP弹出,跳出子程序,开始执行CALL的下一条语句。