0%

re学习第一天

进制

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

进制练习1

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

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

0123456
10111213141516
20212223242526
30313233343536
40414243444546
50515253545556
60616263646566

编写7进制加法表

1+1=2
1+2=32+2=4
1+3=42+3=53+3=6
1+4=52+4=63+4=104+4=11
1+5=62+5=103+5=114+5=125+5=13
1+6=72+6=113+6=124+6=135+6=146+6=15

编写7进制乘法表

1*1=1
1*2=22*2=4
1*3=32*3=63*3=12
1*4=42*4=113*4=144*4=22
1*5=52*5=133*5=214*5=265*5=34
1*6=62*6=153*6=244*6=335*6=426*6=51

计算结果

$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

$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

$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进制与二进制的映射

123456789ABCDEF
000100100011010001010110011110001001101010111100110111101111
#

自行编写进制加密

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

先编写进制对应

4561230
54555651525350
64656661626360
14151611121310
24252621222320
34353631323330
04050601020300

编写7进制加法表

5+5=6
5+6=16+6=2
5+1=26+1=31+1=0
5+2=36+2=01+2=542+2=55
5+3=06+3=541+3=552+3=563+3=51
5+0=546+0=551+0=562+0=513+0=520+0=53

编写7进制乘法表

5*5=5
5*6=66*6=2
5*1=16*1=01*1=56
5*2=26*2=551*2=532*2=66
5*3=36*3=511*3=652*3=603*3=12
5*0=06*0=531*0=622*0=113*0=260*0=35

计算

$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

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

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

$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)

本文作者:NoOne
本文地址https://noonegroup.xyz/posts/209dab3e/
版权声明:转载请注明出处!