| Page | Description | Date 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 |