逆向之进制学习

进制

新博客链接

  1. 进制的实质就是查表
  2. 熟悉2进制跟16进制的转换
  3. 熟悉进制表的制作以及计算进制之间的加减乘除

进制练习1

通过编写7进制加法表,乘法表,并计算
23456+54356 = ?
5621 - 654 = ?
234 * 65 = ?

首先编写1-100的7进制数据

0 1 2 3 4 5 6
10 11 12 13 14 15 16
20 21 22 23 24 25 26
30 31 32 33 34 35 36
40 41 42 43 44 45 46
50 51 52 53 54 55 56
60 61 62 63 64 65 66

编写7进制加法表

1+1=2
1+2=3 2+2=4
1+3=4 2+3=5 3+3=6
1+4=5 2+4=6 3+4=10 4+4=11
1+5=6 2+5=10 3+5=11 4+5=12 5+5=13
1+6=7 2+6=11 3+6=12 4+6=13 5+6=14 6+6=15

编写7进制乘法表

1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=12
1*4=4 2*4=11 3*4=14 4*4=22
1*5=5 2*5=13 3*5=21 4*5=26 5*5=34
1*6=6 2*6=15 3*6=24 4*6=33 5*6=42 6*6=51

计算结果

23456+54356=?23456 + 54356 = ?
计算过程:

  1. 6+6 查表是15,进一位,留5
  2. 5+5 查表是13, 13 + 1,3+1查表为4,为14,进一位,留4
  3. 4+3 查表是10, 10 + 1,11,进一位,留1
  4. 3+4 查表是10, 10+1 = 11,进一位,留1
  5. 2+5 查表是10, 10+1 = 11,进一位,留1
    结果为:111145

5621654=?5621 - 654 = ?
计算过程:

  1. 1不够减,借一位,为11,11-4=?,查表可得为4,
  2. 2-1 = 1,1-5不够,借一位,11-5=3
  3. 5-6不够,15-6=6
  4. 4
    结果为:4634

23465=?234 * 65 = ?
计算过程:

  1. 4*5 = 26,留6 进2
  2. 3*5 = 21, 21+2, 23,留3 进2
  3. 2*5 = 13 13+2=15 留5,进1
  4. 1536
  5. 4*6 = 33, 留3 进3
  6. 3*6 = 24, 24+3,4+3 == 10,留0,进3
  7. 2*6 = 15, 15+3, 5+3=11,进2,留1
  8. 2103
    结果为:22536

2+3 = 1?可能嘛

可能,当定义如下的10进制时便可,0,2,3,1,5,6,7,8,9,4

16进制与二进制的映射

1 2 3 4 5 6 7 8 9 A B C D E F
0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

自行编写进制加密

定义如下的7进制,7,5,6,1,2,3,0
试着计算上题中的计算题目

先编写进制对应

4 5 6 1 2 3 0
54 55 56 51 52 53 50
64 65 66 61 62 63 60
14 15 16 11 12 13 10
24 25 26 21 22 23 20
34 35 36 31 32 33 30
04 05 06 01 02 03 00

编写7进制加法表

5+5=6
5+6=1 6+6=2
5+1=2 6+1=3 1+1=0
5+2=3 6+2=0 1+2=54 2+2=55
5+3=0 6+3=54 1+3=55 2+3=56 3+3=51
5+0=54 6+0=55 1+0=56 2+0=51 3+0=52 0+0=53

编写7进制乘法表

5*5=5
5*6=6 6*6=2
5*1=1 6*1=0 1*1=56
5*2=2 6*2=55 1*2=53 2*2=66
5*3=3 6*3=51 1*3=65 2*3=60 3*3=12
5*0=0 6*0=53 1*0=62 2*0=11 3*0=26 0*0=35

计算

23456+54356=23456+54356=?
计算过程:

  1. 6+6 = 2 留2
  2. 5+5 = 6 留6
  3. 4+3 = 3 留3
  4. 3+4 = 3 留3
  5. 2+5 = 3 留3
    结果:33362

5621654=5621-654=?
计算过程:

  1. 1-4 = 1
  2. 2-5 = 1
  3. 6-6 = 0
  4. 5
    结果:5011

23465=?234*65=?
计算过程:

  1. 4*5 = 4
  2. 3*5 = 3
  3. 2*5 = 2
  4. 234
  5. 4*6 = 4
  6. 3*6 = 51 留1 进5
  7. 2*6 = 55 55 + 5 , 5+5=6, 55+5=56,留6,进5
  8. 5614
    结果:51434

汇编

push 后,esp改动的一定是按机器字长来的吗?

不一定,可以push 16位的二进制数,esp-2,不可以弄8进制的数
32位:

  • push dword ptr ds:[0x1234] esp = esp - 4

  • push eax

  • push ax

  • push al X

  • push word ptr ds:[0x1234] esp = esp - 2

  • pop ax esp = esp + 2

  • pop eax

pushad popad

标志寄存器

  1. 进位标志CF(carry flag) 最高位产生进位或者借位,
  2. 奇偶标志位PF(Parity flag) 结果中1的个数,偶数PF=1,奇数PF=0
  3. 辅助进位标志AF(Auxiliary Carry flag)
  4. 零标志位ZF(zero flag) 用来反映结果是否是0
  5. 符号标志位SF(signed flag) 运算结果的符号位
  6. 溢出标志位OF(overflow flag)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章