like hyper says it helps to understand assembly then move on to C. Most schools teach micros that way, and most students glaze over the assembly and never look back. However have fun reading spec sheets and debugging a C code with no knowledge of assembly, it can be done but eventually it will catch up with you and make your life extremely difficult.
Hex is just a bunch of hexidecimal values. Assembly really just associates labels with their hex values so that humans can read it and understand. C is a higher level language meaning it should be simpler to follow and write then assmebly because the higher level takes care of little things like setting proper bits in registers, handiling memory locations, and clearing flag bits, however understand that when C is compiled it is compiling it to assembly language at which point is is converted to Hex or machine language.