Computer Organization and Assembly Language Programming
Learning assembly language will be helpful for you in understanding computer architecture, because the CPU is designed to run the instructions that are part of its assembly language.  So, to understand what the CPU is doing and why it was designed that way, you need to know what operations it is designed to support.