Chapter Objectives
Last update: 6/17/06

Chapter 1

After reading this Chapter, you should be able to understand or do each of the following:

  • Understand common applications of assembly language
  • Understand what an assembler does
  • Understand hardware and software requirements for the book
  • Know the basic history of PC Assemblers
  • Differentiate between protected mode and real-address mode
  • Learn basic principles of computer architecture as applied to the Intel IA-32 processor family
  • Learn how to recognize and convert boolean and hexadecimal integers
  • Perform binary addition and subtraction
  • Understand basic boolean operations
  • Differentiate between signed and unsigned binary integers
  • Understand ASCII character representation

Chapter 2

After reading this Chapter, you should be able to understand or do each of the following:

  • Understand the basic structure of a microcomputer
  • Be familiar with the instruction execution cycle
  • Understand how computers read from memory
  • Understand how the operating sytem loads and executes programs
  • Know the modes of operand and basic execution environment of the IA-32 processors
  • Be familiar with the floating-point unit and the histrory of Intel Processors
  • Understand how memory is addressed in proteced mode and real-address mode
  • Know the basic components of a microcomputer
  • Understand the different levels of input-output

Chapter 3

After reading this Chapter, you should be able to understand or do each of the following:

  • Know how to represent integer constants, expressions, real number constants, character constants, and string constants in assembly language
  • Know how to formulate assembly language instructions, using valid syntax
  • Understand the difference between instructions and directives
  • Be able to code, assemble, and execute a program that adds and subtracts integers
  • Be able to create variables using all standard assembly language data types
  • Be able to define symbolic constants
  • Be able to calculate the size of arrays at assembly time

Chapter 4

After reading this Chapter, you should be able to understand or do each of the following:

  • Be able to use data transfer instructions in programs
  • Be familar with the syntax and usage of the MOV, XCHG instructions
  • Be familar with the syntax and usage of the ADD, INC, DEC, and SUB instructions
  • Understand basic memory addressing modes
  • Understand how arithmetic instructions affect the CPU status flags
  • Know how to use the OFFSET, ALIGH, PTR, TYPE, LENGTHOF, and SIZEOF operators
  • Know how to use indirect addressing
  • Know how to code loops and unconditional jumps

Chapter 5

After reading this Chapter, you should be able to understand or do each of the following:

  • Know how to link your programs to an external code library
  • Be familiar with all functions in the Irvine32 library
  • Understand the process and usage of the runtime stack
  • Know how to use the PUSH and POP instructions
  • Know how to write programs that define and call procedures
  • Know how to use flowcharts to describe program logic
  • Understand how to use procedures when designing program structure

Chapter 6

After reading this Chapter, you should be able to understand or do each of the following:

  • Understand the boolean instructions AND, OR, NOT, XOR, TEST
  • Understand how to set and clear CPU status flags
  • Understand how the CMP instruction affects CPU status flags
  • Be familar with all types of conditional jump and loop instructions
  • Know how to create conditional and looping structures using assembly language
  • Know how to implement table-driven selection logic
  • Know how to implement a finite-state machine in assembly language
  • Know how to use the high-level MASM decision and looping directives such as .IF, .ELSE, .REPEAT, and .WHILE)

Chapter 7

After reading this Chapter, you should be able to understand or do each of the following:

  • Understand the usage of shift and rotate instructions
  • Be able to use shift and rotate instructions to perform efficient multiplication and division
  • Understand and use the MUL, IMUL, DIV, and IDIV instructions
  • Know how to perform sign extension of operands in division operations
  • Perform extended precision addition and subtraction
  • Use specialized instructions related to packed and unpacked decimal arithmetic

Chapter 8

After reading this Chapter, you should be able to understand or do each of the following:

  • Understand how stack frames are used by high-level languages
  • Know how to pass parameters by value and by reference on the stack
  • Know how to create and access local variables on the stack
  • Know how to write recursive functions in assembly language
  • Know how to use the advanced forms of the INVOKE, ADDR, PROC, and PROTO directives
  • Know how to export and import function and variable names across module boundaries

Chapter 9

After reading this Chapter, you should be able to understand or do each of the following:

  • Know the syntax and usage of the MOVSB, CMPSB, SCASB, LODSB instructions
  • Know how to perform efficient string searches using SCASB
  • Know how to copy strings efficiently using MOVSB
  • Understand each of the selected string procedures from the book's link library
  • Know how to traverse a two-dimensional array using advanced indexed addressing modes
  • Know how to perform a bubble sort of an integer array
  • Know how to perform a binary search of an integer array

Chapter 10

