Advertisement
Guest User

Untitled

a guest
Feb 26th, 2020
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. SC:     .string "%d%d%d%d"
  2. PR:     .string "%d\n"
  3.  
  4.         .text
  5.         .global process
  6.  
  7. step:
  8.         pushl   %ebp
  9.         pushl   %ebx
  10.         mov     %esp, %ebp
  11.         sub     $36, %esp
  12.  
  13.         lea     32(%esp), %eax
  14.         lea     28(%esp), %ebx
  15.         lea     24(%esp), %ecx
  16.         lea     20(%esp), %edx
  17.         mov     %eax, 16(%esp)
  18.         mov     %ebx, 12(%esp)
  19.         mov     %ecx, 8(%esp)
  20.         mov     %edx, 4(%esp)
  21.         movl    $SC, (%esp)
  22.  
  23.         call    scanf
  24.         cmpl    $4, %eax
  25.         jne     STEP_FINISH
  26.  
  27.         movl    32(%esp), %edx
  28.         movl    28(%esp), %ecx
  29.         movl    24(%esp), %ebx
  30.         movl    20(%esp), %eax
  31.  
  32.         cmp     %eax, %ecx
  33.         jb      STEP_LEFT
  34.         mov     %ecx, %eax
  35.  
  36. STEP_LEFT:
  37.         cmp     %ebx, %edx
  38.         ja      STEP_RIGHT
  39.         mov     %edx, %ebx
  40.  
  41. STEP_RIGHT:
  42.         sub     %eax, %ebx
  43.         jns     STEP_PRINT
  44.         mov     $0, %ebx
  45.  
  46. STEP_PRINT:
  47.         addl    %ebx, %esi
  48.         xor     %eax, %eax
  49.         jmp     STEP_EXIT
  50.  
  51. STEP_FINISH:
  52.         movl    $1, %eax
  53.  
  54. STEP_EXIT:
  55.         mov     %ebp, %esp
  56.         popl    %ebx
  57.         popl    %ebp
  58.         ret
  59.  
  60. process:
  61.         pushl   %ebp
  62.         pushl   %esi
  63.         mov     %esp, %ebp
  64.         andl    $-16, %esp
  65.         xor %esi, %esi
  66.  
  67. body:  
  68.         call    step
  69.    
  70.         movl    %esi, 4(%esp)
  71.         movl    $PR, (%esp)
  72.         call    printf
  73.  
  74.         test    %eax, %eax
  75.         jz  body
  76.  
  77.         mov     %ebp, %esp
  78.         popl    %esi
  79.         popl    %ebp
  80.         xor     %eax, %eax
  81.         ret
  82.  
  83.         .global main   
  84. main:
  85.         call    process
  86.         ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement