汇编语言依据位移进行转移的call指令

CPU执行call指令时,进行两步操作:

(1)将当前的IP或CS和IP压入栈中
(2)转移
call指令不能实现短转移,除此之外,call指令实现转移的方法和jmp指令的原理相同,下面的几个小节中,我们以给出转移目的地址的不同方法为主线,讲解call指令的主要应用格式。
根据位移进行转移的call指令
call 标号(将当前IP压栈后,转到标号处执行指令)
CPU执行此格式的call指令时,进行如下操作:

(1)(sp)=(sp)-2 
   ((ss)*16+(sp))=(IP)
(2)(IP)=(IP)+16位位移

(1) 16位位移 = 标号处的地址一call指令后的第一个字节的地址;
(2) 16位位移的范围为一3276832767,用补码表示;
(3) 16位位移由编译程序在编译时算出。
从上面的描述总,可以看出,如果我们用汇编语法来解释此格式的call指令,则:
CPU执行指令 call 标号时,相当于进行:

push ip
jmp near ptr 标号

检测
下面的程序执行后,ax中的数值为多少?

内存地址          机器码           汇编指令
1000:0           b8 00 00          mov ax.0
1000:3           e8 O1 00          call s
1000:6           40                inc  ax
1000:7           58               s:pop ax

执行后ax的数值为6


发布日期:

所属分类: 编程 标签:  


没有相关文章!