跳转至

1_进制_寄存器_汇编指令

进制的定义

二进制: 由二个符号组成,分别是0, 1 逢2进一

十进制: 由十个符号组成,分别是0,1,2,3,4,5,6,7,8,9 逢10进一

如果将进制定义成这样,你有何想法?

十进制定义: 由十个符号组成,分别是9 1 5 2 4 7 6 3 8 0 逢十进一

如果改成这样呢?

了解事物的本质,重新定义十进制,由十个符号组成,这十个符号可以是任意值,逢十进一。

如果将上述的符号用于加密,那会给解密者带来极大的麻烦!


十进制 二进制 十六进制
0       0000    0
1       0001    1
2       0010    2
3       0011    3
4       0100    4
5       0101    5
6       0110    6
7       0111    7
8       1000    8
9       1001    9
10      1010    A
11      1011    B
12      1100    C
13      1101    D
14      1110    E
15      1111    F


几个重要的计量单位

BYTE 字节 8bit

WORD 字 16bit

DWORD 双 32bit


逻辑运算

逻辑运算   C语言     汇编
  与        &         and
  或        |         or
  非        !         not
  异或      ^         xor

cpu是整么计算1+1的?

cpu 先把一个 1 存入寄存器,X=0001, 再把一个1存入寄存器,Y=0001

先做一个异或运算 X xor Y = 0000, 把运算结果存入寄存器 R = 0000

再做一个与运算 X and Y = 0001, 0001 << 1 = 0010, 0010 != 0,

把R赋值给X,把0010(左移之后的数)赋值给Y,重复以上步骤,直至 (X and Y) << 1 == 0, return R

判断某一位是0 还是1

判断第n位是0还是1,只需要将 1 << n and value

X   1000 1111   
Y   0000 1000   
X and Y 0000 1000    判断第4位是否为0

寄存器

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