当前位置: 代码迷 >> 汇编语言 >> 一个不明白的指令,该怎么处理
  详细解决方案

一个不明白的指令,该怎么处理

热度:165   发布时间:2016-05-02 04:42:08.0
一个不明白的指令
    22:         {
00000000  push        ebp 
00000001  mov         ebp,esp 
00000003  push        edi 
00000004  push        esi 
00000005  push        ebx 
00000006  sub         esp,3Ch 
00000009  mov         esi,ecx 
0000000b  lea         edi,[ebp-38h] 
0000000e  mov         ecx,0Bh 
00000013  xor         eax,eax 
00000015  rep stos    dword ptr es:[edi] 
00000017  mov         ecx,esi 
00000019  mov         dword ptr [ebp-3Ch],ecx 
0000001c  mov         dword ptr [ebp-40h],edx 
0000001f  cmp         dword ptr ds:[00631020h],0 
00000026  je          0000002D 
00000028  call        6244533E 
0000002d  xor         edx,edx 
0000002f  mov         dword ptr [ebp-44h],edx 
00000032  mov         dword ptr [ebp-48h],0 
00000039  nop 
    23:             if (a>b)
0000003a  mov         eax,dword ptr [ebp-3Ch] 
0000003d  cmp         eax,dword ptr [ebp-40h] 
00000040  setle       al 
00000043  movzx       eax,al 
00000046  mov         dword ptr [ebp-48h],eax 
00000049  cmp         dword ptr [ebp-48h],0 
0000004d  jne         00000059 
    24:             {
0000004f  nop 
    25:                 return a;
00000050  mov         eax,dword ptr [ebp-3Ch] 
00000053  mov         dword ptr [ebp-44h],eax 
00000056  nop 
00000057  jmp         00000062 
    26:             }
    27:             return b;
00000059  mov         eax,dword ptr [ebp-40h] 
0000005c  mov         dword ptr [ebp-44h],eax 
0000005f  nop 
00000060  jmp         00000062 
    28:         }
00000062  mov         eax,dword ptr [ebp-44h] 
00000065  lea         esp,[ebp-0Ch] 
00000068  pop         ebx 
00000069  pop         esi 
0000006a  pop         edi 
0000006b  pop         ebp 
0000006c  ret 

如上setle是什么意思,百度竟然无法搜到。
------解决方案--------------------
386 才开始支持的指令吧,应该能搜索到的;就是在小于等于时将指定的字节置 1 。
0F 9E    SETLE r/m8    Set byte if less or equal (ZF=1 or SF<>OF)

------解决方案--------------------
原子指令,将比较和设置放在一起。
------解决方案--------------------
setxx  reg,xx表示条件,比如le就表示表示有符号数的小于等于,如果标志位满足这个条件,那么设置reg寄存器为1。
  相关解决方案