• 汇编原理 | 二进制、跳转指令、算数运算、


    一.二进制

    two complement reprentation(补码)

    二进制的运算:

            6的二进制 = 0110

            -6的二进制 如何表示?

                    四个bit的第一个bit表示符号:1负0正

            -6表示为1010

    解释:

            0 = 0000

            1 = 0001

            -1 = 1111(由 1 + (-1) = 0 推的)

    再往下推:

            -2 = 1110

            -3 = 1101

            -4 = 1100

            -5 = 1011

            -6 = 1010

    更简单的方式找-6的二进制

            把6的每一位取反之后,再加1,得到结果

    问:在32位电脑里01000001表示什么?不能单纯觉得是65这个数

            在32位bit时该怎么表示6?在前面加28个0

            在32位bit时该怎么表示-6?能直接在4位的情况下加28个0吗?不能,应该在前面加上28个1(很好想)

    十六进制表达:

            0xffff ffff: 化为2进制:1111...1111共32个1 

            666(十进制) 化为二进制-> 000...(20个0) 0010(十进制里的2) 1001(十进制里的9) 1010(十进制里的a) 

                     化为十六进制->  0x 0000 029a

            -666(十进制) 化为二进制-> 111...(20个1) 1101 (十进制里的13/d) 0110(十进制里的6) 0110(十进制里的6)

                     化为十六进制-> 0x FFFF Fd66

     

    二.跳转指令

    转移指令有以下几类:

            无条件跳转指令(jmp)

            条件转移指令

            循环指令(loop)

            过程

            中断:cpu是跳来跳去的,不停的终端

    j-Jump 跳转 

    e-Equal 相等的时候发生跳转

    z-Zero 相减得0时发生跳转

    s-Sign 符号,当他是负的时候发生跳转   

    c-Carry 如果发生借位会发生跳转     

    l-Less、b-Below 当操作数1 < 操作数2 时发生跳转

    a-Above、g-Greater 当操作数1 > 操作数2 时发生跳转 

    p-Parity

    o-Overflow

    JE/JZ - jump if equal/zero

    JNE/JNZ - jump if not equal/zero

    JB/JNAE/JC - jump if below/not above equal/carry 低于/不高于等于/有借位

    JNB/JAE/JNC - jump if not carry 不低于/高于等于/无借位

    JP-jump if parity 奇偶位为1

    JNP-jump if not parity 奇偶位不为1

    JO- 结果溢出

    JNO

    JS-结果为负

    JNS 

    跳转原理:

            CMP 操作数1,操作数2

            操作数1 - 操作数2,不改变数值

            效果:改变状态标志位CF、SF、ZF、PF、OF、AF

            判断标志位情况

    三、算数运算

    立即数(Immediate Value) 是指一个固定的常量或者直接给定的数值,它通常用作计算指令中的一个参数。立即数是直接嵌入到指令中的,而不是存储在寄存器或内存中。例如,在一条加法指令中,立即数可能是要添加到操作数上的常量值。

    操作数(Operand) c是指参与计算的数据或变量。在计算指令中,操作数可以是立即数、寄存器中存储的值、内存中的数据等。操作数可以是单个的,也可以是多个的,取决于具体的指令。例如,在一条加法指令中,操作数可以是两个要相加的值。


                             

     

  • 相关阅读:
    一、数组经典题型
    工程制造领域:企业IT架构
    深度学习 - 46.DIN 深度兴趣网络
    Revopoint的3D输出格式及转换工具
    k8s(Kubernetes)中yaml文件快速阅读理解
    通过docker快速部署RabbitMq
    Kafka设计原理
    【数据结构入门_数组】 Leetcode 350. 两个数组的交集 II
    Leecode 15.题:三数之和
    【Linux系统化学习】进程优先级 | 进程饥饿 | 进程切换
  • 原文地址:https://blog.csdn.net/xxlyss/article/details/139268971