Page 36: Il metodo, come è scritto, è sbagliatto. Cominciamo da destra e andiamo verso la sinistra, no dalla sinistra verso la destra. Page 36, line -4: Deve essere: -2^k + 2^{k-1} = -2^{k-1} Page 51, line -6: "Figura 6.28" --> "Figura 3.2" Page 56, Esempio 3.6: "Figura 6.28" --> "Figura 3.2" Page 59, line -1: "(x_2 + \bar{x}_1)" --> "(x_1 + \bar{x}_1)" Page 60, line 4: "x_0 \bar{x}_1 x_0" --> "x_2 \bar{x}_1 x_0" Page 66, line 6: "x_1x_0" --> "\bar{x}_1x_0" Nevertheless, the second term is not necessary, so there is a simpler formula, "y_3 = \bar{x}_1x_0 + x_2x_1" Page 89, line 16: "\bar{WE} indicano (Write Enable)" --> "\bar{OE} indicano (Output Enable) Page 97, Figura 5.1: In the first figure, there should be arrows from states i, a, o, to i with the label "c", and the "c" should be removed from the label of the arrows from the states i, a, o to state c. Similarly, in the second figure, there should be arrows with label c/0 from the states i and a to a, and remove the c from the arrows from i and a to c. Page 98, Figura 5.3: There are the same mistakes as in Figura 5.1. In the first table, the entries [i,c], [a,c], [o,c], [fin,c] should be i, not c. In the second table, the entries [i,c] and [a,c] should be i,0 not c,0. Page 98, Esempio 5.3: In the first figure, the output should be 10100, not 10110. Page 110, Figura 5.25: In the table the column U should be "1 2 3 0" instead of "0 1 2 3" Page 122, Figura 6.7: At line 2, column R_M, "0" should be "1" Page 123, Figura 6.8: At state 3, "op2" should become "op3," and at state 4 "op2" should become "op4" Page 125, Figura 6.10: At the arrow 3->4 there should be a label "z_2=1" Page 127, Figura 6.13: The arrow 0->3 should have the label "Z=1". The arrow 0->1, should have the label "Z=0, b0=1" Page 134, Figura 6.22: "BUS-BATI" should be "BUS-DATI" Page 137, Figura 6.25: In the last command (MDR -> IR) the bit MDR-READ-MEM should be 0 and the bit MDR-READ-BUS should be 1 Page 138, Figura 6.26: At the state of the commands IR.op = add, and IR.op = sub, in the second state, "ACC->MDR" should become "MEM[MAR]->MDR" Page 139: "IR.opcode" is the same as "IR.op", and "IR.addr" is the same as "IR.ind" Page 141: Figura 6.28: At line 10000 (last command of SUB) the bit at MDR-WRITE-MEM should be 0 and MDR-READ-BUS should be 1 Page 154, line -3: "MOVFR" should be "MOVFRSR" Page 155: "NEGs S,D (D = 0 - D)" should be "NEGs S,D (D = 0 - S)" Page 158, line -3: "123" should be "125" Page 161, line 11: "MOVW #123, 4(R0) ; Copia 123 in MEM[4 x 2 + 400H]" should be "MOVW #123, 8(R0) ; Copia 123 in MEM[4 x 2 + 400H]" (I don't know how PD32 is supposed to function, however the assembler with the simulator behaves as I describe here.) Page 166, Section 7.3.5, line 8: " ; foo denota 40C" should be "FOO: ; foo denota 40C" Page 172, line 11: "PUSHSR R0" should be "PUSHSR" However there is a bug with the assembler and it does not accept this command. There are also some other mistakes or omissions from the function. For example at some point in the beginning we should save the previous BP by the command PUSH R6, as it's explained earlier in the book, and recover it later by POP R6.