Frequently Asked Questions

If you don't find your question here, please email the author. Last update: 05/09/99

1 I can't seem to open the source code files from the CD-ROM using the Assembler Editor (AE.EXE). What's wrong?
The files on the CD-ROM are marked read-only, and the Assembler Editor cannot open them. Click here to download the new installation program. It will copy all the source programs to your computer's hard drive.
2 In the Assembler Editor, when I try to debug a program that I have just assembled and linked, why can't the debugger find the executable file?
Before assembling and linking the source program, set the current directory to the source file directory. Select Change Dir from the File menu. This is explained in the readme.txt file in the root directory of the CD-ROM, in the section entitled "Essential Editor Tips".
3 Using ML.EXE from the Windows command line, how can I link my programs to the book's link library?
The link library is called IRVINE.LIB, and is located in the same directory as the sample programs (the default is C:\Irvine). Use the following commands to assemble and link:
  ML /Zi /Zm hello.asm /link /co c:\irvine\irvine
Just substitute your own program's name for hello.asm, and if you have installed the sample programs in a directory other than the default, substitute it for "C:\Irvine\Irvine". The /Zm parameter is necessary for a few programs in the book that must be MASM 5.10 compatible.
4 When I run the assembler from the DOS/Windows command prompt, I get the message "Bad command or file name." What's wrong?
Before running the assembler, you need to modify the system path so it can find the correct directories. The following command does this, assuming that your assembler is in the c:\masm611\bin directory:
path c:\masm611\bin
6 What are the mnemonics used by Debug.exe for the flag states?
CY = carry, NC = no carry, OV = overflow, NV = no overflow, UP = direction up, DN = direction down, EI = enable interrupts, DI = disable interrupts, PL = sign flag clear, NG = sign flag set, NZ = zero flag clear, ZR = zero flag set, NA = no auxiliary carry, AC = auxiliary carry, PO = odd parity, PE = even parity,
7 The program on page 269 doesn't compile when I use the ML.EXE compiler. What's wrong?
The lines flagged by the assembler are the following, which use a combination of indirect operands and references to structure members:
  
mov  [si].Credits,ax
and
   
mov   [si].Status,ACTIVE_STATUS
The MASM 5.11 assembler didn't mind this (and neither does Borland). But MASM 6.11 requires the use of the PTR operator to clarify the type of object pointed to by SI:
   
mov (typStudent PTR [si]).Credits,ax
You can fix the problem in one of two ways:
(1) If you're using ML.EXE, include the /Zm option when assembling. The complete command to assemble and link the program on page 269, for example, is:

  ML /Zi /Zm struc.asm /link /co c:\irvine\irvine
(2) Insert the OPTION M510 directive in your program prior to the line(s) causing the syntax error.
8 When I try to assemble a program in the Assembler Editor (AE.EXE), I see the message "Error A2901: cannot run ML.EXE". Why does this happen?
This message is generated when MASM.EXE, the program executed by the Assembler Editor, cannot find its companion program, ML.EXE. Look for ML.EXE in the C:\MASM611\BIN directory. If it is not there, re-run the SETUP.EXE program from the \MASM folder on the book's CD-ROM. When you see the following prompt, be sure to select the BIN directory, not BINR:
    Setup proposes the following directory (DOS executable files): c:\masm611\bin
9 Where can I get a copy of the source code for the link library (IRVINE.LIB)?
You can get a copy from your instructor, if they permit. It's on the restricted Instructor's Web.
10 The Sector Display program on p. 406 doesn't display any sectors when I run it from Drive C. Why?
This program was designed to work on a FAT-16 file system. Windows NT and Windows 98 both have a FAT 32 system, so the program will have to be updated. Until then, you can still run it on a floppy disk formatted under Windows 95.
11 Why does the assembler generate an error message when I use 32-bit registers?
You need to place a .386 directive in your program on the line following the .stack directive. This was not clearly explained in the book, but there is a reference to the .386 directive in Table 2 on page 93.
12 How do I use the book's link library with the Borland Turbo Assembler (TASM)?
You can modify the editor configuration file (AE.CFG), or write a simple batch file. Click here for more details.
13 How does Windows 95/98/NT store extended (long) filenames?
The book, on page 402, does not adequately explain this. Click here to view an improved example and explanation of extended filenames.
13 Can you help me write or debug my programming assignment?
Unfortunately not. I don't think your professor would approve!