Advertisement
Ladies_Man

#NUP MAX_256_LE (Intel) EXAM

Jun 20th, 2014
246
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .model flat
  2. .code
  3.  
  4. ;EXAM(17june)
  5. ;MAX256LE (c, a, b)
  6. ;c = max( a, b )
  7. ;typedef int int256_x[8]
  8. ;LE
  9.  
  10. public func
  11. func    proc c public
  12.     push        ebp
  13.     mov     ebp, esp
  14.     push        esi
  15.     push        ebx
  16.     push        ecx
  17.    
  18.     mov     esi, 8[ebp]
  19.     mov     edx, 12[ebp]
  20.     mov     ebx, 16[ebp]
  21.  
  22.     mov     eax, [edx]
  23.     cmp     eax, [ebx]
  24.     jl  loopb
  25.     jne loopa
  26.  
  27.     mov     ecx, 7
  28. comp:
  29.     mov     eax, [edx+ecx*4]
  30.     cmp     eax, [ebx+ecx*4]
  31.     ja  loopa
  32.     jb  loopb
  33.     dec     ecx
  34.     jnl comp
  35.  
  36. loopa:  mov     ecx, 7
  37. a:  mov     eax, [edx+ecx*4]
  38.     mov     [esi+ecx*04h], eax
  39.     dec     ecx
  40.     jnl a
  41.     jmp exit
  42.  
  43. loopb:  mov     ecx, 7         
  44. b:  mov     eax, [ebx+ecx*4]
  45.     mov     [esi+ecx*04h], eax
  46.     dec     ecx
  47.     jnl b
  48.  
  49. exit:
  50.     pop     ecx
  51.     pop         ebx
  52.     pop         esi
  53.     pop     ebp
  54.    
  55.     ret
  56.  
  57. func    endp
  58. end
  59.  
  60.  
  61. //Main.c:
  62.  
  63. #include <stdio.h>
  64. #pragma warning(disable:4100)
  65.  
  66. typedef int int256[8];
  67.  
  68. int main( int ac, char **av, char **env )
  69. {
  70.     int256   a, b, c;
  71.     a[0] = 0x00000000; a[1] = 0x00000000; a[2] = 0x00000000; a[3] = 0x00000000; a[4] = 0x00000000; a[5] = 0x00000000; a[6] = 0x00000000; a[7] = 0x00000000;
  72.     b[0] = 0x00000000; b[1] = 0xF0000000; b[2] = 0x00000000; b[3] = 0x00000000; b[4] = 0x00000000; b[5] = 0x00000000; b[6] = 0x00000000; b[7] = 0x00000000;
  73.     c[0] = 0x77777777; c[1] = 0x77777777; c[2] = 0x77777777; c[3] = 0x77777777; c[4] = 0x77777777; c[5] = 0x77777777; c[6] = 0x77777777; c[7] = 0x77777777;
  74.     func(c, a, b);
  75.     printf( "0x%08X%08X%08X%08X%08X%08X%08X%08X, \n", a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7] );
  76.     printf( "0x%08X%08X%08X%08X%08X%08X%08X%08X \n", b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7] );
  77.     printf( "0x%08X%08X%08X%08X%08X%08X%08X%08X\r\n\n", c[0], c[1], c[2], c[3], c[4], c[5], c[6], c[7] );
  78.  
  79.  
  80.     a[0] = 0xF0000000; a[1] = 0x00000000; a[2] = 0x00000000; a[3] = 0x00000000; a[4] = 0x00000000; a[5] = 0x00000000; a[6] = 0x00000000; a[7] = 0x00000000;
  81.     b[0] = 0x00000000; b[1] = 0xF0000000; b[2] = 0x00000000; b[3] = 0x00000000; b[4] = 0x00000000; b[5] = 0x00000000; b[6] = 0x00000000; b[7] = 0x00000000;
  82.     c[0] = 0x77777777; c[1] = 0x77777777; c[2] = 0x77777777; c[3] = 0x77777777; c[4] = 0x77777777; c[5] = 0x77777777; c[6] = 0x77777777; c[7] = 0x77777777;
  83.     func(c, a, b);
  84.     printf( "0x%08X%08X%08X%08X%08X%08X%08X%08X, \n", a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7] );
  85.     printf( "0x%08X%08X%08X%08X%08X%08X%08X%08X \n", b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7] );
  86.     printf( "0x%08X%08X%08X%08X%08X%08X%08X%08X\r\n\n", c[0], c[1], c[2], c[3], c[4], c[5], c[6], c[7] );
  87.  
  88.  
  89.     a[0] = 0x00000000; a[1] = 0x00000000; a[2] = 0x00000000; a[3] = 0x00000000; a[4] = 0x00000000; a[5] = 0x00000000; a[6] = 0x00000000; a[7] = 0x00000000;
  90.     b[0] = 0xF000000; b[1] = 0x00000000; b[2] = 0x00000000; b[3] = 0x00000000; b[4] = 0x00000000; b[5] = 0x00000000; b[6] = 0x00000000; b[7] = 0x00000000;
  91.     c[0] = 0x77777777; c[1] = 0x77777777; c[2] = 0x77777777; c[3] = 0x77777777; c[4] = 0x77777777; c[5] = 0x77777777; c[6] = 0x77777777; c[7] = 0x77777777;
  92.     func(c, a, b);
  93.     printf( "0x%08X%08X%08X%08X%08X%08X%08X%08X, \n", a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7] );
  94.     printf( "0x%08X%08X%08X%08X%08X%08X%08X%08X \n", b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7] );
  95.     printf( "0x%08X%08X%08X%08X%08X%08X%08X%08X\r\n\n", c[0], c[1], c[2], c[3], c[4], c[5], c[6], c[7] );
  96.  
  97.  
  98.     a[0] = 0x00000000; a[1] = 0x00000000; a[2] = 0x00000000; a[3] = 0x00000000; a[4] = 0x00000000; a[5] = 0x00000000; a[6] = 0x00000000; a[7] = 0x00000000;
  99.     b[0] = 0xF0000000; b[1] = 0x00000000; b[2] = 0x00000000; b[3] = 0x00000000; b[4] = 0x00000000; b[5] = 0x00000000; b[6] = 0x00000000; b[7] = 0x00000000;
  100.     c[0] = 0x77777777; c[1] = 0x77777777; c[2] = 0x77777777; c[3] = 0x77777777; c[4] = 0x77777777; c[5] = 0x77777777; c[6] = 0x77777777; c[7] = 0x77777777;
  101.     func(c, a, b);
  102.     printf( "0x%08X%08X%08X%08X%08X%08X%08X%08X, \n", a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7] );
  103.     printf( "0x%08X%08X%08X%08X%08X%08X%08X%08X \n", b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7] );
  104.     printf( "0x%08X%08X%08X%08X%08X%08X%08X%08X\r\n\n", c[0], c[1], c[2], c[3], c[4], c[5], c[6], c[7] );
  105.  
  106.     return 0;
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement