Why ARM Cortex M0 prints incorrectly Hello World on UART?
You are putting characters into the transmit buffer as fast as you can, without checking whether the UART is ready to accept a next character. Hence a lot of characters are lost, and what the PC receives is a more or less random subset of the characters you attempt to transmit.

Check for the 'tx buffer empty' or 'tx fifo not full' bits. Before assigning a next character to the Tx buffer, first wait for one of those bits.