zoukankan      html  css  js  c++  java
  • 汇编 之call介绍

    Call自动将下一条指令入栈   没有ret这条指令

    Retn , retf  弹出栈  

    Retn + imm  表示平栈大小

     

    Call 相当于  当前位置入栈  跳转子程序

    Mov ax, $ + 6  ;$表示当前1p

    Push ax

    Jmp PRINTF

    PRINTF:

    功能

     

    ret相当于  取栈顶入栈位置 跳转入栈位置  释放栈

    Mov bx,sp

    Jmp word ptr ss: [bx]

    ;释放栈

    Add sp ,2

     

    c调用约定

    Mov ax,3  最后一个参数先入栈

    Push ax

    Mov ax,2

    Push ax

    Call Add

     

    Add:   ;ax返回值

    Push bp

    Mov bp ,sp

    Mov ax,[bp+4]

    Add ax,[bp+6]

    Pop bp

    Retn

     

     

    栈寄存器bp的作用算局部变量的位置        00  00  00

    函数标准写法

    1. 保存环境   push bp

    2. 保存栈底     mov bp,sp

    3. 申请局部变量空间   sub sp , 4     抬栈大小就是变量的大小

    4. 保存寄存器环境      push ax  可以有可以无

    5. 恢复寄存器环境   pop ax

    6. 释放局部变量空间   add sp +4

    7. 恢复环境   pop bp

    8. 返回   retn

     

    00      00      00     00    00     00     00  00     00 00

    变量1  变量2   栈底   bp     程序位置  ip(段内)      参数1     参数2

     

    00      00   00   00    00  00   00  00   00 00   00 00

    变量1  变量2    栈底   bp     程序位置   ip(段间)  参数1    参数2

     

     

    中断指令INT  中断需要 iret表示中断返回

    中断表不能传参,所以只能寄存器传参

     

    Int 10   bios 检测硬件

    Int 21  系统

    INT i8

    中断调用指令:产生i8号中断

    IRET

    中断返回指令:实现中断返回

    INTO

    溢出中断指令:

    若溢出标志OF=1,产生4号中断

    否则顺序执行

     

    Int 建了一个表 通过下标寻址来调用函数指针来实现对应的功能,如果找不到系统直接崩溃

     

    Debug调试器调试  在程序中加int3中断  汇编代码  cc 随时定位

    g直接到你想停的位置,快速定位   e  int 3的位置  改代码 90  可以做到快速定位

     

    Not 什么都不干    汇编代码 90

    可以对齐    解决花指令

     

    用于任意设置进位标志

    CLC  复位进位标志:CF←0

    STC  置位进位标志:CF←1

    CMC  求反进位标志:CF←~CF

     

    串操作指令中,需要使用

    CLD  复位方向标志:DF←0

    STD  置位方向标志:DF←1

     

    在编写中断服务程序时,需要控制可屏蔽中断的允许和禁止

    CLI  复位中断标志:IF←0

    STI  置位中断标志:IF←1

     

    LOCK 封锁总线 用于线程同步   ;原子操作

    只能锁一条指令   执行指令后自动解锁

    HLT   进入暂停状态   not 消耗指令  hlt什么都不干

     

    交权指令 ESC  浮点协处理器8087指令是与8086的整数指令组合在一起的,当8086发现是一条浮点指令时,就利用ESC指令将浮点指令交给8087执行

    学如逆水行舟,不进则退。 博客园技术交流群 群 号:1073255314 (本群没人,刚刚建立 -_-!!! )
  • 相关阅读:
    $.cookie 使用不了的问题定位过程
    jquery.cookie.js使用介绍
    java 转换 小函数(不断增加中。。。)
    jquery ajax 访问webServer的xml文件
    JS中的prototype【转】
    【转载】习惯决定性格 性格决定命运
    jquery的ajax和原始的ajax这两种方式的使用方法
    ajax readyState的五种状态详解
    一个简单的tcp代理实现
    go tcp使用
  • 原文地址:https://www.cnblogs.com/Mj-NaijAm/p/13618701.html
Copyright © 2011-2022 走看看