Bug Reports Assembly Language for Intel-Based Computers 5th Edition Kip R. Irvine

View bug list Add new report Main book site Home Admin

Current list of errors
PageDescriptionDate Posted
8 Change the last 2 sentences to: "Internally, compilers translate Level 5 programs to Level 4 programs, which are in turn translated into code at Levels 2 and 3." 12/22/2007
20 Section 1.4: change "mathemetician who designed" to "mathemetician. It was used by Charles Babbage, who designed". 1/24/2007
24 Last line: change "Boole" to "Babbage". 8/28/2007
28 In Figure 2-2 the box in the upper-right side (pointing to Code cache) should read "Instruction pointer". 8/30/2006
29 5th sentence under Superscalar Architecture begins as "Instruction I-2 cannot enter Stage S4 until I-2...". Change it to : "Instruction I-2 cannot enter Stage S4 until I-1..." 8/27/2006
32 The sentence just above Figure 2-8: One full circuit of the task list requires 972 (not 964) milliseconds (9x100)+(9x8). 8/30/2006
48 Section review, question 1, first sentence: change "Of the three" to "Of the four". 2/6/2007
50 Line six from the bottom of page, change to:"Library functions are at the highest level.The operating system is at the next level" 9/4/2007
51 Heading 3.2 should be "Example: Adding and Subtracting Integers" 12/4/2006
57 5 lines from the bottom: insert space between "C3" and "mov". 1/24/2007
58 Heading 3.2 should be "Example: Adding and Subtracting Integers" 12/4/2006
70 First sentence: change "0003 and 0004" to "0002 and 0003". 2/17/2008
82 Second to last line: Change "movzx ax,10001111b" to two lines: "mov bl,10001111b", and "movzx ax,bl". 7/25/2006
83 8 lines from the bottom: Change "movsx ax,10001111b" to two lines: "mov bl,10001111b", and "movsx ax,bl". 7/25/2006
85 7 lines from the bottom: change the three "array" variables to "arrayB", "arrayW", and "arrayD", respectively. 8/9/2006
85 4th code example, 1st line: change "[arrayB+2]" to "[arrayB+1]". 11/1/2006
91 Replace the figure at the top of the page with this one. 7/22/2006
94 Change Appendix D line 49 to Appendix A 8/2/2006
102 Line No 10, inside comments change EAX = 400h to Eax = 4h 8/28/2007
113 Remove question 7 at the top of the page. Similarly, remove answer #7 at the top of page 669. 8/4/2006
114 Table 5-1, fourth line: change "ParseDecimal32" to "ParseInteger32". 6/17/2006
126 Line 4: change "array" to "arrayD" 7/24/2006
141 In the flowchart (Figure 5-9), the box containing "ecx = eax - 1" should contain "ecx = ecx - 1". 7/14/2007
149 Exercise 9 should be done after reading Chapter 6, because it requires the use of conditional jumps. 12/16/2006
168 Section Review 6.3.6. In questions 1 and 2, change "CPU status flags" to "jump instructions". 8/17/2006
175 Code example, middle of page: move "index++" down so it is after the IF statement block. 7/14/2007
190 Code example in Exercise 2: move the "index++" statement downward so it follows after the IF statement block. 4/20/2007
204 Question #5 Section Review 7.3.5 Change WriteBin.asm to BinToAsc PROC. 8/11/2006
210 Sentence just before the code in Example 3 should be: "The next example divides 50000 by -256:" 2/17/2008
216 Change the second sentence after 7.6.1 header to: "Assuming AL contains a binary value produced by adding two ASCII digits, AAA converts AL to two unpacked decimal digits." 2/17/2008
227 Delete first sentence on the page. 11/5/2006
227 In the last sentence of the paragraph under "Accessing Stack Parameters (C/C++)", remove the phrase: "and clears parameters from the stack". 10/19/2006
228 In the 3 code examples, reverse the order of the "push 5" and "push 6" instructions. 11/5/2006
229 Line 6: change "inside AddSub" to "inside AddTwo". 6/17/2006
237 Line 8: change "sub sp,8" to "sub esp,8". 6/17/2006
240 Briefly read pages 248-252 before reading topic 8.2.5, so you understand the PROC and INVOKE directives work when calling WriteStackFrame. 11/5/2006
249 Upper half of page: change the three references to "DumpMem" to "DumpArray". This is done to avoid conflict with a similar procedure in the Irvine32 library. 7/14/2007
257 In the code example under the heading "Passing Immediate Values", insert a comma after PROC, and change the third line to: "mov WORD PTR [esi],0". 8/16/2007
273 In the sample program, insert one more space before the second quote in "MARTIN ". 11/7/2006
275 In Review question #4, change EDI to ESI. 12/3/2006
285 In Figure 9-6, change the address "018C" to "016C". 7/14/2007
287 In the BubbleSort code at the bottom page, change "jge" after Label L2 to "jg". In the line's comment, change "[EDI]" to "[ESI+4]". 7/14/2007
293 On the line before label L1 in the FillArray, insert the CLD instruction. (Clear the direction flag so STOSD increments EDI.) 2/17/2008
308 Third line of Drunkard's Walk program: change "50,50" to "25,25". 8/27/2006
316 Top of page, mPutchar macro listing: comment line should say "reminder: char must contain 8 bits". 11/7/2006
337 In the sentence just before section 10.3.9, remove the reference to make32.bat. 8/17/2006
340 Middle of page, where it says "The following data table". Each line should have a space before the digit "1". For example: 00000000 40 1 BYTE "@" 11/7/2006
344 Last code example on the page should be changed to:
mShiftDoublewords MACRO arrayName, direction, numberOfBits
6/17/2006
347 In Section 11.1.1, second sentence, replace "the make32.bat file, which" with: "our project files. It". 8/17/2006
353 Third line from top: Change "MB_DEFBUTTON1" to "MB_DEFBUTTON4" 10/12/2006
359 In Keybd.asm, change "test al,80h" to "test eax,80000000h". In the comments, change "Sets bit 15 in EAX if another" to "Sets bit 32 in EAX if the". 6/19/2008
361 Line 6: change "=" to "DWORD". 8/22/2006
372 Line 6 of the Scroll.asm program: change "=" to "DWORD". 8/22/2006
374 Line 10 of WriteColors.asm: change "=" to "DWORD". 8/22/2006
389 17 lines from the bottom: Change "If HeapAlloc fails," to: "If HeapAlloc succeeds, it returns a pointer to the new storage in EAX; if it fails," 6/17/2006
406 12.2.2 TranslateBuffer:Insert a tab between the six instructions mov esi,buf, mov ecx,count, mov al,eChar, xor [esi],al, inc esi, loop L1 8/24/2006
410 FindArray example: change the for() loop to:
for( int i = 0; i < count; i++)
  if( array[i] == searchVal ) return true;

