title: The assembly code (x86) with jumps and a syscall read function
body: <p>I would like to ask anyone for help with understanding an assembly code. My problem is:
  the code after the label L2 is important, it calls subroutine function. But it seems to me that the program would never get to the code after label L2, because according to me syscall read (after L1) always reads 0 and after compare it to 1. But zero never equals one, so it seems to me the program never jumps to L2. I guess I must be wrong. I would really appreciate any help</p>
  
  <pre><code>jmp L1
  L2:
  movzbl -0x11(%ebp), %eax
  movsbl %al, %eax
  mov %eax, (%esp)
  call SUBROUTINE_FNC
  &lt;...&gt;
  
  L1:
  mov $0x0, %ebx
  lea -0x11(%ebp), %ecx
  mov $0x1, %edx
  mov $0x3, %eax
  int $0x80
  mov %eax, -0x10(%ebp)
  cmpl $0x1, -0x10(%ebp)
  je L2
  </code></pre>