美文网首页
汇编学习10 CALL与RET指令

汇编学习10 CALL与RET指令

作者: 官总哦 | 来源:发表于2019-04-28 16:51 被阅读0次

    一、RET和RETF
    这两个指令都是转移指令,转移指令都是通过修改CS或者IP实现的跳转, 这两者也不例外。

    • RET:利用栈中数据,修改IP实现跳转
      汇编描述等同于:pop IP
    • RETF:利用栈中数据,同时修改CS和IP实现跳转
      汇编描述等同于:pop IP ;pop CS(栈顶字存IP,第二个字存CS)

    二、CALL指令
    RET指令的逆指令,将当前位置的IP或者CS push入栈,再跳转
    CALL的用法跟JMP用法相似,注意对比记忆

    • CALL 标号:将当前指令下一条指令的IP,PUSH进入栈中,再跳转到标号位置
      汇编描述等同于:push IP;jmp near ptr 标号(近转移)
    • CALL far ptr 标号: 相当于将当前位置的CS和IP压入栈中,在跳到标号位置
      汇编描述等同于: push CS;push IP;jmp far ptr 标号
    • CALL 16位reg:将IP压栈后,跳转到reg中的地址
      汇编描述等同于:push IP;jmp reg
    • CALL word ptr 内存单元地址
    • CALL dword ptr 内存单元地址
      第一个相当于将IP压栈,第二个相当于将CS和IP相继入栈

    CALL指令和RET指令配合使用,实现程序中的灵活跳转

    三、MUL指令
    1.乘法指令MUL的两个相乘的数:要么都是8位,要么都是16位(类型匹配)

    • 两个相乘的数是8位的时候,一个放在AL中,一个放在另一个寄存器(8位)或者内存字节单元中
    • 如果是16位的两位数,一个放在AX中,一个放在另一个寄存器中或者内存字节单元中
    1. 指令的结果:如果是8位乘法则结果默认放在AX中;如果是16位乘法,则结果高位放在DX中,低位放在AX中。

    相关文章

      网友评论

          本文标题:汇编学习10 CALL与RET指令

          本文链接:https://www.haomeiwen.com/subject/ywsggqtx.html