title: Segmentation fault when run hello.s by GNU Assembler in Cygwin
body: <p>I use gcc in Cygwin (in Windows7-64 bit) to run this example
  <a href="http://asm.sourceforge.net/howto/build.html" rel="nofollow">http://asm.sourceforge.net/howto/build.html</a></p>
  
  <pre><code>.data                   # section declaration
  msg:
      .ascii  "Hello, world!\n"   # our dear string
      len = .-msg         # length of our dear string
  .text                   # section declaration
              # we must export the entry point to the ELF linker or
      .global _start  # loader. They conventionally recognize _start as their
              # entry point. Use ld -e foo to override the default.
  _start:
  # write our string to stdout
      movl    $len,%edx   # third argument: message length
      movl    $msg,%ecx   # second argument: pointer to message to write
      movl    $1,%ebx     # first argument: file handle (stdout)
      movl    $4,%eax     # system call number (sys_write)
      int $0x80       # call kernel
  # and exit
      movl    $0,%ebx     # first argument: exit code
      movl    $1,%eax     # system call number (sys_exit)
      int $0x80       # call kernel
  </code></pre>
  
  <p>by command line in Cygwin
      <strong>$as -o hello.o hello.s &amp;&amp; ld -s -o hello hello.o &amp;&amp; ./hello</strong>
  the result is
      <strong>Segmentation fault</strong></p>
  
  <p>Can you help me?</p>