Implementing shift-and-add multiplication and division algorithms in assembly, and analyzing them, is a very formative exercise in my experience.
Besides, if assembly language is good enough for Knuth to express all the algorithms in TAOCP, it's good enough for me...