You can acquire a microcontroller prototyping board such as Arduino, Beagleboard or MPLAB PIC board, and then create a machine monitor program that can load and execute your other programs in user space.
You can program those microcontrollers in C or their respective instruction sets.
Hook up an LCD display to that MCU board and you have a monitor. Hook up a keyboard and mouse to it and you have controls. (You can even write your own trap handlers for writing to LCD and reading inputs from keyboard and mouse to understand how interrupts and exceptions work at low level. If you want to go lower, you will have to look at MCU pin-outs for interrupt control lines and timing diagrams).
Voilà! You've designed your own computer from scratch!
To answer your question about C, compilers for the first programming languages were written in assembly, and compilers for assembly were written in machine code.