How does Instruction Code tell an automated adder what to do? (Charles Petzold Code book, Chapter 17 Automation)
I don't have this book.

The "decoder" transforms opcodes into signals for driving the various execution units (alu, branch, ...) and selecting the registers.

Tranditional RISC CPUs have relatively simple encodings where there are almost fixed fields for selecting the operations. This is far less true in CPUs like x86.

(Example, some MIPS instructions : http://www-inst.eecs.berkeley.edu/~cs150/sp11/checkpoint_1/images/MIPS150ISA.png)

Then, for the arithmetic/logic part, there is not separate adder, subtractor, and, or... blocks selected with multiplexers. Many operation are combined in multipurpose circuits, for example adder/subtractor/negate.