第五周汇编预前

替代版:http://poilzero.sipc115.club/index.php/archives/53/

整数进制转换

进制表示

英文简写C中表示(以17为例)
二进制Binary()B暂无
八进制Octal()O021
十进制Decimal()D17
十六进制Hexadecimal()H0x11

十六进制中,超过9的时使用A-F来表示,如下

HexadecimalABCDEF
Decimal101112131415

To Hex

  • 二进制
  • 八进制
  • 十六进制

各自位乘以各自位的权重,各自位的权重等于进制数的n次幂(n为从右往左,从零数第n个),以十六进制举例

(A3F)O=>(?)D

  1. 权重16*16 16 1
  2. 位值10 3 15
  3. ANS = 101616 + 316 + 151

H ex To

  • 二进制
  • 八进制
  • 十六进制

使用短除法:

  1. 不断除以进制数得到商和余数,余数保留商继续除以进制数。
  2. 中止:商为0时。
  3. 答案:为中止时的余数向上连接到第一个余数。

以十进制转为二进制和十六进制分别举例(用表格模拟短除法列式)

(115)D=>(?)B

| 目标进制数 | 商 | 余数 |

2115
2571
2281
2140
270
231
211
01

因此答案就为:(1110011)B

(115)D=>(?)H

| 目标进制数 | 商 | 余数 |

16115
1673
07
因此答案就为:(73)H

捷径【B To O/H】

将二进制从右往左分块转为十进制然后转为目标进制,其中

  • 转八:每三位划分一次
  • 转十六:每四位划分一次

以转八位的一个例子来展示

(01110010)B=>(?)O

  1. (01 110 010)B
  2. (1)D (6)D (2)D
  3. (162)O

反转同理

(162)O=>(?)B

  1. (1 6 2)O
  2. (01 110 010)B
  3. (01110010)B

整数的储存(D To B)

以C/C++(IEEE)的标准为基准

无符号和有符号

无符号数(unsigned)全部的占位用来表示数字,有符号数最高位用于表示正负(0表示正,1表示负),其余位用于表示数值,因此会比无符号数少不少表示范围(同等占用空间情况下)。

另外,正数需要多表示0因此正数相对于负数少一个数,例如8位的有符号数字表示范围:+127~128

补码(有符号的负数表示)

这里讨论的范围除开了符号位。

为了减少逻辑电路,底层机器结构仅希望用加法计算器计算减法,如此就需要得到一个负数要满足如下(X为一个已知二进制正数,?为X对应的二进制负数即为所求。并且越位不计。已知正数表达,求负数表达),然后进行相加即可

X + ? = 0

例如

0000 0101 + ? = 0000 0000

很容易发现:0000 0101 + 1111 1010 = 1111 1111

此时再加1:则会造成越位清零 即 0000 0000

因此 ? = 1111 1010 + 0000 0001 = 1111 1011

总结?的运算规则即为:X的反码(按位取反)然后+1

以上推导的?就叫做 X的补码了,运算规则就是X的反码(按位取反)然后+1。这就是底层的负数储存原理

浮点数的储存(D To B)

前面都是整数的表示,但是计算机中还存在小数的表示,受限于知识水平和需要,仅写出十进制转二进制小数部分表示和计算。

计算机实际上是通过二进制表示的分数来表示小数部分的,例如C/C++(IEEE)中浮点类型的变量

符号位阶码尾数
float(32位)1823
double(64位)11152

其他更详细的部分用到再补吧,先鸽了

位运算的奇技淫巧

重新介绍两个位运算

  • 与:X & Y

    • Y的位如果是0,则X也一定是0,即屏蔽X对应的位
    • Y的位如果是1,则Y原来是什么还是什么,也就是保留X对应的位
  • 异或:Z ^ Q

    • 满足交换律和结合律
    • a^a = 0
    • a^0 = a
    • 同理 a^a^b = b

附录

汇编指令集分为

  • CISC复杂指令集代表作是X86
  • RISC精简指令集代表作是MIPS ARM

未来主要学的是x86指令集maybe

汇编:王爽

做题:看雪

逆向环境:ida

逆向教程:滴水三期

Last modification:June 29, 2021
如果觉得我的文章对你有用,请随意赞赏。咖啡(12RMB)进度+100%,一块巧克力(1RMB)进度+6%。
(赞赏请备注你的名称哦!后台记录中来自理工小菜狗)