How does one program crashing not crash the entire system? In Windows, if you write a random assembly program that has a random jump to an address that doesn't exist, the program crashes and Windows says something went wrong with the program.

Since each computer system is essentially a constant execution of assembly, how does the one program crashing not cause the entire system to crash with it?
Probably you should read something about OS memory management.

If the program is running it has memory which is readable, memory which is writable and both. If it tries to go beyond its permissions, OS kills it and reports to you in a way you call "crash".

That's all was very roughly speaking.