单一指令替代代码段

时间:2016-02-24 01:33:20

标签: assembly x86

下面的代码片段是单个指令的替代品。 我已经尝试了几个小时而且无法真正解决它们

  1. CMP EBX,EAX JNE X1 MOV EBX,ECX JMP X2 X1: MOV EAX,EBX X2
  2. PUSHF MOV BH,FFH CMP BL,0 JL X1 NOT BH X1: POPF
  3. BT AX,15 JC X1 AND EAX,0000FFFFH JMP X2 X1: OR EAX, FFFF0000H X2:
    请提供解释。
    感谢

1 个答案:

答案 0 :(得分:2)

  1. 看起来像#[json:flights]cmpxchg ebx, ecx
  2. 如果if (eax == ebx) ebx = ecx else eax = ebx为否定,0FFhbh,否则为bl。因此,这只是标志延伸,即。 00h
  3. 它基本相同,它通过直接测试符号位延伸movsx bx, bl,即。它是ax。但请注意,这并不会影响标志,而不会影响代码段。