0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 0,1,2,3,4,5,6,7,8,9,A, B, C, D, E, F, 10 10進位與2進位 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1 ...
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
0,1,2,3,4,5,6,7,8,9,A, B, C, D, E, F, 10
10進位與2進位
0------0000 1------0001 2------0010 3------0011 4------0100 5------ 0101 6------0110 7------0111
8------1000 9------1001 10------1010 11------1011 12------1100 13------1101 14------1110 15------1111
比較好記(A=1010) B C D E F
牢記 10A.11B.12C.13D.14E.15F
出現1個1的是 1,2,4,8
出現2個1的是 3,5,6,9,10,12
出現3個1的是 7,11,13,14
10的16進位恰恰是1010,11的16進位恰恰是1011,是16進位的末兩位,
12是1100。
運算都是查出來的,不是算出來的。加法運算是基本地址+偏移地址而得出。
反碼
補碼 負數所對應的正數先取反,再加1,其餘位用1填充。
not 取反 按位取反 1101 -》》》1111 0010 不足的地方用1補齊。
xor 相同則該位為0,不同則為1. 牢記xor eax,eax,返回0.將得到的結果賦值給eax。(同0異1)
or 有1則為1,否則為0
and 都1則為1,否則為0
將對應位設置為1,其他位保持不變,如何操作?用OR
通過該指令可將操作對象的相應位設為0,其他位保持不變。用and
6A 01 push 0x1
6A 11 push 0x11
68 23010000 push 0x123
68 34120000 push 0x1234
68 45230100 push 0x12345
68 56341200 push 0x123456
68 67452301 push 0x1234567
68 78563412 push 0x12345678
68 89674523 push 0x23456789
/* */
B8 01000000 mov eax,0x1
B8 12000000 mov eax,0x12
B8 23010000 mov eax,0x123
B8 34120000 mov eax,0x1234
B8 45230100 mov eax,0x12345
B8 56341200 mov eax,0x123456
B8 67452301 mov eax,0x1234567
B8 78563412 mov eax,0x12345678
B8 89674523 mov eax,0x23456789
/* */
BB 01000000 mov ebx,0x1
BB 12000000 mov ebx,0x12
BB 23010000 mov ebx,0x123
BB 34120000 mov ebx,0x1234
BB 45230100 mov ebx,0x12345
BB 56341200 mov ebx,0x123456
BB 67452301 mov ebx,0x1234567
BB 78563412 mov ebx,0x12345678
BB 89674523 mov ebx,0x23456789
83C0 01 add eax,0x1
83C0 12 add eax,0x12
05 23010000 add eax,0x123
05 34120000 add eax,0x1234
05 45230100 add eax,0x12345
05 56341200 add eax,0x123456
05 67452301 add eax,0x1234567
05 78563412 add eax,0x12345678
05 89674523 add eax,0x23456789