If you're experimenting with asm in crystal, you might want to use --prelude=empty to remove the standard library to make the asm output cleaner. You can then then require lib_c and use that directly.
I suppose this could work if, as you suggest, I manually called out to a lib_c function like printf instead.