interrupts and prescaler

PaulS,
I would like to generate a data stream with precise frequency. eg some data bits some sync bits and repeat continuously. I want to run at 2Khz so need ints every 250 microSecs. Hopefully I can do some small amount of house keeping after shifting the data bytes and the output pin has been toggled. I can see most of the code has to fit within the interrupt call with non critical stuff in the main loop. I am looking at all this from an assembly code point of view, with which I am more familiar. Maybe this is the wrong approach for C programming which I am not familiar with.
Is there a way to view the code the compiler makes to try and get a feel for the size of code generated?
Also, what kind of timing errors might the serial print command cause such an interrupt driven scheme?
The arduino environment seems very friendly and a good choice for me as a C beginner but its hard to find much info on how it uses interrupt. Any pointers helpful.