Ich würde nur mal schauen, ob der Code so aussieht wie er soll. Hast du es schon mal mit den UBRR-Werten wie im asm-Programm versucht? Ich nehme mal an es ist ein Rundungsproblem in C.