The thing about assembly is, in a limited context it's not that hard to understand at all.

Value goes into register, do some math on register, compare register to immediate, etc.

The difficulty comes the more code you add. The same thing happens in nearly any language. A single file python script is easy, the complexity in a mature async python app is hard. It's easy to add some numbers and val >> stout in c++, but managing all the dependencies and build chain is hard in a million line program.

It's no different, but assembly is neat because you can isolate the complexity via inlining and just step back and tell the computer exactly what to do.