CTF-RE-学习记录-汇编

本文最后更新于:2023年11月8日 中午

八进制运算

加法表

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=7 4+4=10
1+5=6 2+5=7 3+5=8 4+5=11 5+5=12
1+6=7 2+6=10 3+6=11 4+6=12 5+6=13 6+6=14
1+7=10 2+7=11 3+7=12 4+7=13 5+7=14 6+7=15 7+7=16

乘法表

1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=11
1*4=4 2*4=10 3*4=14 4*4=20
1*5=5 2*5=12 3*5=17 4*5=24 5*5=31
1*6=6 2*6=14 3*6=22 4*6=30 5*6=36 6*6=44
1*7=7 2*7=16 3*7=25 4*7=34 5*7=43 6*7=52 7*7=61

十六进制表示二进制(全文背诵)

十六进制可以简写二进制

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

数据宽度

计算机中常见的数据宽度

数据类型 宽度(位) 存储范围
位(BIT) 1
字节(BYTE) 8 0~0xFF
字(Word) 16 0~0xFFFF
双字(DoubleWord) 32 0~0xFFFFFFFF

超出最大宽度存储的内容会被丢弃

例如char x = 0x1FF存入地址后1会被丢弃

有符号数编码规则

正数原码补码反码相同

1 -> 0 0 0 0 0 0 0 1

6 -> 0 0 0 0 0 1 1 0

负数原码反码补码编码规则

原码:最高位为符号位,其余各位为数值本身的绝对值

反码:

  1. 正数:反码与原码相同
  2. 负数:符号位为1,其余位对原码取反

补码

  1. 正数:补码与源码相同

  2. 负数:符号位为1,其余位对原码取反加1

    -1

    1 0 0 0 0 0 0 1__原码__

    1 1 1 1 1 1 1 0__反码__

    1 1 1 1 1 1 1 1__补码__

    -7

    1 0 0 0 0 1 1 1

    1 1 1 1 1 0 0 0

    1 1 1 1 1 0 0 1

4+5=?的运算过程

  1. 异或

    ​ 0000 0100 XOR 0000 0101 = 0000 0001

  2. 判断是否有进位

    0000 0100 & 0000 0101=0000 0100

    &运算后,全0则无进位,有1则在1所在位数+1的位数进1,此处&运算后值不为0

  3. 继续异或

    0000 0001 XOR 0000 1000 = 0000 1001

  4. 判断是否有进位

    0000 0001 & 0000 1000 = 0000 0000

4-5=?的运算过程

4-5=4+(-5)

  1. 异或

    0000 0100 XOR 1111 1011 = 1111 1111

  2. 判断是否有进位

    0000 0100 & 1111 1011 = 0000 0000

  3. 故结果为1111 1111=FF=-1


CTF-RE-学习记录-汇编
https://www.0error.net/2020/12/1a09cf7e.html
作者
Jason
发布于
2020年12月10日
许可协议