【汇编先导】-- 1

汇编先导

学习目录

  • 语言
  • 进制及其运算
  • 二进制、量子计算
  • 数据宽度
  • 有/无符号数
  • 原码、反码、补码
  • 位运算
  • 汇编及其工具
  • 寄存器、内存
  • 汇编指令
  • 内存复制、堆栈指令
  • 汇编写函数、堆栈传参、堆栈平衡
  • 外挂

实际上,每种进制都有一套各自的运算体系(表),类似于十进制常用的九九乘法表,各种进制也有各自的加法表和乘法表!

计算机只做加法!机器语言就是位运算!通过电路来实现,这就是计算机最底层的本质。通过机器语言来实现加法计算器、设计电路。

1. 数据宽度

C和C++都需要定义数据的类型。计算机底层需要给这些数据进行定义宽度。

位(bit) 0 1

字节(Byte) 0~0xFF

字(Word) 0~0xFFFF

双字(DWord) 0~0xFFFFFFFF

2.有/无符号数

2.1 无符号数规则

给出的数字是什么就是什么(最高位无关符号位)

2.2 有符号数规则

给出的数字最高位是符号位:1代表负数,0代表正数

3. 原码、反码、补码

  • 正数的原码、反码、补码均一致
  • 负数的反码符号位是1,其余按位取反;负数的补码是其反码+1

4. 位运算

问题:2*8最高效的计算方式??

4.1 与and(&)

4.2 或or(|)

4.3 异或xor(^)

4.4 非not(~)

4.5 移位

  • 左移shl(<<):所有二进制位全部左移若干位,高位丢弃、低位补0
  • 右移shr(>>):所有二进制位全部右移若干位,低位丢弃、高位补0/1(由符号位决定)

4.6 位运算实现加减乘除

举例:4+5的计算过程在计算机底层是如何实现的?

0000 0100
0000 0101
-----------
0000 1001

# 计算机是如何运算上式的!计算机的实现原理

# 第一步,异或:如果不考虑进位,异或可以直接得出结果
0000 0100
0000 0101
-----------
0000 0001

# 第二步,与:判断计算过程是否产生进位。如果与运算结果为0则无进位
0000 0100
0000 0101
-----------
0000 1100
0000 0100

# 第三步,将与运算结果左移一位:
0000 0100 -> 0000 1000  # 此即进位结果

# 第四步,异或:第一次的异或结果和上一步的进位结果相异或
0000 0001
0000 1000
-----------
0000 1001  # 最终结果!!!

# 第五步,与:再次判断是否产生进位!如此反复!
0000 0001
0000 1000
-----------
0000 0000

# 最终的计算结果就是与运算为0的上一个异或运算结果

5. 汇编语言

通过汇编指令来代替二进制编码:可以给计算机发一些操作,然后让计算机执行。编译器!

图1

学习汇编之前,需要先掌握环境的配置。(1.Vc6:程序到汇编的理解;2.OD;3.抓包工具;4.加密解密工具) 学习汇编并非是为了写代码,而是理解程序的本质

图2


相关推荐

  1. 汇编(1)

    2023-12-21 10:40:02       57 阅读
  2. 【第一章 先导篇】1. 规范化的学习模型

    2023-12-21 10:40:02       32 阅读
  3. 计算机基础1-汇编基础

    2023-12-21 10:40:02       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-21 10:40:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-21 10:40:02       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-21 10:40:02       87 阅读
  4. Python语言-面向对象

    2023-12-21 10:40:02       96 阅读

热门阅读

  1. 使用Spark GraphX进行图形处理的代码练习

    2023-12-21 10:40:02       57 阅读
  2. 大数据学习(29)-spark on yarn底层原理

    2023-12-21 10:40:02       56 阅读
  3. 什么是类加载器,类加载器有哪些

    2023-12-21 10:40:02       52 阅读
  4. sklearn和tensorflow的理解

    2023-12-21 10:40:02       56 阅读
  5. 51单片机控制1602LCD输出整数和浮点数

    2023-12-21 10:40:02       61 阅读
  6. Linux 文本处理

    2023-12-21 10:40:02       61 阅读
  7. SQLite数据库的增删改查

    2023-12-21 10:40:02       61 阅读
  8. work随笔记录(实时更新)

    2023-12-21 10:40:02       61 阅读
  9. C语言第五十四弹---模拟使用strstr函数

    2023-12-21 10:40:02       60 阅读
  10. Avalonia MVVM

    2023-12-21 10:40:02       56 阅读
  11. 栈(C++)

    2023-12-21 10:40:02       42 阅读
  12. vim的使用

    2023-12-21 10:40:02       58 阅读