汇编中补码转换
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