二进制到汇编学习

    技术2024-07-19  69

    二进制到汇编学习

    一、概述

    1.1 语言

    任何人沟通什么是机器语言# 主流的电子计算机 状态: 0 和 1 # 最早的程序员:穿孔卡带 加 0100 0000 减 0100 1000 乘 0100 1000 0100 1000 除 0100 1000 1100 1000 助记符 将人能够理解的语言转换为机器能够理解的语言加 INC -编译器-> 0100 0000 减 DEC 0100 1000 乘 MUL 0100 1000 0100 1000 除 DIV 0100 1000 1100 1000 C语言加 A+B -编译器-> 0100 0000 减 A-B 0100 1000 乘 A*B 0100 1000 0100 1000 除 A/B 0100 1000 1100 1000

    1.2 进制

    二进制 0 1进制加密

    1.3 进制的运算

    八进制加法表八进制乘法表结论: 无论是什么机制,本身都是有一套完美的运算体系的,都可以通过列表的方式将它计算出来!

    1.4 二进制

    寄存器/内存/位

    1.5 数据宽度

    bit 1位 0-1Byte 8位 0-0xFFWord 16位 0-0xFFFFDWord 32位 0-0xFFFFFFFF

    1.6 有符号数和无符号数

    1(负数) 0(正数)

    二、原码反码补码

    原码:最高位符号位反码: 正数:与原码一样负数:符号位为1,其余位对原码取反 补码: 正数:与原码一样负数:符号位为1,其余位对原码取反 + 1 1 # 原码 0 0 0 0 0 0 0 1 # 反码 0 0 0 0 0 0 0 1 # 补码 0 0 0 0 0 0 0 1 -1 # 原码 1 0 0 0 0 0 0 1 # 反码 1 1 1 1 1 1 1 0 # 补码 1 1 1 1 1 1 1 1 -7 # 原码 1 0 0 0 0 1 1 1 # 反码 1 1 1 1 1 0 0 0 # 补码 1 1 1 1 1 0 0 1 3 + 5 = 8 11 + 101 = 1000

    三、位运算

    计算机可以存储所有的数字(整数、浮点数、字符)的运算

    2*8最高效计算方式

    与运算(and &)

    1011 0001 1101 1000 ---------与运算 1001 0000

    或运算(or |)

    1011 0001 1101 1000 ---------或运算 1111 1001

    异或运算(xor ^)

    1011 0001 1101 1000 ---------异或运算 1111 1001

    非运算(not ~)

    1011 0001 ---------非运算 0100 1110

    **位运算(移动位)**码出高效

    左移(shl<<) 高位丢弃 低位补0

    右移(shr>>) 低位丢弃 高位补0、1(符号位决定)

    0000 0001 1 0000 0010 2 0000 0100 4 0000 1000 8

    四、位运算的加减乘除

    4+5

    # 计算机操作 0000 0100 0000 0101 -----------加法 0000 1001 # 计算机的实现原理 # 第一步:异或 不考虑进位 0000 0100 0000 0101 ----------- 0000 0001 # 第二步:与运算 判断进位 0000 0100 0000 0101 ----------- 0000 0100 # 第三步:将第二步结果左移 0000 0100 << 1 0000 1000 # 第四步:异或 第一步 第三步结果 0000 0001 0000 1000 ----------- 0000 1001 # 第四步:与运算 判断进位 第一步 第三步结果 0000 0001 0000 1000 ----------- 0000 0000 减法 加负数 乘法 n个m相加 m*n 除法 相当于减法x能减去多少y x/y

    五、汇编语言环境配置

    VC6OD抓包工具加密解密

    六、通用寄存器

    数据存储速度:CPU>内存>硬盘

    存值范围0~FFFFFFFF

    mov指令

    mov 存的地址,存的数 mov 存的地址1,存的地址2

    通用寄存器

    FFFFFFFF 32位 16位 8位 EAX AX AL ECX CX CL EDX DX DL EBX BX BL ESP SP AH EBP BP CH ESI SI DH EDI DI BH 8位:L低8位 H高8位

    七、内存

    32位系统 寄存器的寻址范围(FFFFFFFF + 1) * 8(一个内存地址可以存八位) 800000000位

    16进制800000000 转为10进制 4,294,967,296字节(Byte) =》4GB

    故32位系统最多只支持4GB

    mov 数据宽度(byte/word/dword/qword) 内存地址,1 mov byte ptr ds:[0x19FF70],1

    汇编指令

    内存复制

    堆栈的指令

    汇编编写函数

    堆栈传参

    堆栈平衡

    外挂

    Processed: 0.010, SQL: 9