Get a new copy of the code generated by the Visual C++ compiler.

10/17/2006
414 With the new VS 2005 compiler, the timings have changed. In the first box, the CPP time is 28 seconds. In the second box, the CPP time is 11 seconds. The compiler is finally faster than the ASM code! 11/26/2006
453 Section 13.3.5, end of first paragraph: replace "end of line sequence(0Dh, 0Ah)" with "end of line character (0Dh).". The last sentence should read: "It reads the character, but does not copy it to the buffer." 12/12/2006
554 4th line from bottom: Remove the letter k from "0040:0018k" 8/31/2006
579 Second code example, seventh line: in the comments, change "dblOne" to "dblTwo". 6/17/2006
589 In the caption for Figure 17-6 change "8086/8088" to "IA-32". 6/17/2006
598 Line 5 change "FU" to "RU" 9/7/2006
632 In the description of the LOOP instruction, change "greater than zero" to "not equal to zero". The same is true for the LOOPD instruction on the same page. 7/14/2007
662 Change the answer for Section 2.2, #14 to "Pentium II". 7/26/2006
664 Heading 3.2 should be "Example: Adding and Subtracting Integers" 12/4/2006
665 Remove answers 6-10 in Section 3.3. 7/28/2006
666 In 4.2 #5, the answer should be OF = 1, SF = 1. 9/20/2006
669 Change the answer for Section 5.3 #10 to: Carry,Sign,Zero,Overflow,Auxiliary Carry,and Parity. 8/6/2006
674 FSM diagram at bottom of page should be replaced with this. 4/4/2007
682 In 9.2 answer #2, change CMPSD to SCASD. 12/3/2006
684 In Question #3, the answer should be: "Macros with parameters are more reusable." 8/17/2006
688 In Question #9, change "11.1.3" to "11.1.4". Also, in Question #11, change "11.1.4" to "11.1.5". 8/19/2006
697 In Question #10, change "test all,100h" to "test al, 100h". 8/29/2006