After reading this Chapter, you should be able to understand or do each of the following:

  • Understand the syntax for definining structures and unions
  • Know how to reference structure and union variables in code
  • Know how to work with nested structures
  • Know how to create macros with multiple parameters
  • Know how to create nested macros
  • Be familiar with the macros in the book's macro libary
  • Know how to use conditional-assembly directives
  • Know how to use special macro operators such as concatenation (&)
  • Know how to echo messages to the console at assembly time
  • Know how to create repeat blocks at assembly time

Chapter 11

After reading this Chapter, you should be able to understand or do each of the following:

  • Be familiar with Win32 API functions relating to console input-output
  • Be able to create procedure prototypes that match C-language prototypes
  • Be able to input strings and individual characters using Win32 functions
  • Be able to open, read, create, and write to text files
  • Know how to create a stopwatch timer to measure code execution time
  • Create a simple graphical MS-Windows application
  • Use heap allocation functions to create dynamic data structures
  • Understand basic concepts relating to protected mode memory
  • Understand linear addresses and page translation in MS-Windows

Chapter 12

After reading this Chapter, you should be able to understand or do each of the following:

  • Understand the syntax for using inline assembly language in Microsoft C/C++ programs
  • Be able to create C/C++ programs that use inline assembly language
  • Be able to call 32-bit assembly language subroutines from C/C++ in protected mode
  • Be able to call functions in the C library from assembly language.
  • Be familar with 16-bit assembly language subroutines called from C/C++ in real-address mode
  • Be familiar with parameter passing conventions used by Microsoft C++ compilers

Chapter 13

After reading this Chapter, you should be able to understand or do each of the following:

  • Be familiar with the memory organization of a typical PC running in real-address mode
  • Know how to redirect input-output on the command line
  • Understand the mechanism for processing software interrupts
  • Be familar with the INT instruction
  • Know how to use INT 21h functions for console I/O in real-address mode
  • Know how to create, close, and open files in MS-DOS
  • Know how to randomly access files using INT 21h functions
  • Be familiar with file I/O functions in the Irvine16 library
  • Know how to read information from the MS-DOS command tail
  • Know how to create a binary file

Chapter 14

After reading this Chapter, you should be able to understand or do each of the following:

  • Understand basic hardware concepts relating to disk storage systems
  • Understand basic disk components such as tracks, cylinders, and sectors
  • Understand the concept behind disk partitions
  • Be familiar with some basic characteristics of FAT16, FAT32, and NTFS file systems
  • Understand how logical sectors are organized on a typical FAT32 disk
  • Be familiar with the way cluster chains hold file information
  • Be able to call system level file functions relating to disk space, directories, and file attributes
  • Be familiar with functions that read and write disk sectors in real-address mode

Chapter 15

After reading this Chapter, you should be able to understand or do each of the following:

  • Be familiar with the layout of the BIOS memory area on a typical PC
  • Know how to perform low-level keyboard input with INT 16h
  • Know how to poll the keyboard using INT 16h
  • Know how to manipulate text attributes using INT 10h
  • Know how to write text and graphics using INT 10h
  • Know how to write graphics data directly to memory
  • Be able to convert cartesian coordinates to screen coordinates
  • Be familiar with the INT 33h functions for mouse handling
  • Be able to track the movements of the mouse using INT 33h

Chapter 16

After reading this Chapter, you should be able to understand or do each of the following:

  • Understand how simplified segment directives generate segment structures
  • Know how to use explicit segment directives
  • Know how to use segment overrides
  • Be able to combine different segments into a single segment
  • Be familiar with the memory layout of the program segment prefix
  • Be familiar with the rutime memory structure of COM and EXE programs
  • Understand how hardware interrupts are processed
  • Understand how IRQ levels are used to prioritize interrupts
  • Know how to write a custom interrupt handler
  • Know how to write a terminate and stay resident (TSR) program
  • Know how to read and write data from I/O ports
  • Be familiar with techniques to output sound from a speaker port

Chapter 17

After reading this Chapter, you should be able to understand or do each of the following:

  • Be familiar with single, double, and extended precision IEEE formats
  • Know the single-precision IEEE format in detail
  • Know how to convert between decimal fractions and binary reals
  • Know how to normalize a binary floating-point number
  • Know how exponents are biased
  • Be familair with the basic architecture of the IA-32 floating point unit (FPU)
  • Understand the four rounding modes in the FPU
  • Be familiar with the standard floating-point exception types
  • Know how to mask and unmask floating-point exceptions
  • Know how to perform basic arithmetic using FPU instructions
  • Be familiar with the FPU instruction set
  • Know how to call the book's library functions for floating-point I/O
  • Understand the concept of event synchronization betwee the CPU and FPU
  • Be familiar with the IA-32 instruction format
  • Know how to encode and decode MOV instructions that use registers and memory operands
  • Understand the structure of the Mod R/M byte
  • Understand how operand-size prefixes are used