汇编知识点

汇编中补码转换

1.补码可以先减1,然后按位取反。
2.从右往左遇见第一个1不变,然后向左按位取反(符号位除外)
3.对于16进制数 :取反的方法就是用15减去改数字中的每一位 :
6A3D –> 95C2+1 –> 95C3 (这只是个例子,正数的话补码和源码相等)

大小端

大小端存储对应的是存储器,在寄存器里面没有大小端存储这一说。

取反

16进制数字取反的方法就是用15减去该数字

正负数判断

16进制的补码最高位>=8的话就是负数,否则是整数
但是记住,计算机中正数的补码,反码,源码,相同。

汇编指令

XCHG : 交换指令,内容交换

ADC EAX,EBX –> EAX = EAX + EBX + CF

INC EAX –> EAX = EAX + 1

SBB EAX,EBX –> EAX = EAX - EBX - CF

NEG:取补指令 NEG(neg) NEG EAX –> 对操作数取补,就是用0减去改操作数 或者 是按位取反 + 1 ,它的操作数可以是寄存器也可以是存储单元,同时改指令可以影响标志寄存器。如果操作数是0,那么进位标志为0,否则进位标志为1。

shl shl eax ,cx –> 将eax中的二进制数字左移cx位,相当于乘上2的cx次方

标志状态

CF : 进位标志,运算结果最高位产生进位或者借位的话 CF 置1,否则CF 清0。

ZF : 零标志位,运算结果为0,则置1,否则置0

SF : 符号标志位,跟运算结果的最高位相同

OF : 溢出标志位,反映有符号数是否产生了溢出。 判断:符号位和最高数值位一致则未溢出,否则溢出。

PF : 奇偶标志位,反映最低一个字节中的含有“1”的位数,偶数则被置1,奇数被置0。

AF : 辅助进位标志位 : 反映在算术运算中第三位是否产生进位或者结尾。或者最低的4位是否有借位或者进位。有则置1,否则置0


   转载规则


《汇编知识点》 时钟 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
32位逆向分析技术 32位逆向分析技术
汇编指令 ret n : 在ret指令后给栈指针加上操作数 test eax,eax 如果eax的值为0,那么逻辑与的运算结果为0,设置ZF为1,否则ZF为0 lea :加载有效地址 sar : 有符号数右位移指令,这个是算术右位移,补全
下一篇 
2019第五空间pwn题解 2019第五空间pwn题解
於讴首先是一个简单的逆向分析只要大于或等于1000即可,接下来就是一个很简单的栈溢出的ROP利用: #!/usr/bin/env python # coding=utf-8 from pwn import * from LibcSearch
2019-08-31
  目录