These routines manipulate counted strings. This type of string is prefixed with
a word on 16-bit systems or a double-word on 32-bit systems. Its terminated with
a nil byte. The address points to the first byte of string.

The counted string is a subset of the AnsiString type in Free Pascal, and may
be used with this type for cleaner code.

Routine: strcpy
Stack or registers on entry:
  [%bp + 2] or [%esp + 8] or R0, address of destination string
  [%bp + 4] or [%esp + 12] or R1, address of source string

Registers on return: None
Example of Usage in i386 Assembly:
     .long 4
     .str: .ascii "Beep\000"
     .long 0
     .buf: .space 10
   start:
     push str
     push buf
     call strcpy

Example of Usage in ARM Assembly:
    .long 4
    .str: .ascii "Beep\000"
    .long 0
    .buf: .space 10
  start:
    ldr r0, str
    ldr r1, buf
    bl strcpy
