-
ret 指令用栈中的数据,替换掉ip里的内容,从而实现近转移。
retf 指令则是修改cs和ip的内容实现远转移(return far)。 -
ret指令 ①(ip)=((ss)*16+(sp))
② (sp)=(sp)+2 -
retf指令 ① (ip)=((ss) *16 +(sp) )
②(sp)=(sp)+2
③(cs)=((ss)*16 + (sp))
④(sp)=(sp)+2
-
call指令两个步骤
①将当前的ip或ip和cs压入栈中
(sp)=(sp)-2
((ss)*16 + (sp))=(ip)
②转移到标号处
(ip)=(ip)+16位位移(16位位移是“call 标号”在物理地址的值)
call 相当于 push ip ; jmp near ptr 标号 -
call far ptr 标号
①(sp)=(sp)-2
((ss)*16 + (sp))=(cs)
(sp)=(sp)-2
((ss)*16 + (sp))=(ip)
②(cs)标号所在的段地址 (ip)标号所在的偏移地址 -
call word ptr 标号(16位) call dword ptr 标号(32位)
-
call dword ptr 标号 相当于
push cs
push ip
jmp dword ptr 内存单元地址 -
mul 内存单元(或reg) 乘法指令只能相同位的才能通过运算。
如果8位乘法结果默认放在ax中,16位默认放在dx中;给出的内存单元的值和ax中的值相乘。
汇编语言第十章call和ret指令
最新推荐文章于 2022-05-25 16:24:30 发布