Source: https://cs.smu.ca/~tami/downloads/csci2328/IrvineAssemblyEd6.pdf