IMO, the best textbooks for computer architecture and organisation are Computer Organisation and Design and Computer Architecture: A Quantitative Approach, both by Patterson and Hennessy.
The former book even comes in a variety of assembly languages, including MIPS, ARMv8 (or a subset, called LEGv8, heh), and RISC-V.
Also a good option for those whose main interests are on the software side is "Computer Systems: A Programmer's Perspective" by Randal Bryant and others.
The former of the books is introductory material which is taught at the Bachelors Level while the other book is more rigours and suited as a masters/research level book.
I feel lucky then that I had to take both a comp org and comp arch course when I did my bachelors, the first course used the first book and the second course used the second book.
Our final project in the first class was to develop a software simulator in Unix for a MIPS processor and get it to run software that was created by the assembler we had to write in our system tools class.
Our final project in the last class was to develop a synthesizable Verilog implementation of a basic MIPS processor (with bonus credit for making it superscalar). It was really cool to see a computer system created by me from the ground up including an assembler, loader, and linker and using the simulator we wrote previously to check the Verilog implementation against.
Fantastic material, was a good read, and I still have my copies of both books 20 years after starting my undergrad.
Now I kind of want to implement a MIPS processor in software, write a machine monitor, assembler, loader, and linker for it and see if I can get that working on an FPGA....
The former book even comes in a variety of assembly languages, including MIPS, ARMv8 (or a subset, called LEGv8, heh), and RISC-V.