title: Why are '20, 22' in 'string DB 20, 22 dup('?')' needed?
body: <p>I've been defining strings with for <code>DB 20, 22</code> some time without knowing why: </p>
  
  <p>I read that the first byte is the buffer size and the second holds the number of used bytes for string, but I don't know if both values are mandatory. For example when I define a string and want to point a register to it I have to use +2 to skip these two characters.</p>
  
  <pre><code>string DB 20, 22 dup('?')
  lea si, string+2
  lea si, [string] ; I think this is another alternative
  </code></pre>
  
  <p>That makes me wonder whether if I defined the string without them I could just do <code>lea si, string</code>. Is this possible or are both items mandatory? Also when I want to skip a line and move the cursor to the start I do <code>DB 13, 10</code> how does the compiler know that 13 isn't the buffer size and 10 the number of characters? I'm probably speaking nonsense but any clarification on these issue will be thanked</p>