• 汇编基础


    (本文更新ing...)

    0. 一些命令

    汇编命令 等价伪代码
    mov eax, ecx eax=ecx
    add eax, ecx eax+=ecx
    sub eax, ecx eax-=ecx
    inc eax eax++
    dec eax eax--
    lea eax, [ecx+4] eax=ecx+4
    leave mov esp ebp,pop ebp
    retn eip=esp,esp=esp+4
    retn N eip=esp,esp=esp+4+N

    1. jxx家族

    测试标志位的jxx:

    指令 描述 条件 别名 相反指令
    jc 如果进位位被置位则跳转 进位标志=1 jb,jnae jnc
    jnc 如果进位位没有置位则跳转 进位标志=0 jnb,jae jc
    jz 如果0标志被置位则跳转 0标志=1 je jnz
    jnz 如果0标志没有置位则跳转 0标志=0 jne jz
    js 如果符号位被置位则跳转 符号标志=1 jns
    jns 如果符号位没有被置位则跳转 符号标志=0 js
    jo 如果溢出标志置位则跳转 溢出标志=1 jno
    jno 如果溢出标志没有置位则跳转 溢出标志=0 jo
    jp 如果奇偶校验位被置位则跳转 奇偶校验标志=1 jpe jnp
    jpe 如果奇偶校验位为偶校验则跳转 奇偶校验标志=1 jp jpo
    jnp 如果奇偶校验位没有被置位则跳转 奇偶校验标志=0 jpo jp
    jpo 如果奇偶校验位为奇校验则跳转 奇偶校验标志=0 jnp jpe

    使用无符号数比较的jxx:

    指令 描述 条件 别名 相反指令
    ja 如果超过(>)则跳转 进位标志=0,0标志=0 jnbe jna
    jnbe 如果不低于或等于(不 <=)则跳转 进位标志=0,0标志=0 ja jbe
    jae 如果超过或等于(>=)则跳转 进位标志=0 jnc,jnb jnae
    jnb 如果不低于则跳转(不 <) 进位标志=0 jnc,jae jb
    jb 如果低于(<)则跳转 进位标志=1 jc,jnae jnb
    jnae 如果不超过或等于(不>=)则跳转 进位标志=1 jc,jb jae
    jbe 如果低于或等于(<=)则跳转 进位标志=1或0标志=1 jna jnbe
    jna 如果不超过(不>)则跳转 进位标志=1或0标志=1 jbe ja
    je 如果相等(=)则跳转 0标志=1 jz jne
    jne 如果不相等(<>)则跳转 0标志=0 jnz je

    使用有符号数比较的jxx:

    指令 描述 条件 别名 相反指令
    jg 如果大于(>)则跳转 符号标志=溢出标志或0标志=0 jnle jng
    jnle 如果小于或等于(<=)则跳转 符号标志=溢出标志或0标志=0 jg jle
    jge 如果大于或等于(>=)则跳转 符号标志=溢出标志 jnl jge
    jnl 如果不小于(不<)则跳转 符号标志=溢出标志 jge jl
    jl 如果小于(<)则跳转 符号标志<>溢出标志 jnge jnl
    jnge 如果大于或等于(>=)跳转 符号标志<>溢出标志 jl jge
    jle 如果小于或等于(<=)跳转 符号标志<>溢出标志或0标志=1 jng jnle
    jng 如果不大于(不>)则跳转 符号标志<>溢出标志或0标志=1 jle jg
    je 如果等于(=)则跳转 0标志=1 jz jne
    jne 如果不等于(<>)则跳转 0标志=0 jnz je

    2. 流程控制命令

    汇编伪代码 等价伪代码
    cmp a,b
    jle end

    end:
    if(a>b){①}
    cmp a,b
    jge end

    end:
    if(a<b){①}
    cmp a,b
    jne end

    end:
    if(a==b){①}
    if(a==1){①}else{②}
    switch(a){
    case 'c':①;break;
    case 'x':②;break;
    default:③;
    }

    注意这里对a--做了
    简化处理,实际的汇
    编过程中会为a--
    请一个临时变量
    do{①}while{a--};
    while(a--){①}
    for(i=0;i<100;i++){①}
    Those who seek some sort of a higher purpose or 'universal goal', who don't know what to live for, who moan that they must 'find themselves'. You hear it all around us. That seems to be theofficial bromide of our century. Every book you open. Every drooling self-confession. It seems to be the noble thing to confess. I'd think it would be the most shameful one.
  • 相关阅读:
    MySQL乱码问题
    Oracle安装错误“程序异常终止
    Hibernate Spring
    快学Scala 第一课 (变量,类型,操作符)
    Scala 学习笔记之隐式参数和隐式转换并用
    Hadoop 学习笔记之 Incompatible namespaceIDs问题
    Kafka 学习笔记之 Topic日志清理
    Zookeeper 学习笔记之 节点个数
    Kafka 学习笔记之 删除Topic
    Kafka 学习笔记之 架构
  • 原文地址:https://www.cnblogs.com/spenghui/p/7531175.html
Copyright © 2020-2023  润新知