第十章 call和ret指令
call 指令执行的时候,先把call指令后的第一个字节的IP或CS和IP压栈,然后跳转到需要跳转的地方执行命令,类似调用函数
ret(或retf) 指令,用栈的数据修改IP(近转移)或CS和IP(远转移),达到跳转的目的,通常配合call指令完成类似调用函数然后返回的作用
call和ret指令的用法
1 | call 标号 ;相当于进行 push ip |
乘法指令 mul
相乘的两个数,要么都是8位,要么都是16位
都是8位
一个相乘的数默认放在al,另一个放在8位的reg或内存字节单元中
结果默认放在ax
都是16位
一个相乘的数默认放在ax,另一个放在16位的reg或内存字节单元中
结果:结果的高位默认存在dx,低位默认存在ax
对于call和ret配合设计的函数调用
为防止寄存器使用上的冲突,一般在call进去的时候将要用的寄存器压栈,使用完后在ret前出栈
当寄存器不够用来传参或返回结果时,可以用内存单元或栈空间来代替
Comments