Got this content from http://csku.blogspot.com/2009/02/how-to-run-assembly-programs-in-visual.html but it looks like it was copied from some Irvine resource.
How to run Assembly Programs in Visual Studio
First, you must
install some version of Visual Studio or Visual C++ Express:
Downloading Microsoft
Express Editions
Downloading and
installing the Microsoft Assembler 8.0: Visit Microsoft's MASM 8.0 download
site. Follow the download and installation instructions on the
Microsoft page. If the link is broken, please let us know by email. Note that this MASM
download only works with Visual C++ 2005 Express. MASM 8.0 is almost identical
to MASM 9.0.
Next: Install the Example Programs (Higgins note – you can also
get these files from me: 6th_ed_examples
which is a zip file)
The latest copy of the
example programs are listed below.
Example programs and link libraries (designed for
Visual Studio 2008)New |
Example programs and link libraries (designed for
Visual Studio 2005) |
The examples are stored
in a self-extracting archive file that automatically extracts to the c:\Irvine
folder. Unless you have some objection to using that location, do not alter
the path. (Lab managers: you can designate c:\Irvine directory as read-only.)
If you plan to change the installation location, read our instructions relating
to changing project properties.
The following files
will be copied into the c:\Irvine directory:
Filename |
Description |
GraphWin.inc |
Include file for
writing Windows applications |
Irvine16.inc |
Include file used
with the Irvine16 link library (16-bit applications) |
Irvine16.lib |
16-bit link function
library used with this book |
Irvine32.inc |
Include file used
with the Irvine32 link library (32-bit applications) |
Link16.exe |
16-bit linker |
Irvine32.lib |
32-bit link function
library used with this book |
Macros.inc |
Include file
containing macros (explained in Chapter 10) |
SmallWin.inc |
Small-sized include
file, used by Irvine32.inc |
make16.bat |
Batch file for
building 16-bit applications |
VirtualKeys.inc |
Keyboard code
definitions file, used by Irvine32.inc |
A subdirectory named
Examples will contain all the example programs shown in the book.
Building a Sample Assembly Language Program
Preliminary Step: Set Tab Size to 5
Start Visual C++
Express, and select Options from the Tools menu. Select Text
Editor, Select All Languages, and select Tabs: (here is one
screen shot)
Set the Tab Size and
Indent Size to 5.
Opening a Project
Visual Studio and
Visual C++ Express require assembly language source files to belong to a project,
which is a kind of container. A project holds configuration information
such as the locations of the assembler, linker, and required libraries. A
project has its own folder, and it holds the names and locations of all files
belonging to it. We have created a sample project folder in the c:\Irvine\Examples
directory, and its name is Project_Sample.
Do the following
steps, in order:
Tip: If the Solution Explorer window is
not visible, select Solution Explorer from the View menu. Also,
if you do not see main.asm in the Solution Explorer window,
look at the tabs along the bottom of the window. Click the Solution
Explorer tab. |
You should see the
following program in the editor window:
TITLE MASM Template
(main.asm)
|
Later, we'll show you
how to copy this program and use it as a starting point to write your own
programs.
Build the Program
Higgins note: I needed to copy include and object files from Irvine_6th_ed_examples
directory into my project directory as shown below
Next, you will build
(assemble and link) the sample program:
In the output window
at the bottom of the screen, you should see messages similar to the following,
indicating the build progress:
1>------ Build started: Project: Project,
Configuration: Debug Win32 ------ |
If you do not see
these messages, the project has probably not been modified since it was last
built. No problem--just add a space somewhere in the
document, save it, and try the Build command again.
Run the Program
Select Start
without Debugging from the Debug menu. The following console window
should appear, although your window will be larger than the one shown here:
The "Press any
key to continue..." message is automatically generated by Visual C++
Express.
Congratulations, you
have just run your first Assembly Language program.
Press any key to close
the Console window.
When you assembled
and linked the project, a file named Project.exe was created inside
the project's \Debug folder. This is the file that executes when you run the
project. You can execute Project.exe by double-clicking its name inside
Windows Explorer, but it will just flash on the screen and disappear. That is
because Windows Explorer does not pause the display
before closing the command window. |
Creating New Projects of Your Own
Before long, you will
want to create your own projects. The easiest way to do this is to copy the
entire c:\Irvine\Examples\Project_Sample folder to a new location. Copy
it to a folder in which you have read/write permissions. (If you're working in
a college computer lab, a useful location is a portable USB drive. Then you can
modify the program, build, and run it again.
Step 5: Running the Sample Program in Debug Mode
In this step, you will
set a breakpoint inside the sample program. Then you will use the Visual C++
debugger to step through the program's execution one statement at a time.
Registers
If you want to display
the CPU registers, do the following: Start debugging the program, then select Windows
from the Debug menu. Select Registers from the drop-down list.
The bottom window will display the register contents. Right click this window
and check the item Flags to enable the display of conditional flags.
You can interrupt a
debugging session at any time by selecting Stop Debugging from the Debug
menu. You can do the same by clicking the blue square button on the toolbar. To
remove a breakpoint from the program, click on the red dot so that it
disappears.
Setting a BreakPoint
If you set a
breakpoint in a program, you can use the debugger to execute the program a full
speed (more or less) until it reaches the breakpoint. At that point, the
debugger drops into single-step mode.
You can remove a
breakpoint by clicking its red dot with the mouse. Take a few minutes to
experiment with the Debug menu commands. Set more breakpoints and run the
program again. For the time being, you can use the F11 key to step through the
program in the same way the F10 key did.
Building and Running Other Programs
Suppose you want to
run another example program, or possibly create your own program. You can either edit and modify main.asm, or you can remove main.asm
from the project and insert some other .asm file into
the project.
Adding a File to a Project
The easiest way to add
an assembly language source file to an open project is to drag its filename
with the mouse from a Windows Explorer window onto the name of your project in
the Solution Explorer window. A reference to the file (not a copy) will be
inserted in your project's directory. Try this now:
Here is what you
should see in the Console window, except that only your EAX register will have
the same value as ours:
When you press a key,
the console window will close.
Copying a source file
If you want to make a
copy of an existing file, use Windows Explorer to copy the file into your
project directory. Then, right-click the project name in
Solution Explorer, select Add, select Existing Item, and select the
filename. This screen looks like this
(You’ll also have to remove
any other files that define a main proc, in this case main.asm.)
Rebuild project and run.
Alternatively,
I have just pasted the contents of the main proc from
dumpregs program into the example above
Source is:
INCLUDE Irvine32.inc
.data
myMessage BYTE "MASM program
example",0dh,0ah,0
.code
main PROC
call Clrscr
mov edx,OFFSET myMessage
call WriteString
mov eax,10000h ; EAX =
10000h
add eax,40000h ; EAX = 50000h
sub eax,20000h ; EAX = 30000h
call DumpRegs
exit
main ENDP
END main