title: Need guidance on understanding basic assembly
body: <p>I've dabbled in and out of trying to get a grasp on how to do some simple programming in assembly. I am going over a tutorial hello world program and most of the stuff they have explained makes sense, but they are really glossing over it. I would like some help in understanding some different parts of the program. Here is their tutorial example -</p>
  
  <pre><code>section .text
      global main     ;must be declared for linker (ld)
  main:               ;tells linker entry point
      mov edx,len     ;message length
      mov ecx,msg     ;message to write
      mov ebx,1       ;file descriptor (stdout)
      mov eax,4       ;system call number (sys_write)
      int 0x80        ;call kernel
  
      mov eax,1       ;system call number (sys_exit)
      int 0x80        ;call kernel
  
  section .data
  msg db 'Hello, world!', 0xa  ;our dear string
  len equ $ - msg              ;length of our dear string
  </code></pre>
  
  <p>There is the text section and the data section. The data section seems to hold our user defined info for the program. It looks like the "frame" of the program is in the text section and the "meat" is in the data section... ? I assume the program when compiled executes the text section with data from the data section filled into the text section? The bss/text/data section interaction is kind of foreign to me. Also in the data section where the msg and len.... variables? are mentioned, they are followed by some information i'm not sure what to make of. msg is followed by db, what does this mean? Then the text, and then 0xa, what is the 0xa for? Also len is followed by equ, does this mean equals? len equals dollarsign minus msg variable? What is the dollar sign? A sort of operator? Also the instructions in the text section, mov ebx,1 apparently, or seems to tell the program to utilize STDOUT? Is moving 1 to the ebx register a standard instruction for setting stdout?</p>
  
  <p>Perhaps someone has a little more thorough tutorial to recommend? I am looking to get dirty with assembly and need to teach myself some of the... "core fundamentals" if you will. Thanks for all the help!</p>