逆向_02数据宽度,逻辑运算

  1. 数据宽度,逻辑运算
  2. 4位宽度表示
  3. 8位宽度表示
  4. 32位宽度表示
  5. 几个重要的计量单位
  6. 重要的逻辑运算
  7. CPU如何计算2+3
  8. 32位通用寄存器

数据宽度,逻辑运算

4位宽度表示

  • 无符号数

    • 0 1 2 3 4 5 6 7 8 9 A B C D E F
  • 正数

    • 0 1 2 3 4 5 6 7
  • 负数

    • -1 -2 -3 -4 -5 -6 -7 -8
    • F E D C B A 9 8

    图片表示

8位宽度表示

  • 无符号数

    • 0 1 2 3 4 …… FF
  • 正数

    • 0 1 2 3 4 5 6 7 … 7F
  • 负数

    • -1 -2 -3 -4 -5 -6 -7 -8 … -128
    • FF FE FD FC FB FA F9 F8 F7 F6 F5 F4 …

    8位图片表示

32位宽度表示

  • 无符号数

    • 0 1 2 3 4 …… FFFFFFFF
  • 正数

    • 0 1 2 3 4 5 6 7 … 7FFFFFFF
  • 负数

    • -1 -2 -3 -4 -5 -6 -7 -8 …
    • FFFFFFFF FFFFFFFE FFFFFFFD FFFFFFFC…….

    32位图片表示

几个重要的计量单位

  • BYTE 字节 8bit
  • WORD 字 16bit 2字节
  • DWORD 双字 32bit 4字节

重要的逻辑运算

  1. 或(or |):只要一个为1就是1

    or

  2. 与(and &):两个都为1才是1

    and

  3. 异或(xor ^):不一样为1

    xor

  4. 非(not !):1是0,0是1

CPU如何计算2+3

  1. 先异或运算
    • 0010 xor 0011 = 0001
  2. 进行与运算
    • 0010 and 0011 = 0010
  3. 如果与运算结果不为0
    • 左移一位 = 0100
  4. 左移结果与异或结果进行异或运算
    • 0001 xor 0100 = 0101
  5. 继续进行与运算
    • 0001 and 0100 = 0000
  6. 与运算结果为0,则最终结果为0101

32位通用寄存器

寄存器 主要用途 编号 存储数据范围
EAX 累加器 0 0X00000000-0xFFFFFFFF
ECX 计数 1 0X00000000-0xFFFFFFFF
EDX I/O指针 2 0X00000000-0xFFFFFFFF
EBX DS段的数据指针 3 0X00000000-0xFFFFFFFF
ESP 堆栈之战 4 0X00000000-0xFFFFFFFF
EBP SS段的数据指针 5 0X00000000-0xFFFFFFFF
ESI 字符串操作的源指针;SS段的数据指针 6 0X00000000-0xFFFFFFFF
EDI 字符串操作的目的指针;ES段的数据指针 7 0X00000000-0xFFFFFFFF

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 787772394@qq.com

文章标题:逆向_02数据宽度,逻辑运算

本文作者:二豆子·pwnd0u

发布时间:2020-09-04, 16:06:27

最后更新:2023-05-18, 09:49:10

原始链接:http://blog.codefat.cn/2020/09/04/%E9%80%86%E5%90%91-02%E6%95%B0%E6%8D%AE%E5%AE%BD%E5%BA%A6%EF%BC%8C%E9%80%BB%E8%BE%91%E8%BF%90%E7%AE%97/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏

/*爱心代码*/ /*雪花效果*/ /*百度代码自动提交*/