First step is learning C.
Second is an assembly language. Fro EASY to learn assembly I recommend finding an emulator for either PDP-11 or Motorola 68000 (they look surprisingly similar). Do a couple of small projects to become familiar with the syntax.
Then with the C language, compile to assembly. Either PDP or M68000. Examine the output. You should be able to, with enough practice, know what the C was, from the assembly. Play with pointers, pointers to functions, enums, recursion, etc.
Now the hard part comes, switch to a modern assembly. The old ones are so clean by comparison. But the old ones are only useful to get your brain to gonk what is needed. Choose one where you have the C and a debugger. Write the C, but step through the assembly code.
In theory you might be able to get a similar experience using Java byte code or MS MSIL, but that not what I was inflicted with.