call指令用法
来源:互联网 发布:淘宝代购网店 注册 编辑:程序博客网 时间:2024/04/30 13:21
CPU执行call指令时,进行两步操作:
1、将当前的IP或CS和IP压入栈中;
2、转移;
call指令不能实现短转移。与jmp指令实现转移的原理相同。
1、依据位移进行转移的call指令
指令形式:call 标号
进行如下操作:
(1)、sp=sp-2
(2)、ss*16+sp=ip
(3)、IP=IP+16位位移
16位位移由编译程序在编译时算出
相当于进行:
push IP
jmp near ptr 标号
2、转移的目的地址在指令中的call指令
call far ptr 标号 ;实现的是段间转移
执行过程如下:
(1)、sp=sp-2;
ss*16+sp=cs;
sp=sp-2
ss*16+sp=ip
(2)、CS=标号所在段的段地址
IP=标号所在段中的偏移地址
相当于进行:
push CS
push IP
jmp far ptr 标号
3、转移地址在寄存器中的call指令
指令格式:call 16位 reg
功能:sp=sp-2
ss*16+sp=ip
ip=16位reg
相当于push IP
jmp 16位reg
4、转移地址在内存中的call指令
有两种形式
(1)、call word ptr 内存单元地址
相当于进行
push IP
jmp word ptr 内存地址
例如:
mov sp,10h
mov ax,0123h
mov ds:[0],ax
call word ptr ds:[0]
执行后 IP=0123h,sp=0;
(2)、call dword ptr 内存单元地址
相当于进行:
PUSH CS
PUSH IP
jmp dword ptr 内存单元地址
比如,下面的指令
mov sp,10h
mov ax,0123h
mov ds:[0],ax
mov word ptr ds:[2],0
call dword ptr ds:[0]
执行后:cs=0,ip=0123h,sp=0ch;
- call指令用法
- call和ret指令用法
- CALL 指令
- call指令
- CALL指令
- call用法
- Call指令与ret指令
- Call指令与ret指令
- call指令和ret指令
- CALL和RET指令
- call和ret指令
- call 和 ret 指令
- 汇编语言中的call指令
- CALL和RET指令
- 转移指令jmp和跳转指令call
- 汇编--9 call指令和ret指令
- call指令和ret指令(1001)
- sysenter指令优化system call
- CursorAdapter类的使用
- 解决:LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- Java Socket收发异步长连接
- 谈谈静态变量和实例变量的区别?
- [cell.imageView.subviews.firstObject removeFromSuperview];
- call指令用法
- Velocity + flying sauser生成pdf
- 反向代理服务器的工作原理
- 观察者模式
- firefly game server framework 论坛
- ASP.NET Web Pages - 文件
- malloc最多能分配多少内存
- Golang适合高并发场景的原因分析
- SQL注入原理讲解,很不错!