Home of the original IBM PC emulator for browsers.
The following document is from the Microsoft Programmer’s Library 1.3 CD-ROM.
Microsoft Macro Assembler - Installing and Using
the Professional Development System
────────────────────────────────────────────────────────────────────────────
Microsoft (R) Macro Assembler - Installing and Using
the Professional Development System
Version 6.0
────────────────────────────────────────────────────────────────────────────
For MS(R) OS/2 and MS-DOS(R) Operating Systems
Microsoft Corporation
Information in this document is subject to change without notice and does
not represent a commitment on the part of Microsoft Corporation. The
software described in this document is furnished under a license agreement
or nondisclosure agreement. The software may be used or copied only in
accordance with the terms of the agreement. It is against the law to copy
the software on any medium except as specifically allowed in the license or
nondisclosure agreement. No part of this manual may be reproduced or
transmitted in any form or by any means, electronic or mechanical, including
photocopying and recording, for any purpose without the express written
permission of Microsoft.
RESTRICTED RIGHTS: Use, duplication, or disclosure by the U.S. Government is
subject to restrictions as set forth in subparagraph (c)(1)(ii) of the
Rights in Technical Data and Computer Software clause at DFARS 252.227-7013
or subparagraphs (c)(1) and (2) of Commercial Computer Software
─Restricted Rights at 48 CFR 52.227-19, as applicable.
Contractor/Manufacturer is Microsoft Corporation, One Microsoft Way,
Redmond, WA 98052-6399.
(C) Copyright Microsoft Corporation, 1991. All rights reserved.
Printed in the United States of America.
Microsoft, MS, MS-DOS, CodeView, and XENIX are registered
trademarks and Windows, Windows/386, and
Making it all make sense are trademarks of Microsoft Corporation.
U.S. Patent No. 4,955,066
386-Max is a trademark of Qualitas, Inc.
BRIEF is a registered trademark of UnderWare, Inc.
IBM is a registered trademark of International Business
Machines Corporation.
UNIX is a registered trademark of American Telephone
and Telegraph Company.
Document No. LN06558-0291Document No.OEM D/O/P710-6Z
10 9 8 7 6 5 4 3 2 1
Chapter 1 The Professional Development System
Before You Proceed
System Requirements
Package Contents
Features New to Version 6.0
Microsoft Programmer's WorkBench
Key to Document Conventions
Chapter 2 Installing the Microsoft Macro Assembler
Running SETUP
Supplying SETUP Information
Changing Your Response
Responding to the Prompts
Choosing the Host Operating System
Installing the Programmer's WorkBench (PWB)
Emulating BRIEF
Installing the New MASM.EXE Utility
Copying Documentation Files and Sample Programs
Copying the Microsoft Mouse Driver, MOUSE.COM
Choosing the Target Hard Disk
Choosing Bound, Real-Mode, and Protected-Mode Directories
Selecting File Directories
Reviewing and Changing Responses
Installing
Configuring Your System
Customizing the Programmer's WorkBench
Configuring Extended Memory for the CodeView Debugger
Chapter 3 Using the Programmer's WorkBench
Starting PWB
Specifying a Source File
Command-Line Options
Elements of the PWB Environment
Windows and Other Screen Elements
Menus
File Menu
Edit Menu
View Menu
Search Menu
Make Menu
Run Menu
Options Menu
Browse Menu
Help Menu
Getting Help
Using the Editor
Moving Around in a Text File
Customizing the Editor
Assembling and Linking
Building Programs in PWB
Debugging Programs
Using the Browser
Debugging with the CodeView Debugger
Running HELLO.EXE
Debugging HELLO.EXE
Getting More Details
Chapter 4 Using the Online Reference System
Structure of the Microsoft Advisor
Navigating through the Microsoft Advisor
Using the Help Menu
Using the F1 Key and the Mouse
Using Hyperlinks
Using Help Windows and Dialog Boxes
Accessing Different Types of Information
Specifying Temporary Help Files
Using QuickHelp
Entering and Exiting QuickHelp
Index
Chapter 1 The Professional Development System
────────────────────────────────────────────────────────────────────────────
The Microsoft Macro Assembler Professional Development System is a
collection of tools designed to increase DOS and OS/2 programming
efficiency. The system offers
■ The Microsoft Macro Assembler (MASM)
■ A customizable editor that can accept user extensions
■ A source-level, window-oriented debugger
■ A project-management ("make") utility
■ A source-level browser
■ A complete online reference system
The Programmer's WorkBench (PWB) integrates these tools, creating an
environment in which you can edit, assemble, link, and debug your programs.
This book is a general introduction to MASM. This chapter introduces some of
the features of the Professional Development System. Chapter 2 describes how
to install the Professional Development System. Chapter 3 introduces the
Programmer's WorkBench. Chapter 4 shows how to use the online reference
system─a complete reference to the Professional Development System and the
MASM language that is accessible both within PWB and at the OS/2 or DOS
command line.
────────────────────────────────────────────────────────────────────────────
NOTE
Microsoft documentation uses the term "OS/2" to refer to the OS/2 systems─
Microsoft Operating System/2 (MS(R) OS/2) and IBM OS/2. Similarly, the term
"DOS" refers to both the MS-DOS and IBM Personal Computer DOS operating
systems. The name of a specific operating system is used when it is
necessary to note features that are unique to that system.
────────────────────────────────────────────────────────────────────────────
If you'd like further information about a topic as you read through this
book, you can consult
■ The Microsoft Macro Assembler Programmer's Guide
■ The Microsoft Macro Assembler Reference
■ The online reference system (discussed in Chapter 4 of this book)
Before You Proceed
Before installing MASM, you should make sure that your computer meets
minimum system requirements and that your package is complete.
System Requirements
MASM requires the following configuration:
■ A personal computer running DOS version 3.0 or later or OS/2 version
1.1 or later.
■ 640K (kilobytes) of available memory (RAM) for operating under DOS (1
megabyte of RAM is recommended).
■ 3 megabytes of RAM for operating under OS/2 (4 megabytes are
recommended).
■ At least 384K of extended memory if you want to debug large DOS
programs.
■ A hard-disk drive with at least 4 megabytes of free space. (The actual
space required depends on the options you select.)
■ A floppy-disk drive.
Programs assembled with MASM version 6.0 run under DOS versions 2.1 and
later.
Package Contents
Check your MASM package to see if everything is there. If any pieces are
missing, contact the retailer from whom you purchased the package.
In the package, you should find the following items:
■ Registration card. There are many advantages to being a registered
owner of MASM 6.0, including notification of future releases and
easier access to customer assistance. Please take the time to fill out
and mail the registration card now. (If you are already a registered
owner of an earlier version of MASM, a registration card is not
included with the update.)
■ Disks. The distribution disk labeled "Setup" contains the PACKING.LST
file, which lists the location and description of all disk files in
the MASM package. Disk files are compressed; the SETUP program
decompresses them as they are installed.
■ Installing and Using the Professional Development System. The book
you're reading. It explains how to install and start to use the
Professional Development System.
■ Programmer's Guide. This book describes MASM features and explains how
they work. It also shows how to write optimal MASM code.
■ Reference. This book describes assembler directives, operators, and
instructions, including timing and encoding data.
■ Product Assistance Request. If you need to contact Microsoft Product
Support, be sure to fill out this questionnaire (which is bound into
the Programmer's Guide) before calling.
■ Documentation Feedback Card. To help Microsoft improve its
documentation, this postage-paid survey mailer is included in the
Programmer's Guide. Please take the time to fill out the card with any
comments or suggestions.
Features New to Version 6.0
If you've used an earlier version of MASM, you'll find many new capabilities
in version 6.0, and you'll discover that you can perform familiar operations
more quickly:
■ Speed up development with the integrated Programmer's WorkBench.
■ Build programs more easily with the new "make" facility (NMAKE) and
PWB's powerful project capabilities.
■ Track down program bugs and logic errors more quickly with the new
Microsoft CodeView(R) debugger version 3.12. With an 80286 or 80386
processor and 1 megabyte or more of RAM, you can debug a program up to
640K in size in real mode.
■ Access MASM language, assembler, linker, and utility documentation
with the Microsoft Advisor and QuickHelp online reference systems.
■ Cross-reference program procedures with the PWB Source Browser.
■ Create OS/2 applications with increased support for dynamic-link
libraries (DLLs), multiple threads, and improved debugging options.
■ Edit source code with PWB's mouse- and window-oriented editor.
For a detailed list of new language features, see Appendix A, "Differences
between MASM 6.0 and 5.1," in the Programmer's Guide.
Microsoft Programmer's WorkBench
The Programmer's WorkBench can cut development time and increase your
productivity. Its integration allows you to edit, build, run, and debug a
program without ever leaving PWB. Its multiwindow display lets you edit
several files at once or access online help while still viewing your code.
Drop-down menus and mouse support let you perform most functions by clicking
the mouse on menu names or by pressing a few keys.
The PWB editor is easy to configure and completely extensible. It combines
powerful features such as macros and regular-expression search capabilities
with the simplicity of a window-based application (see Figure 1.1).
The Microsoft Advisor online reference system provides quick access to
information about MASM, PWB, CodeView, the assembler, linker, utilities, and
even the reference system itself. Figure 1.2 shows online information about
MASM's INC instruction.
(This figure may be found in the printed book.)
(This figure may be found in the printed book.)
When you're ready to assemble the program, you don't need to remember the
full range of command-line assembler options. All options are conveniently
located in a PWB dialog box where they can be clicked on or off (see Figure
1.3). Setting options is simply a matter of using the mouse or keyboard to
set case, warning level, debug, or release options.
(This figure may be found in the printed book.)
PWB uses the powerful NMAKE tool to speed up development. NMAKE examines
each module of a program to determine whether changes have been made that
require the module to be reassembled. NMAKE then automatically assembles the
modules as necessary and links them. When you're ready to build your
program, you just select a single menu command to start the process. PWB
invokes NMAKE and builds an application, using the options you set.
If warnings or errors occur during assembly or linking, PWB opens a window
with a full list of assembly or link errors (see Figure 1.4). You can then
consult the online reference system for comprehensive information about each
error.
(This figure may be found in the printed book.)
Once a program has been successfully built, you can run it from within PWB
to test it. If you need to make modifications, you can return directly to
PWB to make the changes.
Another useful PWB feature is the Source Browser. With the Browser you can
examine your code and display information about procedure and variable
relationships (see Figure 1.5). This option is helpful for tracking program
flow and isolating bugs.
For bugs that are more difficult to locate and understand, use PWB's Debug
Build option, then invoke the CodeView debugger directly from PWB. You can
step and trace through your code at the source level while examining
variables, registers, and memory (see Figure 1.6).
(This figure may be found in the printed book.)
Once you locate the bug, you can exit CodeView and return directly to PWB,
where you can fix the error. When the code is completely debugged, you can
build a final release program using PWB's Release Build option.
(This figure may be found in the printed book.)
Key to Document Conventions
This book uses the following document conventions:
╓┌─────────────────┌─────────────────────────────────────────────────────────╖
Example Description
────────────────────────────────────────────────────────────────────────────
COPY TEST.ASM C: Uppercase letters represent DOS commands and filenames.
INVOKE Boldface letters indicate standard features of the MASM
language: keywords, operators, and standard library
functions.
expression Words in italics indicate placeholders for information
you must supply, such as a filename. Italics are also
Example Description
────────────────────────────────────────────────────────────────────────────
you must supply, such as a filename. Italics are also
occasionally used for emphasis in the text.
ML /Zi HELLO.ASM This typeface is used for example programs, program
fragments, and the names of user-defined functions and
variables. It also indicates user input and screen
output.
SHIFT Small capital letters denote names of keys on the
keyboard. A plus sign ( + ) indicates a combination of
keys. For example, SHIFT+F5 tells you to hold down the
SHIFT key while pressing the F5 key.
"bookmark" The first time a new term is defined, it is enclosed in
quotation marks. Since some knowledge of programming is
assumed, common terms such as memory or branch are not
defined.
Programmer's The first time an acronym appears, it is spelled out.
Example Description
────────────────────────────────────────────────────────────────────────────
Programmer's The first time an acronym appears, it is spelled out.
WorkBench (PWB)
Chapter 2 Installing the Microsoft Macro Assembler
────────────────────────────────────────────────────────────────────────────
This chapter explains how to install the Microsoft Macro Assembler (MASM),
configure extended memory for use with the CodeView debugger, and customize
components of the Programmer's WorkBench.
You must run the installation program (SETUP.EXE) to install MASM. The files
on the distribution disks are compressed; SETUP both uncompresses the files
and copies them to your hard disk. SETUP runs under both DOS and OS/2.
Before running SETUP, back up the distribution disks and make sure you have
enough disk space (at least 4 megabytes, depending on the options you
choose) to install the Professional Development System.
Running SETUP
Insert the disk with SETUP in the appropriate disk drive. Make that drive
the current drive. Type SETUP and press ENTER to begin installation.
If you aren't sure how you want to set up MASM 6.0, the default responses to
SETUP's questions are usually a good starting point. (You can run SETUP
again at any time to install a different configuration.) Press ENTER to
proceed.
From the Main Menu of SETUP (see Figure 2.1), you can
■ Install the Microsoft Macro Assembler
■ Install the Macro Assembler using defaults
■ Run SETUP without installing any files
■ View important documentation notes (README.DOC)
■ View the packing list (PACKING.LST)
■ Copy a file from the distribution disks
■ Exit SETUP
(This figure may be found in the printed book.)
"
Install the Microsoft Macro Assembler" is highlighted as the default. If you
want a different function, use the UP and DOWN ARROW keys to highlight the
desired function; then press ENTER.
The first time you run SETUP, press ENTER to begin installation. If you want
to become familiar with SETUP and its options, select the third menu item,
"Run SETUP without installing any files."
The fifth menu item, "Copy a file from the distribution disks," allows you
to transfer specific files without having to go through the full
installation.
To exit SETUP at any time, press CTRL+C. SETUP never erases files from the
distribution disks, so you can quit and start over as often as you need to.
Supplying SETUP Information
The SETUP screens following the Main Menu request information about your
operating system, hardware configuration, and directory paths. After you
have answered all the questions, SETUP begins transferring files to your
hard disk.
Most questions (such as which operating system you're working under or
whether you use a mouse) have a limited number of specific responses. These
are listed in a box, with the default response highlighted. The following
sections provide information about individual SETUP questions.
If you want to accept the default response, press ENTER. If not, use the UP
and DOWN ARROW keys to select a different response; then press ENTER. In
either case, pressing ENTER advances you to the next screen.
The remaining questions prompt you for the directories in which the
assembler, linker, debugger, include files, and other files are to be
placed. SETUP suggests a default path, which you can accept by pressing
ENTER.
If you don't want to use the default directory, use the BACKSPACE key to
erase it; then type in the directory you want. (You can also change the
hard-disk specification if you want to install MASM 6.0's components on
different drives.) Press ENTER to accept the directory and advance to the
next screen.
If you specify a directory that does not exist, SETUP automatically creates
it for you. Therefore, be careful to enter the correct directory name.
Changing Your Response
You can change responses as often as you like before pressing ENTER and
moving to the next screen. Don't worry if you make a mistake or change your
mind. The last screen of SETUP displays all the options you have selected;
you can change any of them before the installation actually begins.
Responding to the Prompts
The SETUP questions are largely self-explanatory. The following sections
supply additional information that might be useful to you.
Choosing the Host Operating System
There are two versions of MASM; one runs under DOS and the other under OS/2.
Select the versions for the operating systems you use. If you want to run
MASM under both DOS and OS/2, you can install both.
MASM can create executable files for OS/2 or DOS, regardless of which
operating system the assembler runs under. Programs must be debugged and run
under the operating system they were written for.
Installing the Programmer's WorkBench (PWB)
PWB integrates editing, assembling, linking, and debugging to speed program
development. You can customize the PWB editor to accommodate your own
working style and needs.
Installing the Programmer's WorkBench is optional. You can call the
assembler and linker from the command line, and run CodeView and the other
tools separately.
Emulating BRIEF
If you install PWB, you can choose to configure the PWB editor so that most
of its editing functions are assigned to the same keystrokes that the BRIEF
editor uses. If you decide not to configure PWB this way during
installation, you can add these (or other) customizations later.
Installing the New MASM.EXE Utility
MASM version 6.0 now includes ML.EXE, which replaces MASM.EXE. The ML.EXE
utility both assembles and links, making the assembler's behavior identical
to that of Microsoft compilers (such as CL.EXE for C and FL.EXE for
FORTRAN). You can still assemble without linking by adding the /c option to
the ML.EXE command line.
To simplify the transition from previous versions of MASM to MASM version
6.0, Microsoft has provided a special MASM.EXE utility. The new MASM.EXE is
not an assembler. It simply translates the old-style command line into the
new format and passes the command to ML.EXE.
Since MASM.EXE also sets certain options, you may want to look at Appendix A
in the Programmer's Guide, "Differences between MASM 6.0 and 5.1," before
using MASM.EXE. This appendix lists all the new and changed features in MASM
6.0 and gives recommendations for updating existing code.
Copying Documentation Files and Sample Programs
Having SETUP copy documentation files and sample programs to your hard disk
makes them available at any time. You can load them into PWB or a text
editor, or print them for convenient reading. You can also read the
documentation files from within SETUP by selecting the "View important
documentation notes" option from the function screen.
Only the README.DOC and the PACKING.LST files can be copied directly from
the distribution disks without SETUP. From the Main Menu in SETUP, you can
also select the "Copy a file from the distribution disks" option. This
decompresses and copies files to the current directory.
Copying the Microsoft Mouse Driver, MOUSE.COM
If you choose DOS as the host mode, you are asked if you want to copy the
most recent version of the Microsoft mouse driver, MOUSE.COM. (The mouse
interface is built into the OS/2 environment.) This driver is written for
the Microsoft Mouse, but it will work with any 100%-compatible mouse or
pointing device.
If you currently use a Microsoft Mouse, you already have a mouse driver on
your hard disk. SETUP places the mouse driver in the directory for real-mode
files that you specify later. This directory is probably not the location of
your current mouse driver. If you want to use the new driver, be sure to
copy it to the appropriate directory after you leave SETUP.
Choosing the Target Hard Disk
Specify the hard disk on which you want to install the Professional
Development System. It becomes the default drive for the directories SETUP
will suggest later on. However, if you want to install the Development
System components on more than one drive or partition, you can change the
drive designation in the suggested directories.
Choosing Bound, Real-Mode, and Protected-Mode Directories
Some of the software supplied with the Professional Development System is
"bound," which means it runs under DOS or OS/2. However, five system
components come in two versions: one for DOS (or OS/2 real mode), the other
for protected mode for OS/2. These components are ML, PWB, NMAKE, QH, and
CodeView.
If you set up for only one mode, it doesn't matter where you place these
components. However, ML, PWB, QH, and NMAKE use the same name for their
real- and protected-mode versions. If you set up for both real and protected
mode, you cannot place these components in the same directory, because you
cannot have two identically named files in the same directory.
Therefore, SETUP requires that you select different directories for the
bound, real-mode, and protected-mode components. If you change SETUP default
directories, be sure you don't choose the same directory for both the real-
and protected-mode components.
Note that if you have chosen to install only for DOS or OS/2 real mode, you
are not prompted for a protected-mode directory. Likewise, if you have
chosen to install only for OS/2 protected mode, you are not prompted for a
real-mode directory.
Selecting File Directories
SETUP wants to know where to place help, include, initialization, and
library files (in OS/2). The corresponding environment variables in your
AUTOEXEC.BAT or STARTUP.CMD file should point to the correct directories.
This is explained in the section called "Configuring Your System," later in
this chapter.
Reviewing and Changing Responses
The Status and Change screen is the last screen before SETUP actually begins
installation. This screen displays all your responses. If you are satisfied,
press ENTER to select the "No Changes" default, and installation will begin.
If you want to change a response, press the DOWN ARROW key to move the
highlight to the appropriate line; then press ENTER to display the screen
that controls this response. Change your response; then press ENTER again to
return to the status and change screen. Your new response for that option is
now displayed.
You can repeat this process as often as you want. When all options are the
way you want them, select "No Changes" and press ENTER to begin
installation.
Installing
SETUP checks to see if your system has adequate space available and then
prompts you for each distribution disk it requires. The only likely error is
inserting the wrong disk. If this occurs, SETUP prompts you for the correct
disk.
Configuring Your System
At the end of installation, SETUP creates system-configuration files. These
are listed in Table 2.1, along with SETUP's default directories:
Table 2.1 SETUP Configuration Files
Operating System Configuration Files Default Directory
────────────────────────────────────────────────────────────────────────────
DOS or OS/2 real mode NEW-VARS.BAT, C: \ MASM \ BIN
NEW-CONF.SYS
TOOLS.PRE C: \ MASM \ INIT
OS/2 protected mode NEW-VARS.CMD C: \ MASM \ BINP
TOOLS.PRE C: \ MASM \ INIT
────────────────────────────────────────────────────────────────────────────
If you add the contents of these files to your AUTOEXEC.BAT (or
STARTUP.CMD), CONFIG.SYS, and TOOLS.INI files, your system will be correctly
configured for MASM each time you start your computer. You can also run
NEW-VARS.BAT or NEW-VARS.CMD to set environment variables before you run
MASM.
Modifying AUTOEXEC.BAT or STARTUP.CMD
The NEW-VARS.BAT and NEW-VARS.CMD files contain commands that set
environment variables. Insert these commands in the AUTOEXEC.BAT or
STARTUP.CMD file. All changes to environment variables are prefixed to the
current settings. Table 2.2 explains these variables.
Table 2.2 Environment Variables
╓┌────────────────┌──────────────────────────────────────────────────────────╖
Variable Description
────────────────────────────────────────────────────────────────────────────
ASMEX Location of assembly-language example files
HELPFILES Location of help (.HLP) files
INCLUDE Location of include (.INC) files
INIT Location of initialization (.INI) files
MASM, ML List of command-line options requested
PATH Path to search for executable files
QH Location of QuickHelp help (.HLP) files
Variable Description
────────────────────────────────────────────────────────────────────────────
QH Location of QuickHelp help (.HLP) files
TMP Location of PWB/LINK temporary files
────────────────────────────────────────────────────────────────────────────
The online reference system searches for help files in a specific sequence.
Therefore, do not modify the HELPFILES variable unless you are familiar with
the search sequence. Changing this path might make the online reference
system inaccessible.
Modifying CONFIG.SYS
If the host operating mode is OS/2 real mode or DOS, check the values of
files and buffers in CONFIG.SYS. The values in NEW-CONF.SYS are minimums;
the CONFIG.SYS values should be at least as large.
Under OS/2, be sure the LIBPATH variable includes the directory of the
help system's dynamic-link library MSHELP.DLL. OS/2 users who want to use
CodeView must also include the statement IOPL=YES.
To use the extended memory features of CodeView under DOS, you must use the
HIMEM.SYS driver supplied with this product. Add DEVICE=HIMEM.SYS to
CONFIG.SYS. Be sure to specify HIMEM's full path. See the section later in
this chapter called "Configuring Extended Memory for CodeView" for
additional information.
Modifying TOOLS.INI
The TOOLS.PRE file contains additional PWB configuration settings. Add the
contents of TOOLS.PRE to your existing TOOLS.INI file. If you don't already
have a TOOLS.INI file, rename TOOLS.PRE to TOOLS.INI.
PWB looks for TOOLS.INI in the directory containing PWB. If you move
TOOLS.INI to another directory, specify its path in the INIT environment
variable in your AUTOEXEC.BAT or STARTUP.CMD file.
The TOOLS.INI file controls many configuration options for MASM 6.0
utilities. These options let you customize the following:
■ PWB
■ CodeView debugger
■ Microsoft Advisor online reference system
■ NMAKE utility
You can modify the TOOLS.INI settings with the PWB editor or any word
processor. These are some of the options you can change:
■ Screen colors and the number of lines displayed by PWB
■ Macros for PWB
■ Key assignments for PWB
■ Default key settings for PWB
■ Location of help files used by the online reference system
■ Options for NMAKE
TOOLS.INI is described in the online reference system. See Chapter 14 of the
Programmer's Guide for more information about customizing PWB.
Customizing the Programmer's WorkBench
There are other ways to customize PWB besides editing the TOOLS.INI file.
For example, you can control a variety of editor functions and options from
within PWB with the Editor Settings command from the Options menu.
For more information about customizing the Programmer's WorkBench, see
Chapter 3 in this manual, and Chapter 14 of the Programmer's Guide,
"Custom-izing the Microsoft Programmer's WorkBench." For more information
about customizing NMAKE and other utilities, see the online reference system
or the Programmer's Guide.
Configuring Extended Memory for the CodeView Debugger
Extended memory is the memory above the first megabyte that an 80286, 80386,
or 80486 can access in protected mode. (Extended memory is not the same as
expanded memory. Expanded memory is bank-switched memory that overcomes the
640K RAM limit of machines with 8086/8088 processors.)
To use the extended memory features of the CodeView debugger under DOS, you
must first add DEVICE=HIMEM.SYS (with HIMEM's full pathname) to the
CONFIG.SYS file, then reboot. The NEW-CONF.SYS file created by SETUP
contains a sample HIMEM entry.
────────────────────────────────────────────────────────────────────────────
NOTE
HIMEM.SYS implements the XMS 2.x standard. The complete XMS source and
specification are available from the Microsoft Information Center.
────────────────────────────────────────────────────────────────────────────
There are several additional factors to consider when using extended memory
with CodeView under DOS or Windows:
■ CodeView needs at least 384K of extended memory. If you add memory to
your computer, be sure to configure at least 384K of it as extended
memory.
■ Older versions of HIMEM.SYS may not work properly with this product.
Use the version of HIMEM.SYS on the MASM 6.0 distribution disks.
■ Other memory managers such as 386-Max or QEMM may conflict with
HIMEM.SYS. Don't install more than one memory manager.
■ Don't use HIMEM.SYS (or any other memory manager) with Windows/386.
Windows/386 allocates extended and expanded memory automatically.
■ If you run Windows 3.0 in 286-Protected mode, create a PIF for
CodeView and specify at least 384K of XMS (extended) memory.
■ Many RAM-disk and disk-cache programs are incompatible with HIMEM.SYS.
The RAMDRIVE and SMARTDRV programs supplied on the distribution disks
are HIMEM.SYS-compatible.
■ If you run TSRs, check their documentation to see if they are
compatible with HIMEM/XMS 2.x. If there is any question about
compatibility, manually install one TSR at a time.
SETUP places the HIMEM, RAMDRIVE, and SMARTDRV drivers in the C: \ MASM \
BIN directory or in the directory you have specified for real-mode
executable files.
Chapter 3 Using the Programmer's WorkBench
────────────────────────────────────────────────────────────────────────────
The Programmer's WorkBench (PWB) is a window-oriented programming
environment that incorporates a text editor, an assembler, a linker, a
debugger, a make utility, a source-code browser, and an online reference
system. It is an alternative to switching between command-line-based
programs: you can edit, assemble, link, and debug without leaving this
integrated environment. To demonstrate PWB's features, this chapter includes
a sample program that you can assemble, link, and debug.
This chapter explains how to start PWB and then introduces the following PWB
elements:
■ Windows and menus. You can quickly find the command you need using the
menus. The section "Using Windows and Menus" explains how to open and
close windows and how to navigate through the menus.
■ Programmer's editor. Features such as "bookmarks," macros, customized
key commands, and enhanced search capabilities decrease the amount of
time you spend writing code.
■ Integrated assembler and linker. You can assemble, link, and run a
program without leaving the editor. PWB's integrated environment and
projectmanagement facilities save you hours of development time.
■ Integrated browser and debugger. Using the Source Browser, you can
quickly find a data declaration or procedure definition in your source
code, as well as references to all procedures and variables in the
program. With the CodeView debugger, you can set breakpoints, examine
variables and machine registers, and step through execution of your
program one line at a time.
Starting PWB
To run PWB, type
PWB
at the command line. You can immediately begin entering source code in the
untitled window that appears. PWB maintains a history of the files you have
opened. The next time you run PWB, it opens the last file you worked on.
Specifying a Source File
You can open an existing source file by specifying its name or pathname
after the PWB command. If PWB can't find the specified file, it asks if you
want to create a new file with that name. You can also open an existing
source file with the Open command from the File menu.
Command-Line Options
PWB offers a number of command-line options that can configure PWB, position
the file at a bookmark, or perform user-selected functions automatically.
These are documented in the Reference and in the "Starting PWB" topic in
online help.
Elements of the PWB Environment
This section introduces the PWB environment and describes how to control
windows and choose commands from the menus. It also describes elements
within the PWB environment.
You can enter PWB commands from the keyboard or with a Microsoft (or fully
compatible) Mouse. Unless the right mouse button is specifically mentioned,
"clicking" means to press and release the left mouse button once.
Windows and Other Screen Elements
Figure 3.1 shows the components of a typical PWB screen. Some elements
provide information only. For example, if CAPS LOCK is on, the letter C
appears in the lower-right corner of the screen. Other elements perform
actions triggered by a specific keystroke or mouse action. For example, if
you click the button in the upper-left corner of a window with the mouse,
the window closes.
(This figure may be found in the printed book.)
The parts of a PWB screen and their uses are listed in Table 3.1.
Table 3.1 Parts of a PWB Screen
╓┌─────────────────────────────────┌─────────────────────────────────────────╖
Name Use
────────────────────────────────────────────────────────────────────────────
Menu bar Lists names of available menus.
Close button Closes window (appears only if more than
one window is
displayed).
Title bar Shows name of file currently being
edited.
Windows Contain source code or display
information associated with online help.
Maximize button Enlarges or restores window to its
original size.
Scroll bars Indicate cursor position in the current
file and allow cursor
Name Use
────────────────────────────────────────────────────────────────────────────
file and allow cursor
movement.
Reference bar Lists shortcut keystrokes (keyboard
users) and direct PWB commands (mouse
users); summarizes menu contents and
displays other information.
File-type indicator Tells type of file. ASM: MASM source
code; text: any other user-created
file; pseudo: file-like means of
displaying data.
Line and column indicators Show current line and column of text
cursor.
Status indicators A : Meta prefix is set.
B : Background assembly in OS/2.
C : CAPS LOCK is on.
Name Use
────────────────────────────────────────────────────────────────────────────
C : CAPS LOCK is on.
L : Carriage return isn't used to
terminate a line.
M : File has been modified.
N : NUM LOCK is on.
O : Overtype is on.
R : File is set to Read Only status.
T : File is temporary.
X : A macro is being recorded.
────────────────────────────────────────────────────────────────────────────
Menus
PWB commands are organized into menus whose names appear in the menu bar. A
brief description of the selected menu appears in the reference bar. To get
more information about a menu, select the menu and press F1, or point the
mouse cursor at the menu name and click the right mouse button.
PWB has the following menus:
File Menu
╓┌───────────────────────────────┌──────────┌────────────────────────────────╖
────────────────────────────────────────────────────────────────────────────
(Please refer to the printed New Clears the Source window to
book.) start a new file
Open Loads an existing source file
Merge Merges one or more files with
the current file
Next Displays the next file in the
file list specified at start-up
────────────────────────────────────────────────────────────────────────────
Save Saves the current file
Save As Saves the current file under a
different name
Save All Saves all modified files
Close Closes the current file
Print Prints a selection or the
current file
DOS Shell Temporarily exits to DOS or
OS/2
Exit Leaves PWB
At the bottom of the File menu, PWB displays a list of recently opened
files. This helps you access the files you've been working with.
Edit Menu
╓┌────────────────────────────┌─────────────────┌────────────────────────────╖
────────────────────────────────────────────────────────────────────────────
(Please refer to the Undo Reverses the effect of your
printed book.) recent edits
Redo Reverses the effect of the
last Undo command
Repeat Repeats your last edit
Cut Deletes a selected block of
text from the active window
and copies it to the
clipboard
────────────────────────────────────────────────────────────────────────────
Paste Inserts a selected block of
text from the clipboard
into the active window
Clear Deletes selected text
without copying it to the
clipboard
Set Anchor Saves the current cursor
position as a reference
point for text selection
Select to Anchor Highlights text from the
previously set anchor to
the current cursor position
Box Mode Toggles text selection mode
between box, line, and
stream modes
────────────────────────────────────────────────────────────────────────────
stream modes
Read Only Makes all files read-only
(to protect from accidental
modification)
Set Record Defines a macro name and
its shortcut key
Record On Records keystrokes for a
macro
Edit Macro Edits a recorded macro
View Menu
╓┌────────────────────────┌─────────────────┌────────────────────────────────╖
────────────────────────────────────────────────────────────────────────────
(Please refer to the Split Horizontal Divides the active window
printed book.) horizontally.
Split Vertical Divides the active window
vertically.
Size Window Enlarges or shrinks the active
window.
Maximize Toggles between Maximize Window
Window and Restore Window. (Maximize
Window enlarges the active
window, while Restore Window
restores it to its original
size.)
Close Window Closes the active window.
Compile Results Shows the result of the last
compilation.
────────────────────────────────────────────────────────────────────────────
compilation.
Search Menu
╓┌────────────────────────────┌─────────────────┌────────────────────────────╖
────────────────────────────────────────────────────────────────────────────
(Please refer to the Find Searches for the next
printed book.) occurrence of a text string
in the active window
Selected Text Searches for the next
occurrence of the current
selection
Repeat Last Find Repeats the search without
retyping the text string
────────────────────────────────────────────────────────────────────────────
Change Searches for one text
string and replaces it with
another
For File Searches for a file on disk
Next Error Moves to the next build
error in source code
Previous Error Moves to the previous build
error in source code
Set Error Selects the error at the
cursor as the current error
(i.e., synchronizes active
window and error window)
Go to Mark Moves the cursor to a
"bookmark" (a previously
────────────────────────────────────────────────────────────────────────────
"bookmark" (a previously
specified position in a
file)
Define Mark Creates a bookmark by
associating a name with a
position in a file
Set Mark File Creates a file in which you
can save bookmarks or open
an existing bookmark file
Make Menu
╓┌───────────────────────────┌───────────────────┌───────────────────────────╖
────────────────────────────────────────────────────────────────────────────
(Please refer to the Compile File Compiles the current
────────────────────────────────────────────────────────────────────────────
(Please refer to the Compile File Compiles the current
printed book.) source file
Build Compiles and links all
modified files in a
multimodule program
Rebuild All Compiles and links all
files (even those that
have not been modified)
Build Target Builds a single target
from the program list or
non-PWB makefile
Set Program List Creates or opens a program
list file, which defines
the components of a
multimodule program
────────────────────────────────────────────────────────────────────────────
Edit Program List Changes the contents of a
program list
Clear Program List Removes the current
program list from memory,
but does not change its
contents
Run Menu
────────────────────────────────────────────────────────────────────────────
(Please refer to the Execute Runs the current program
printed book.)
Command Line Specifies commands that will be
supplied to your program when you
choose Execute or Debug from the
Run menu
Debug Invokes the Microsoft CodeView
debugger
Run DOS Performs any single DOS or OS/2
Command task without exiting the
environment
Customize Menu Adds commands to the Run menu
Options Menu
╓┌────────────────────────────┌─────────────────┌────────────────────────────╖
────────────────────────────────────────────────────────────────────────────
(Please refer to the Environment Specifies the paths to
printed book.) search for include files,
libraries, and online help
────────────────────────────────────────────────────────────────────────────
libraries, and online help
Key Assignments Assigns keystrokes that
invoke commands, macros,
and extension functions
Editor Settings Changes the setting of any
editor switch
Build Options Sets the main language,
determines what type of
program is built, specifies
whether the program is
built as a debug or release
version, and saves current
build options
Browse Options Defines the way the PWB
Source Browser database is
built
────────────────────────────────────────────────────────────────────────────
built
MASM Options Sets compiler options for
your project
LINK Options Sets linker options for
your project
NMAKE Options Sets the command line for
NMAKE
CodeView Options Controls how CodeView uses
memory, displays
information, and handles
display of output
Browse Menu
╓┌───────────────────────────┌──────────────────┌────────────────────────────╖
────────────────────────────────────────────────────────────────────────────
(Please refer to the Goto Definition Locates the definition of
printed book.) any program symbol in your
source code
Goto Reference Locates the references to
any name in the source
database
View Relationship Queries the PWB Source
Browser database
List References Displays a list of
functions that call each
function and use each
variable, type, and macro
Call Tree Views which functions call
other functions
────────────────────────────────────────────────────────────────────────────
other functions
Outline Displays a program outline
Next Finds the next definition
or next reference
Previous Finds the previous
definition or reference
Case Sensitive Defines whether or not your
searches will be case
sensitive
Split Windows Determines how the Browser
appears
Help Menu
────────────────────────────────────────────────────────────────────────────
(Please refer to the printed Index Displays a list of indexes
book.) for the online
reference
Contents Displays a table of contents
for subjects covered by the
online reference
Topic Displays information about
the item or keyword on which
the cursor is positioned
Help on Help Explains how to use the help
system
Next Displays the next piece of
information in the help
system on the topic you
looked at
Choosing Menu Commands
Keyboard
To choose a command:
1. Press the ALT key to activate the menu bar.
2. Press the highlighted character in the menu name (such as F for File),
or use the RIGHT and LEFT ARROW keys to select a menu. Press ENTER.
3. Press the highlighted character in the command name (such as S for
Save in the File menu), or use the UP and DOWN ARROW keys to highlight
the command and then press ENTER.
Mouse
To choose a command:
1. Open the menu by clicking the menu name.
2. Click the command.
If you open a menu and then decide you don't want to issue a command, there
are three ways to close the menu:
■ Press the ESC key.
■ Click the mouse outside the menu.
■ Press ALT twice.
Using Shortcut Keys
Some menu items are followed by the names of keys or key combinations. You
can press these "shortcut keys" to execute these commands immediately,
instead of selecting them from a menu.
The reference bar at the bottom of the screen also displays commonly used
shortcut keys. You can click any of these buttons to execute the indicated
command. Many other shortcut keys have been assigned than are listed on
menus. Assignments are also redefinable. See the Key Assignments option in
the Options menu.
Shaded Commands
When a menu command is gray (rather than black), it is currently unavailable
for use. For example, when PWB is first run and no programs have been
assembled or linked, the Next Error and Previous Error commands in the
Search menu are both disabled and are therefore shaded gray.
Ellipses and Dialog Boxes
A command followed by an ellipsis (...) needs more information before the
command is executed. You enter this information in a dialog box that appears
when you select the command. (A command not followed by an ellipsis executes
immediately.) Figure 3.2 shows the dialog box opened by the Find command
from the Search menu.
(This figure may be found in the printed book.)
Dialog boxes can contain any or all of the items in the following list.
Press ALT and the item's highlighted letter, or the TAB or SHIFT+TAB keys to
move among items in a dialog box. You can set dialog items from the keyboard
or with the mouse.
Item Description
────────────────────────────────────────────────────────────────────────────
Option Buttons (∙) Offer a list of choices; only one option can be
chosen. Use the ARROW keys to move between the
choices. In Figure 3.2, three option buttons set
the direction of the search (Forward, Backward,
Find All).
Check Box [X] A yes/no switch. If the box is empty, the option is
turned off. If it contains the letter X, the
feature is on. Press the SPACEBAR or use the UP and
DOWN ARROW keys to turn a check box on or off.
Text Box [..........] Accepts text that you type. In Figure 3.2, Find
Text requires you to type the text to search for.
List Boxes Certain dialog boxes display lists of information
(such as the contents of the current disk directory)
within a list box. If the number of items exceeds
the list box space, press the ARROW keys, PGUP/PGDN,
or click the scroll bar to move around the list.
Command Buttons Confirm the settings you have entered and which are
< OK > now enclosed by angle brackets. The OK button uses
the current settings. The Cancel button exits the
dialog box and does not change the current settings.
If one of the command buttons is highlighted, press
ENTER to execute that command. Clicking a command
button also executes the command. If a button
contains an ellipsis, it indicates that another
dialog box will appear when the command is
selected.
Dialog boxes usually contain shortcut keys. Shortcut keys are identified by
highlighted letters.
Getting Help
PWB uses the Microsoft Advisor online reference system to provide
information about PWB, the assembler, the linker, the CodeView debugger,
other utilities, and topics relating to the MASM language. Information can
be displayed at any time and at any point in PWB or CodeView. For a complete
discussion of the online reference system, see Chapter 4.
Menu Help
To get information about a PWB menu command, choose the command with the
ARROW keys, then press F1; or point the mouse cursor at the menu command and
click the right mouse button. A help window appears with information about
the command.
Dialog-Box Help
Many dialog boxes have a help button that provides additional information
about the dialog box and its contents. To display the information, click the
help button with the mouse or press F1.
The Help Menu
The commands in the Help menu can display a table of contents, an index of
all help topics, and help on using the online reference system itself.
The Contents command displays the contents of the entire reference system.
Information is organized by topic, such as PWB, CodeView, the MASM language,
and specific utilities. Click a topic to move to that topic's table of
contents.
The Index command displays every available item in the reference system,
organized alphabetically. Select the first letter of the topic you want from
the alphabet bar at the top of the screen. Then select the specific topic
from the list that appears. Use PGUP, PGDN, and the ARROW keys to scroll
through the topics.
The Help on Help command provides a brief overview of how to navigate
through the help system and invoke help on any topic.
Using the Editor
The program editor is an important part of the PWB environment. This section
provides a brief overview of its major functions and assumes you are using
the default key assignments. For a complete list of editor commands and
functions, refer to the following online reference topics, available on the
PWB Contents screen:
■ "Function Quick Reference"
■ "Using PWB Functions"
Moving Around in a Text File
Most of the cursor-control keys position the cursor and modify the display
just as you would expect them to. The HOME, END, PGUP, PGDN, and ARROW keys
behave as they do in most other text editors.
If you click in the shaded area on either side of the scroll box in the
scroll bar, you move the cursor one full window at a time. If you click the
scroll-bar arrows, you move the cursor one row or column in the
corresponding direction. If you click and drag the scroll box, you move the
cursor to the corresponding relative position within the file.
Defining a Block of Text
One of the most common editing tasks is defining a block of text, usually
before deleting, moving, or copying it.
Keyboard
To define a block of text:
1. Move the cursor to the beginning of the block.
2. Hold down the SHIFT key and use any cursor-movement key (ARROW, HOME,
PGDN, and so on) to move to the end of the block.
Mouse
To define a block of text:
1. Click the first character at the beginning of the block. Continue
pressing the left mouse button.
2. Drag the mouse to select the rest of the desired text. The block
remains selected until you press a cursor movement key or click the
mouse again.
────────────────────────────────────────────────────────────────────────────
NOTE
As long as a block is defined, anything you type deletes the defined block
and inserts the typed characters.
────────────────────────────────────────────────────────────────────────────
As you move the cursor or mouse to define a block, you usually select all
characters from the starting cursor position to the ending cursor position.
This is called "stream mode" and is the default. The Edit menu offers three
text-selection modes:
■ Stream mode selects all text from the starting cursor position to the
ending cursor position (the default).
■ Box mode selects text from a rectangle whose opposite corners are the
starting and ending cursor positions.
■ Line mode selects full lines of text from the line with the starting
cursor position to the line with the ending cursor position.
You can select a different mode from the Edit menu. The mode displayed in
the menu is the next available text-selection mode (not the current mode).
You can also move through the selection modes during text selection by
clicking the right mouse button while you hold down the left mouse button.
Once a block is defined, press DEL to erase it. You can also place the block
in the clipboard buffer for later use. Press CTRL+INS to copy the block to
the clipboard. Press SHIFT+DEL to copy the block to the clipboard and erase
it from the screen. Press SHIFT+INS to insert the current contents of the
clipboard at the cursor.
Setting Bookmarks
A "bookmark" is a permanent marker that lets you quickly return to a
specific section of text. A bookmark stays with the text it marks, even if
the text is moved.
To set a bookmark, first position the cursor at the location you want to
mark. Then select the Define Mark command from the Search menu.
In the dialog box that appears, type the name you want to give the bookmark.
(The source filename and the row and column are already entered.) Press
ENTER to save the bookmark for the current session. To save a bookmark for
later editing sessions, use the Add To Mark File option. The Set Mark File
command from the Search menu reloads previously saved bookmarks.
To move the cursor to a bookmark, choose the Go To Mark command from the
Search menu. A list of all bookmarks is displayed. Select the bookmark from
the list using the ARROW keys, or click the selected bookmark with the left
mouse button. Press ENTER to go to the bookmark.
Setting Anchors
An "anchor" temporarily marks the beginning of selected text. It is most
often used to define a block that extends beyond the current screen.
To set an anchor, move the cursor to the desired location and choose the Set
Anchor command from the Edit menu. Use the Select To Anchor command from the
Edit menu to select all text between the current cursor position and the
anchor. Only one anchor can be set at a time.
Searching for and Changing Text
You can search for a string of text using the Find command in the Search
menu. Type the string you want to look for, then use the check boxes to set
options such as wrap-around search and case sensitivity. The Files button
allows you to specify a list of files to search through for the designated
string.
Once a string has been located, use the Repeat Last Find command in the
Search menu (or press the shortcut key, F3) to move to the next occurrence
of the string. If you specified several files to search, press SHIFT+F3 to
move to the next file that contains that string.
To modify several instances of a string in the source file, use the Change
command in the Search menu. Enter the target string, the replacement string,
and the search options.
PWB also supports searching for and replacing text patterns using
regular-expressions. You can use either the UNIX or Microsoft
regular-expression syntax. For further information, see the online reference
system.
PWB can also search for selected text in files not currently loaded. Select
the Files command in the Find dialog box. From the File List box, select the
name of a file that you want to search. Then click the Add/Delete button to
place it in the File(s) Selected box. Repeat this step for all the files you
want to search.
You can also enter a wildcard pattern in the File Name text box, and then
use the Add Pattern button to place it in the File(s) Selected box. Press
ENTER or click the OK button to begin the search. Use the Next Error and
Previous Error commands to scan any text that is found.
Creating Macros
You can save blocks of text or frequently performed editing tasks as macros.
Each macro is assigned a key combination that "plays back" the text or task.
For example, if several programmers are working on a file and need to keep
track of who made what changes, a macro can be used to insert a comment with
the programmer's name.
To create such a macro, use the Set Record command from the Edit menu to
enter a macro name and its associated key combination. For this example,
call the macro modname and assign it to the key combination CTRL+J.
Now choose the Record On command from the Edit menu. A bullet appears to the
left of the menu command and an X appears in the status line, indicating
that all keystrokes and menu commands are being recorded. Then type the
following:
; j. courtney coded this
To stop the recording, choose Record On again, which causes the bullet to
disappear. This action associates all recorded actions with the previously
selected macro name. Now, each time you press CTRL+J, the comment you typed
is inserted at the cursor position.
Macros are saved in the TOOLS.INI file when you save the <record>
pseudofile. You can change or delete them by modifying the file. See the
section "Customizing PWB" in the online reference system for additional
information about macros.
Customizing the Editor
You can modify editor settings, assign keyboard commands, and emulate
command sets from other editors to make the editor work the way you like.
See the online reference system and Chapter 14, "Customizing the Microsoft
Programmer's WorkBench," in the Programmer's Guide for complete details.
Changing Editor Settings
The PWB editor has a variety of settings you can customize, such as word
wrap, color, and width of tab stops.
View or modify the settings by choosing the Editor Settings command from the
Options menu. The editor settings appear in a new window labeled "Current
Assignments and Settings." The format is setting:value, where setting is the
name of the setting, and value is a Boolean, numeric, or text value. You can
learn about a setting by positioning the cursor on it and pressing F1.
To change a setting, simply overtype the old value with a new one. The
change does not take effect until you move the cursor to a different line.
To save the changed assignments, press SHIFT+F2 (if the default keyboard
assignments are in effect) or choose the Save command in the File menu. If
you do not save, the assignments are temporary and last only for the
duration of the PWB session.
To return to your source file, press F2.
Modifying Keyboard Assignments
Most editor functions (such as delete, home, and copy) are already assigned
a keystroke combination for direct execution. You can reassign these
functions to different keystrokes by choosing the Key Assignments command in
the Options menu.
This command displays the current assignments on a screen labeled "Current
Assignments and Settings." Function assignments appear in the format
function:keyname. You can learn about a PWB function by positioning the
cursor on the function name and pressing F1. Press PGDN to view a list of
unassigned keys following the assignment list.
To assign a new key to a function, replace keyname with the name of the new
key. The change does not take effect until you move the cursor to a
different line.
When you move the cursor, the line with the new assignment is highlighted.
To make the assignment permanent, save the file by pressing SHIFT+F2 or by
choosing the Save command in the File menu. This updates the TOOLS.INI file,
where changes to key assignments are stored.
To remove a key assignment, assign the unassigned function to the key.
Using Advanced Editor Features
Most of the standard editing features in PWB are intuitive and easy to use.
However, there are also many advanced editing options that allow you to
customize and control the editor beyond simple menu commands.
The PWB editor incorporates all of the powerful features found in the
Microsoft Editor. You can set a variety of functions and switches to further
customize the PWB editor and enhance its performance. A complete list of
editor functions and settings is available in the online reference system.
You can add new or altered functions and settings to the TOOLS.INI file so
they are loaded when PWB starts, or you can enter them interactively while
you are working in PWB.
For example, to assign a key command interactively to the editor's curdate
function, which enters the current date at the cursor, first press ALT+A.
(The display Arg[1] appears at the left end of the reference bar to show
that you have pressed ALT+A once.) Type the following into the argument
dialog box (note that the dialog box does not appear until you have typed
the first character):
Curdate:SHIFT+CTRL+T
Press ALT+= to assign the key to the function.
Now when you press SHIFT+CTRL+T, the current date is inserted at the
editor's cursor position.
For detailed information about advanced PWB features, refer to the
Programmer's Guide and the online reference system.
Reconfiguring the Editor
PWB includes the BRIEF.INI file with key assignments that emulate the BRIEF
editor. To use these key assignments, add the contents of this file to
TOOLS.INI. You can also simulate command sets from other editors using the
customization techniques described earlier.
Running Other Programs
One of PWB's most powerful features is its ability to run other programs
without exiting to the command line. The Customize Menu command in the Run
menu lets you add any program to the Run menu, where you can execute it
simply by clicking its name. You can also specify any keystroke to run it
directly.
After selecting Customize Menu, click the Add button in the Customize Menu
dialog box that appears. The dialog box lets you type all the information
PWB needs to successfully execute the program: its name, directory,
command-line arguments, and so on. Note that you can give the program any
name you like on the command line, and you can specify that the program run
in the background.
Assembling and Linking
PWB can handle all the details of assembling and linking (building) a
program for you. You first tell PWB which source files constitute the
program. PWB then creates a "makefile," which specifies how these files are
supposed to be assembled, compiled, and linked to create the final
executable file. PWB already knows that .ASM files are to be assembled, .C
files are to be compiled, and the resulting .OBJ files are to be linked, so
it can handle simple projects automatically. Complex projects may require
you to write your own makefile.
Once the makefile is created, you build your project by selecting the Build
command. The makefile also speeds the build process with multimodule
programs, since only those source files that have changed from the last
build are reassembled or recompiled.
Building Programs in PWB
This section shows how to build programs in the PWB environment. If you
don't have a program of your own, you might want to use the following
program:
; HELLO.ASM defines a string and calls the procedure PutStr
to
; display the text. PutStr is in a separate module PUTSTR.ASM.
.MODEL small, c
; Tell assembler PutStr's argument type and how to call PutStr:
PutStr PROTO pMsg:PTR BYTE
.DOSSEG
.STACK
.DATA
msg BYTE "Hello, world.", 13, 10, 0 ; Null-terminated string
.CODE
.STARTUP ; Initialize data and stack segments
INVOKE PutStr, ADDR msg ; Call external procedure
.EXIT 0 ; Exit program
END
Note that there are new directives (such as .DOSSEG) and new constructs
(such as INVOKE and PROTO) in this and the following procedure. MASM version
6.0 has a number of new features to make assembly-language programming more
like programming in a high-level language, while maintaining the compact,
fast-executing code assembly language offers. These features are explained
in detail in the online reference system and in the Programmer's Guide.
Saving a Program
To save a source file, select the File menu and choose either Save or Save
As. If the file is new or you choose Save As, a dialog box prompts you for a
filename (see Figure 3.3). If you choose Save with an existing file, PWB
automatically saves the file under the name listed in the title bar of the
Source window. To save a copy of a file under a different name, choose Save
As. (The older version of the file, with its original name, is not deleted
or modified.)
(This figure may be found in the printed book.)
Type in the name of the source file, HELLO.ASM. Press ENTER or click the OK
button to save the file with this name.
Writing and Saving a Procedure
HELLO.ASM calls the PutStr routine to display a message (in this case,
Hello, world) on the screen. You could add this routine to the HELLO.ASM
file; but because it's a procedure that could be used in other programs, you
should put it in a separate file.
Use the New command in the File menu to clear the screen. Type in the
PutStr routine that follows and save it in a file named PUTSTR.ASM:
; PUTSTR.ASM contains a procedure PutStr, which displays a
; null-terminated string on the screen.
.MODEL small, c
.CODE ; Address of string (near or far
PutStr PROC pMsg:PTR BYTE ; depending on model) is passed on
; the stack
mov ah, 02h ; Display character function
mov di, pMsg ; Load address in DI
mov dl, [di] ; Load each character through [DI]
.WHILE (dl)
int 21h ; DOS displays character
inc di ; Point to next character
mov dl, [di] ; Load each character through [DI]
.ENDW
ret
PutStr ENDP
END
Setting the Main Language and Build Options
Before assembling the HELLO program, you must first specify the type of
program you are building. Once you choose a main language and an initial
build option, you can change its settings using the MASM Options command
from the Options menu.
To specify a main language and an initial build option:
1. Choose the Build Options command from the Options menu
2. Choose the Set Main Language button
3. Use the mouse or the ARROW keys to select "Assembler" from the list,
and then press ENTER
4. Choose the Set Initial Build Options button
5. Use the mouse or the ARROW keys to select a build option from the
list, and then press ENTER
For the HELLO program, select the DOS EXE build option.
Setting and Clearing the Program List
Once you set the main language and initial build options, you need to set
the program list. The Set Program List command in the Make menu tells PWB
which makefile to use in building a program. It clears the current makefile
setting, instructs PWB to use the makefile you have specified, and specifies
which Browser (.BSC) file is associated with the current project.
Choose the Set Program List command from the Make menu. In the dialog box
that appears, type the main program's filename (HELLO), then press ENTER
(see Figure 3.4). PWB automatically loads the .MAK file if it exists or asks
you if you want to create it.
(This figure may be found in the printed book.)
If the makefile does not exist, PWB asks if you want to create a new
makefile; answer Yes. The Edit Program List dialog box appears, listing all
files in the current directory. Select the files you want to include in the
project (in this example, HELLO.ASM and PUTSTR.ASM). It doesn't matter in
which order the files appear.
Keyboard
To select the files:
1. Press TAB until the cursor is within the list box containing the
directory of files (another box lists the directory names).
2. Use the ARROW keys to move to the HELLO.ASM file. Press ENTER to add
the filename to the program list.
3. Repeat step 2 for PUTSTR.ASM.
4. Once both filenames appear in the program list, press TAB until the
Save List command button is highlighted, and then press ENTER.
Mouse
To select the files:
1. Click HELLO.ASM once; then click the Add/Delete button (or just
double-click HELLO.ASM).
2. Repeat step 1 for PUTSTR.ASM.
3. Once both filenames appear in the program list, click the Save List
command button to save the makefile.
PWB automatically creates a makefile appropriate for the files you selected.
You can edit the .MAK text file to change or add additional commands.
If you want to create a new program or instruct PWB to "forget" the current
program, use the Clear Program List command in the Make menu. This action
clears the current program-list setting. You can then specify a new program
to build using the Set Program List command. You should always clear the
program list before starting work on a different project.
Assembling and Linking HELLO.ASM
The MASM Options command in the Options menu lets you control a variety of
assembly options (see Figure 3.5).
(This figure may be found in the printed book.)
From within the Macro Assembler Global Options dialog box, you can use the
Set Debug Options and Set Release Options buttons to easily create debug and
release versions of your program.
The Set Debug Options button displays a dialog box where you can set
parameters for activities like generating list files and debugging. These
settings also apply to programs built with the Debug Build option, which you
select from the dialog box displayed by the Build Options command. Use debug
settings when you are developing and actively debugging your program. When
the Release Build option is checked in the Build Options dialog box, the
parameters specified in the Set Release Options dialog box apply.
Similar debug and release options are also available for the linker with the
LINK Options command in the Options menu (see Figure 3.6). You can display
the options in both the Macro Assembler Global Options and LINK Options
dialog boxes using Show Debug Options and Show Release Options buttons.
(This figure may be found in the printed book.)
The Set Release Options button in the Macro Assembler Global Options dialog
box offers the same choices as Set Debug Options, but Set Release applies
them to a final version of the program. Use these settings when your program
is completely debugged and ready for release.
Before building a program, make sure its name appears after the Compile File
and Build commands in the Make menu. If the name does not appear after the
Build command, choose the Set Program List command in the Make menu to set
the makefile as the current project.
To build the program, choose the Build command in the Make menu. If an
assembly or link error occurs, the build terminates and the error appears in
the Compile Results window. You can get information about unknown errors
from the online reference system by selecting the error and pressing F1. In
OS/2, you are notified of errors and asked if you want to see the assembly
log. (If you want to view the assembly log when running PWB under DOS, you
must select the Compile Results command from the View menu before starting
assembly.)
Running the Program
After the program is built, PWB adds the name of the executable file to the
Execute command in the Run menu. Choose Execute to run the program. When the
program is complete, press any key to return to PWB.
Debugging Programs
PWB has a variety of resources available for debugging programs. They range
from simple assemble-and-link error messages to sophisticated source
browsing and source- or assembly-level debugging.
When assembly errors occur, the cursor moves to the line that caused the
first error; a brief description of the error appears in the reference bar.
Use the Next Error and Previous Error commands in the Search menu to move
the cursor to lines where other errors occurred.
To see a complete list of errors, choose the Compile Results command from
the View menu. Move the cursor into the Compile Results window and use the
Set Error command in the Search menu to select the error under the cursor as
the current error. This command synchronizes the source and error windows so
the source-code line containing the error appears in the active window.
Use the Microsoft Advisor to display online help about the error. In the
Compile Results window, move the cursor to the error number and press F1, or
click the number with either mouse key.
PWB incorporates a source-code browser and interfaces with the CodeView
debugger. The Browser displays information about function and data
relationships. CodeView is a window-oriented symbolic debugger that lets you
step through your code and examine variables and data as the program
executes.
Using the Browser
The Browser can search a database of selected files to get a list of
references and definitions, to build a call tree and outline, or to create a
list of relationships among program symbols. You can examine this material
to see how your program is structured. Figure 3.7 shows how HELLO.ASM
calls the PutStr procedure.
(This figure may be found in the printed book.)
The commands on the Browse menu are referred to collectively as the PWB
Source Browser. Before using these commands, you must define the database
the Source Browser is going to search.
To define a database:
1. Generate a program list using the Set Program List command from the
Make menu. The files contained in the program list make up the
database.
2. Choose Browse Options in the Options menu. You must select the
Generate Browse Information field in the dialog box to create the
Source Browser database. The rest of the fields in this dialog box
offer you choices of how to build the database; they are optional.
3. Build your program using the commands from the Make menu. When you
build the program, a file with the same program-list root name and a
.BSC (Browser Source Cache) extension is created. This file contains
reference information used by the Browser.
Once you have completed these steps, the following Browse menu commands are
ready for you to use:
■ The Goto Definition command provides a list of symbols and variables
that occur within include files and modules. You can immediately open
the file at the line number where the definition of a symbol or
variable appears by selecting the OK button.
■ The Goto Reference command displays a list of files and line numbers
where symbols and variables have been referenced in include files and
modules.
■ The View Relationships command provides detailed information about
various portions of your program. You can examine functions, macros,
types, and variables by their use, definition, or inclusion in include
files and modules.
■ The List References command displays references to functions, macros,
types, and variables. You can move the cursor to a reference and then
use the Goto Definition or Goto Reference command to show occurrences
of the reference.
■ The Call Tree command displays a tree structure of function calls
within the program.
For additional information about the Browser, refer to the online reference
system.
────────────────────────────────────────────────────────────────────────────
NOTE
You can create a Browser information file with the ML (command-line)
assembler using the /FR or /Fr option. This creates a .SBR file, which you
must convert to a Browser-readable .BSC file with the PWBRMAKE.EXE utility.
────────────────────────────────────────────────────────────────────────────
Debugging with the CodeView Debugger
Once a program has been built, you can use the Microsoft CodeView debugger
to step through the source code, displaying output, registers, and variables
as each line is executed (see Figure 3.8). You can also set breakpoints and
watchpoints to cause execution to pause at critical sections of code. From
within CodeView, the Microsoft Advisor can provide online help about
CodeView operation, options, and MASM keywords in the source code. Although
you can call CodeView from the command line, PWB provides access to CodeView
without exiting. See Chapter 15 in the Programmer's Guide for more
information about using CodeView.
────────────────────────────────────────────────────────────────────────────
NOTE
CodeView version 3.12 is compatible with releases of OS/2 later than version
1.0. If you have problems exiting CodeView, you have either an older version
of OS/2 or the wrong version of the DOSCALLS.DLL file.
If you use CodeView from the OS/2 DOS compatibility box, be sure the /S
(Swap Screen in Buffers) option is set in the CodeView Options dialog box.
If the option is not set, the mouse cursor is not displayed while you are
debugging.
────────────────────────────────────────────────────────────────────────────
(This figure may be found in the printed book.)
Preparing a Debug Build
It's easy to create a debug version of a program so it can be examined with
CodeView.
Choose MASM Options in the Options menu; then select the Set Debug Options
button. This dialog box contains a variety of settings for a debug build.
Although most of the options can be set to your preference, you must check
the CodeView option under the Debug Information heading.
The CodeView Options command in the PWB Options menu provides a variety of
choices for configuring CodeView. These include two-monitor debugging,
memory allocation, and selecting the number of lines on the screen. For now,
use the default settings initially displayed.
For the assembler to build a program containing the necessary CodeView
information, you must check the Debug option, which is set in the dialog box
displayed by the Build Options command in the Options menu. You must also
select the CodeView option (which is on by default) in the Set Debug Options
dialog box accessed from the MASM Options command in the Options menu.
To demonstrate how CodeView works, set the debug options as listed above,
then rebuild the HELLO.ASM program using the Rebuild All command in the Make
menu.
Examining the Program
After your program has been built with the appropriate debug options, choose
the Debug command from the Run menu. PWB immediately transfers control to
CodeView, loading the current project as indicated in the program list.
When you switch from PWB to CodeView, the program appears in the Source
window. The Source command in the Options menu displays your program in one
of the following ways:
■ As source code from your MASM source-code file. This is the default
display.
■ As assembly language generated by CodeView disassembling the program's
executable file.
■ As a mix of these two, with the disassembled code following the
corresponding source code.
The mixed-code option is especially useful when your program contains macros
or directives that generate code; you can see how the assembler converted
them into machine instructions.
In addition to showing source code, commands in the View menu show windows
displaying memory, registers, and local variables. All windows are similar
to PWB windows; they can be scrolled, sized, and closed. You can have
multiple windows on one screen, displaying a variety of information. A list
of shortcut keys and buttons appears at the bottom of the screen.
Setting Watch Expressions and Breakpoints
A "watch expression" is a program variable that CodeView continually
monitors. Watch expressions are displayed using the Watch command from the
View menu. As the value of a variable changes, the value also changes in the
watch window.
To add a variable to the watch expression list, position the cursor anywhere
within the variable and choose the Add Watch command from the Watch menu.
You can also type the variable name in the dialog box. Remove watch
expressions using the Delete Watch command from the Watch menu, or position
the cursor on that expression's line in the Watch window and press CTRL+Y.
To set a watch variable in the HELLO.ASM file, use the cursor to highlight
the pMsg variable in the CodeView Source window. Then choose the Add Watch
command from the Watch menu. The pMsg variable appears in the Expression
text box. Press END to position the cursor at the end of the name, and then
type ,s (so that CodeView displays the data at this address as a string).
Press ENTER or click the OK button to add this variable to the Watch window.
The Watch window gives a "Watch Expression Not in Context" error until you
trace into the PutStr procedure.
CodeView also incorporates a temporary watch option called Quick Watch.
Highlight a variable in the Source window with the mouse or cursor. Choose
the Quick Watch command from the Watch menu. A dialog box appears giving the
current value of the variable. You can add any Quick Watch variable to the
watch window using the Add Watch dialog box option.
You can expand any structures or arrays that are set as watch expressions
(identified with a + in the Watch window) to show individual elements.
Position the cursor on the variable name and either double-click the left
mouse button or press ENTER (see Figure 3.9).
(This figure may be found in the printed book.)
A "breakpoint" is an instruction that tells CodeView to interrupt execution
at a certain location or when an expression becomes true.
Use breakpoints to cause execution of the program to pause before an error
occurs and to move quickly to a part of the program you want to trace. When
CodeView stops at a breakpoint, you can single-step or trace through
instructions until you find the problem.
Set a breakpoint by positioning the cursor on the line at which you want the
program to stop and then pressing F9. You can also choose the Set Breakpoint
command from the Watch menu. A dialog box presents a series of options for
setting types of breakpoints. You can modify or delete breakpoints using the
Edit Breakpoints command from the Watch menu.
Set a breakpoint in the HELLO.ASM file by moving the cursor in the CodeView
Source window to the line that reads
INVOKE PutStr, ADDR msg
From the Watch menu, choose the Set Breakpoint command. The number of the
line the cursor appears on is displayed in the dialog box. Press ENTER or
click the OK button to store the breakpoint. After the breakpoint has been
set on a line, that line is highlighted.
Running the Program Within CodeView
CodeView offers several ways to run a program. You can let the program
execute at full speed or view each line as it executes. Table 3.2 lists the
CodeView run commands.
Table 3.2 CodeView Run Commands
Name Use Key
────────────────────────────────────────────────────────────────────────────
Go Executes the program to the next breakpoint, error, or end of F5
the program
Trace Executes a single line F8
Step Executes a single line, but doesn't trace into functions F10
────────────────────────────────────────────────────────────────────────────
Enter run commands by pressing the appropriate key or clicking the commands
at the bottom of the screen. The Trace and Step commands highlight each line
as it executes. The Go command simply executes (without highlighting) until
the program stops at an error, a breakpoint, or the end. If you choose the
Animate option for the Go command, CodeView highlights each line as it
executes. To force execution to start at the beginning of the program, use
the Restart command in the Run menu.
You can either single-step through a program or use the Animate command in
the Run menu to step through the program automatically, highlighting each
line as it proceeds.
If a program requires arguments to be passed from the command line, these
arguments can be entered with the Set Runtime Arguments command from the Run
menu.
Running HELLO.EXE
To look at some of the CodeView commands while running HELLO.EXE, make the
Source window active by pressing F6 or by clicking its title bar. Then
choose the Restart command from the Run menu. Restart clears memory and
prepares the program to start execution at .STARTUP.
Press F5 or choose the Go button at the bottom of the screen to start the
program. The program executes until it reaches the breakpoint you set at the
INVOKE directive.
If you press F8 or the Trace button, CodeView executes and displays each
statement of PutStr. If you use F10 or the Step button, CodeView executes
PutStr without showing each step.
The variable pMsg is actually a pointer, so no value is displayed until
you execute the PutStr procedure. As you step through PutStr, the display
switches to the output screen each time a character is written to the
screen.
Because pMsg is also a local variable, it appears in the Local window with
all variables local to PutStr. You can expand local data in the Local and
Watch windows by double-clicking it.
Press F10 to finish stepping through the program. A dialog box informs you
that the program has completed execution normally. Press ENTER to clear the
dialog box and complete your debugging session.
Debugging HELLO.EXE
To see how CodeView deals with a bug, add these statements at the end of the
source code for this program:
mov ax, 0FFh
int 21h
Set the appropriate debug options, rebuild the program, and return to
CodeView.
Use F8 (Trace command) to execute the program. An execution error occurs
when the INT instruction is executed, because there is no interrupt function
corresponding to 0FFh.
Getting More Details
PWB, the assembler, the linker, NMAKE, and CodeView have additional features
and options beyond the scope of this introduction.
Refer to the Programmer's Guide for information about PWB, NMAKE, CodeView,
and other tools. Refer to the Reference for a quick reference to all
commands and options for the applications included with MASM.
You can access additional information about any component of the
Professional Development System through the Microsoft Advisor online
reference system. For a description of the online reference system, see
Chapter 4 of this manual.
Chapter 4 Using the Online Reference System
────────────────────────────────────────────────────────────────────────────
The Microsoft Macro Assembler (MASM) offers two types of online reference
systems:
■ The Microsoft Advisor, accessible from within the Programmer's
WorkBench (PWB) and CodeView environments
■ The QuickHelp program, accessed from the OS/2 or DOS command line
Both reference systems provide the same information about important features
of the Professional Development System, including language-specific
information and information about utilities like the CodeView debugger and
PWB.
The first section of this chapter, "Structure of the Microsoft Advisor,"
outlines the structure and contents of the online reference database. The
second section, "Navigating the Microsoft Advisor," takes you on a quick
tour of the system. The third section, "Using QuickHelp," explains how to
use the QuickHelp program and how it differs from the Microsoft Advisor.
Structure of the Microsoft Advisor
The Microsoft Advisor displays a table of contents of all online reference
files available with the Professional Development System. Choose the
Contents command from the Help menu to display the table of contents. From
the table of contents you can select any topic you want to know more about.
Figure 4.1 shows the table of contents screen.
(This figure may be found in the printed book.)
The Microsoft Advisor also displays indexes for each online reference file.
Choose the Index command from the Help menu to display the help topics, and
then select the topic whose index you want to search. The alphabet bar at
the top of the index screen allows direct access to a list of the index
topics starting with the letter you select.
Navigating through the Microsoft Advisor
You request information about a topic in a window by positioning the cursor
over it and pressing F1 or clicking the right mouse button once. The help
system then searches through the help files for information about the topic.
If it finds the topic, the help system displays information in the Help
window. If help cannot be found for a particular word or symbol, a message
informs you that no information is associated with the topic. Sometimes a
topic with the same name occurs in several help files. In such cases, a
dialog box is displayed in which you can select the context of the topic.
Using the Help Menu
The Help menu provides full access to the online reference system. All these
commands display information in the Help window:
Command Description
────────────────────────────────────────────────────────────────────────────
Contents Displays a global contents screen of the
topics in the help files.
Index Displays a global index list and
provides access to indexes for all
components of the online reference
system. (See Figure 4.2.)
Topic: Provides information about the topic the
cursor is currently on. If information
about the topic is available, the
topic's name is appended to the Topic:
command. Otherwise, this menu option is
grayed.
Help on Help Displays information about using the
online reference system itself.
Next Locates the next occurrence of a topic
name and displays the information
associated with it. Use this command to
get additional information about a topic
that appears in more than one help file.
(This figure may be found in the printed book.)
Using the F1 Key and the Mouse
The F1 key displays information about the MASM keyword or operator the
cursor is positioned on. You can also use the F1 key to directly access
information about the menu command currently highlighted or the PWB dialog
box currently displayed.
The mouse can perform the same function. Position the mouse cursor on the
command, dialog box item, or keyword, and click the right mouse button.
If the help system cannot find help for a particular word or symbol, a
message tells you so. Sometimes a topic with the same name occurs in several
help files. In such cases, a dialog box appears in which you can select the
context of the topic.
Figure 4.3 shows the help information for the Cut command from the Edit
menu.
(This figure may be found in the printed book.)
Using Hyperlinks
Hyperlinks are cross-references that connect related topic information.
Hyperlinks can be marked explicitly, or they can be implicit.
Hyperlinks marked with the < and > characters are called "buttons." You can
move through the online reference system using these buttons. Press TAB to
move the cursor to the next hyperlink button within the current Help window.
SHIFT+TAB moves the cursor back to the previous button. Typing any letter
moves the cursor to the next button that begins with the letter. Holding
SHIFT down and typing a letter moves the cursor backward.
The Microsoft Advisor also recognizes MASM keywords, constants defined by
MASM, and similar identifiers as hyperlinks, but they are unmarked. These
unmarked hyperlinks are recognized wherever they appear in the help text or
in your source code. You cannot move to an unmarked hyperlink with the TAB
key.
You can access a hyperlink from the keyboard or with the mouse by doing one
of the following:
■ Move the text cursor to the hyperlink and press F1
■ Position the mouse cursor over the hyperlink; then click the right
mouse button or double-click the left mouse button
You can also execute highlighted button hyperlinks by pressing ENTER or the
SPACEBAR.
Any of these actions displays information about the topic the cursor is
positioned on. If the topic isn't a hyperlink, a message informs you that no
information on the topic could be found.
────────────────────────────────────────────────────────────────────────────
NOTE
CodeView uses the right mouse button differently in the Source window.
Clicking the right button in the Source window executes the program to the
line the mouse was clicked on. However, once the Help window is displayed,
clicking the right mouse button selects hyperlinks.
────────────────────────────────────────────────────────────────────────────
Using Help Windows and Dialog Boxes
The Microsoft Advisor displays information in windows or dialog boxes. Help
windows and dialog boxes function the same as other windows and dialog boxes
found in PWB and CodeView. For a description of windows and dialog boxes,
refer to Chapter 3, "Using the Programmer's WorkBench."
Using the Help Window
The Help window displays tables of contents, indexes, and information about
selected topics. Some screens of information are larger than the Help
window; you can view information beyond the window borders with the scroll
bars or the cursor-movement keys. The -- symbol marks the end of information
in the Help window.
Navigating with Hyperlink Buttons - At the top of the Help window is a row
of buttons that is useful for moving through the reference system:
Button Description
────────────────────────────────────────────────────────────────────────────
<Up> Moves upward in the hierarchy of help
screens. Since information is ordered
from the general to the specific, this
button takes you to more general
information about the subject.
<Contents> Displays the table of contents. This
button always returns you to a known
point in the online reference
system.
<Index> Displays the index list. Selecting an
item from the list displays the index
for that category.
<Back> Moves to the last online reference
screen you viewed.
Frequently, screens about a particular topic are grouped together in a help
file. Press CTRL+F1 to display information about the next topic in the help
file.
Viewing the Previous Help Screen - The Microsoft Advisor remembers the last
20 help screens you've accessed. To return to a previous screen, use the
<Back> button, or hold down the ALT key and press F1 as many times as
necessary to return to the screen you want to see. The help screen that
appears is active; you can ask for help on any of its hyperlinks or topics.
You can always return to the global contents by pressing SHIFT+F1.
Copying and Pasting Information - You can easily copy any text that appears
in the Help window to another window. For example, to test an example
program in the Help window, just copy it to the Source window and assemble
it.
Keyboard
To copy and paste, follow these steps:
1. Move the cursor to the beginning of the text you want to select. Hold
down the SHIFT key and move the cursor to the end of the desired text.
The text is now highlighted.
2. Execute the Copy command: press ALT to activate the menus, E (Edit),
then C (Copy). Note that the menu lists the shortcut command
(CTRL+INS), which you can substitute for ALT+E, then C.
3. Press F6 to switch to another window. Position the cursor where you
want to insert the text and execute the Paste command: ALT+E, then P;
or use the SHIFT+INS shortcut. The text from the Help window is
inserted at the current cursor position.
Mouse
To copy and paste, follow these steps:
1. Click the left mouse button and drag the cursor (hold down the button
while moving the mouse) to select the text you want to copy.
2. Choose Copy from the Edit menu (or press CTRL+INS).
3. Move the mouse cursor to the location where you want to insert the
text, and click once. Then choose Paste from the Edit menu. The text
from the Help window is inserted at the current cursor position.
Closing the Help Window - To close the active Help window and return to the
Source window, do one of the following:
■ Press ESC
■ Click the Close button in the upper-left corner of the window with the
left mouse button
Using Help Dialog Boxes
Help dialog boxes contain information about menu commands and their dialog
boxes. A help dialog box differs from a Help window in that it is displayed
over the Source window and any other open windows. You must close a help
dialog box before you can execute menu commands. Clicking the Cancel button
in the lower-right portion of the dialog box closes the help dialog box.
To view information about any PWB dialog box, do one of the following:
■ Press F1
■ Click the help button in the dialog box with the left mouse button
Either of these commands causes a help dialog box to appear. To close a help
dialog box, do one of the following:
■ Press ESC
■ Click the Cancel button in the lower-right portion of the dialog box
with the left mouse button
Accessing Different Types of Information
This section presents some ways to access the different types of information
available within the online reference system.
Keyword Information
To get information about any keyword, operator, or symbolic constant, first
display the appropriate index for the keyword. Then select the keyword's
first letter from the index, scroll down the list of entries, and select the
topic hyperlink. If you know the exact name of a keyword, it may be quicker
to type it in the Source window and press F1.
You can also view information about keywords using the arg command. Type the
keyword in the arg command dialog box. Then press F1. If you have the arg
function assigned to alt+a, the following displays help about the ADC (add
with carry) command:
alt+a ADC F1
Figure 4.4 shows the information screen that then appears.
When information about a keyword is shown in the Help window, additional
hyperlink buttons may be displayed:
■ <Detail> provides a detailed explanation of the keyword. When the
information is displayed, the button changes to <Summary>. Click this
button to return to the summarized information about the keyword.
■ <Example> displays MASM source code that provides an example of how
the keyword is used.
■ <Key> explains symbols used in instruction encodings.
(This figure may be found in the printed book.)
Topical Information
The online reference system is useful when you want an overview of available
reference topics or when you have only a general idea of what information
you need. Start with the global contents screen and select any hyperlinks
that relate to the topic. Then move through the hyperlinks until you locate
the information you need.
Menu and Dialog-Box Information
You can get information about any menu command or dialog box by pressing F1
when the menu command is highlighted or when the dialog box is displayed.
Error Information
The Microsoft Advisor provides information about assembler and linker error
messages.
Keyboard
To find the meaning of an error message:
1. Press F6 to move the cursor to the error window
2. Position the cursor on the error number and press F1
Mouse
To find the meaning of an error message:
1. Position the mouse cursor on the error number
2. Click the right mouse button
To get help about error messages directly from the PWB Source window, type
the arg command with the error number and its alphabetic prefix, and then
press F1.
Specifying Temporary Help Files
You can instruct the Microsoft Advisor to search help files that you specify
before searching the help files specified in the HELPFILES environment
variable. For example, you may want to access the C help files first when
writing a mixedlanguage program.
Select the Environment command in the PWB Options menu. Type the path for
the help files you want searched first in the text box that appears. These
files are searched first only during your current session.
Using QuickHelp
QuickHelp is a separate utility that works like the Microsoft Advisor. It
displays information in the same way and can access any Microsoft Advisor
help file. Use QuickHelp if you use an editor other than PWB, or if you
prefer to use command-line utilities. QuickHelp also supplies convenient
access to help when you aren't running PWB.
The following sections explain how to call QuickHelp from the command line.
You can use these same command-line calls to access QuickHelp from within
any program that lets you pass commands to DOS or OS/2.
Entering and Exiting QuickHelp
If you installed documentation files during SETUP, you can run QuickHelp by
typing QH at the DOS or OS/2 command line. You can also specify the name
of an application, such as
QH LIB.EXE
To get QuickHelp about the mov command, type
QH mov
If your editor supports macros, you can write a macro that reads the desired
help topic from the editor's command line or from the text-entry window,
then appends it to QH and passes the result to the operating system.
QuickHelp can also display information about run-time errors. Type the error
number with its alphabetic prefix after the QH command at the DOS or OS/2
command line.
To exit QuickHelp, choose the Exit command from the File menu.
Using /HELP
You can get immediate information about major components of MASM by using
/HELP.
For example, to learn about the LIB utility, type
LIB /HELP
QuickHelp immediately displays information about LIB.
Specifying Help Files
QuickHelp searches for .HLP files according to a few simple rules.
Understanding these rules helps you quickly access only the .HLP files you
want. The more specific the search, the faster QuickHelp starts.
You tell QuickHelp which .HLP files to open by specifying files or
directories on the command line or in environment variables. To save time,
most programmers specify commonly used .HLP files in the HELPFILES or QH
environment variables.
You can specify either an entire directory or an individual file. If you
specify a directory, QuickHelp opens every .HLP file in that directory.
QuickHelp searches for .HLP files in the following order:
1. If you specify a .HLP file or directory on the command line, QuickHelp
first searches that file or directory.
2. QuickHelp next searches for files and directories specified in the
HELPFILES and QH environment variables.
3. If you do not specify any .HLP files on the command line, and
QuickHelp cannot find any .HLP files in the HELPFILES and QH
directories, QuickHelp searches the following directories and
environment variables in the order shown:
c:\qh
DPATH
PATH
BOOKSHELF (OS/2 only)
Note that QuickHelp does not search the current directory unless you specify
that directory in one of the environment search paths.
The List Database command from the File menu displays a list of currently
open help files. To open additional help files
■ Choose the Open Database command from the File menu.
■ Type in the fully qualified pathname of the help file to be opened in
the dialog box that appears. You can specify all help files in a
directory by typing *.HLP.
■ Press ENTER or click the OK button with the left mouse button.
To close an open help file
■ Choose the Close Database command from the File menu.
■ Use the mouse or keyboard to select the help file you want to close
from the list of help files displayed in the menu.
Displaying a Topic
You can view information about a topic by using the Search command from the
View menu. When topic information is displayed, it is shown in the same
format as information presented by the Microsoft Advisor.
To display a topic from any of the open help files:
1. Choose the Search command from the View menu.
2. Type in the topic you want information on in the Search dialog box
(the search is not case-sensitive).
3. Press ENTER or click the OK button with the left mouse button.
QuickHelp begins searching for the topic in the open help files. If the
topic cannot be found, a dialog box informs you that the search failed. If
the search is successful, information about the topic is displayed in the
QuickHelp window.
Navigating through the Topics
A series of commands in the View menu allows you to display topics
selectively. These commands include the following:
Command Description
────────────────────────────────────────────────────────────────────────────
View History Displays a list of all of the topics
that have recently been displayed. To
view a topic in the list, select it and
click the right mouse button, or press
ENTER.
View Last Displays the last topic you looked at.
View Back Moves backward one topic in the help
file.
View Next Displays the next topic in the help file.
Using the QuickHelp Window
The QuickHelp window (see Figure 4.5) is similar in function to the
Microsoft Advisor Help window, described earlier in this chapter.
Information that doesn't fully fit in a window can be scrolled, and
hyperlinks are used to display additional information.
(This figure may be found in the printed book.)
Copying and Pasting in QuickHelp
In order to transfer information, you must first specify a new file with the
Rename Paste File command from the File menu. Once the file is specified,
choose either the Current Window or the Current Topic command from the Paste
menu to transfer the text to that file. Be sure to specify a new file when
you paste, since QuickHelp overwrites text in an existing file.
More About QuickHelp
In addition to the features described above, QuickHelp has a variety of
other options, such as changing the appearance of the Help window, searching
for text within topics, and controlling the function of the right mouse
button.
To learn more about QuickHelp features, refer to the Reference for a list of
QuickHelp options. For online information, make sure the QH.HLP file is
loaded, then do one of the following:
■ Press F1 to view QuickHelp's online reference
■ Choose a menu command and press F1 or click the right mouse button to
get information about the command
INDEX
──────────────────────────────────────────────────────────────────────────
A
Anchors in text files
ASMEX environment variable
Assembling and linking
browser command-line options
build options
building programs
debug build
debug options
program list
clearing
setting
release options
running programs
AUTOEXEC.BAT, modifying
B
Bookmarks in text files
Bound software
Breakpoints, setting
BRIEF.INI
Browse menu
Buffers parameter in CONFIG.SYS
Build options, setting
Buttons
command
hyperlink
option
C
Check boxes
CodeView
breakpoints, setting
configuring extended memory
debug build
DOS compatibility box
examining programs in
executing programs in
generating information for
mouse buttons, use of
OS/2
Quick Watch option
run commands
source window
using
watch expressions
Command buttons
Compiling Results command
CONFIG.SYS, modifying
Configuration files
D
Debug options
Debugging
Dialog boxes
described
online reference
Directories
bound mode
protected mode
real mode
E
Editor, PWB
advanced features
changing key assignments
changing settings
creating macros
customizing
defining blocks
moving cursor in
reconfiguring
saving files
searching and replacing
setting anchors
setting bookmarks
text-selection modes
writing and saving procedures
Environment variables
Errors, getting help on
F
F1 key
Features, new
Files parameter in CONFIG.SYS
H
Hard disk, choosing
Help files
specifying
Help information
copying and pasting in QuickHelp
copying and pasting with Microsoft Advisor
Help menu
commands
using
/HELP
HELPFILES environment variable
HIMEM.SYS
Hyperlinks
I
INCLUDE environment variable
INIT environment variable
Installing MASM
mouse driver, copying
operating system, choosing
Programmer's WorkBench
K
Keyboard, changing assignments
Keys, shortcut
L
LIBPATH environment variable
Linking
List boxes
M
Macros, creating
Make menu
Makefile
MASM.EXE, installing
Memory
configuring extended
required for MASM
Menus
Browse
choosing commands
closing
Help
Make
Options
shortcut keys
View
Watch
ML.EXE
Mouse support
MSHELP.DLL
N
New features
NEW-CONF.SYS
NEW-VARS.BAT
NEW-VARS.CMD
Next Error command
O
Online reference system
accessing
closing the help window
copying and pasting text
dialog boxes
error information
Help menu
hyperlinks
Back button
Contents
defined
Index button
keyword information
Up button
keyword information
menu information
temporary file, specifying
topical information
using mouse in
viewing previous help screen
Operating systems
choosing
DOS
defined
selecting during setup
setting up directories in
OS/2
defined
selecting during setup
setting up directories in
Option buttons
Options menu
P
PATH environment variable
Previous Error command
Procedures, writing and saving
Program list
clearing
setting
Programmer's WorkBench (PWB)
accessing Browser from
assembling programs in
building programs in
choosing menu commands
customizing
debugging in
described
Editor settings
features
getting help
installing
macros, writing
menus
screen, illustrated
selecting text in
setting options for
source files, specifying
startup options
using
Protected-mode directories
Q
QH environment variable
QuickHelp
/HELP
copying and pasting
described
entering and exiting
error information
navigating through topics
searching for topics
specifying .HLP files
using
window
R
RAMDRIVE program
Real-mode directories
Release options
Run menu
S
Saving files
Searching and replacing
Set Error command
SETUP.EXE
changing your response
described
file compression
location on disks
responding to prompts
running
system-configuration files
Shortcut keys
SMARTDRV program
Source Browser
commands
defining databases
generating information for
PWBRMAKE.EXE
using
STARTUP.CMD, modifying
System configuration
System requirements
T
TEMP environment variable
Text boxes
Text selection
TOOLS.INI
macros saved in
modifying
TOOLS.PRE
V
View menu
W
Watch menu
Windows, PWB
components
described
help
closing
using
QuickHelp, using
Writing and saving procedures