http://www.intelligent-systems.info/classes/ee360/tutorial.htm
2.
Unzip the package and run install.exe

3.
Set the path to the compiler. Open
“My computer”, right click and select “Properties”.
Select “Advanced” -> “Environment variables”->”Path”. Click “Edit” and
add “;c:\masm32\bin” to the path

4.
Check the installation by opening
the command prompt window
(Start->Run->cmd)
(Start->Run->cmd)

and typing ML
at the command prompt

5.
Download 16-bit version of the link.exe
from the Microsoft’s website
Copy this file to
C:\MASM32\BIN and run it. Answer Yes when
asked
whether to overwrite existing files.
6.
Download Code View Debugger
Unzip all files to c:\masm32\bin
7.
Now you can use almost any text
editor to create an assembly program. In this example, we will use Microsoft’s
EDIT. Type “edit example1.asm” on the command prompt
and enter the text of the program.

Save the file by “Alt-F”,”Alt+S”. Exit “Alt-F”,“Alt-X”
8.
Compile and link the assembly file
by issuing “ml /Zi example1.asm”

9.
Now lets
start and configure the Code View debugger. Type “cv
example1.exe’ at the command prompt.
Enter “Alt-W” and make
sure that you have the following windows on the screen:
-
Code 1
-
Registers
-
Memory 1
Press “Alt-F5” to
arrange the windows on the screen.

Now lets
set the options. “Alt-O” -> Preferences. Set the options as shown
and click
“ok”.

Again, “Alt-O” ->
“Source 1 window”

“Alt-O” - >”Memory
1 window”

The configuration is
now complete.
10.
Lets look at the program.



11.
Now lets
step through the program and observe execution of each instruction.
-
Press “F10”.
-
The debugger will show execution
of the first line of the prolog.
-
Press “F10” until instruction “MOV
AX,0” is highlighted. This is the first instruction
of your program.

Observe the value in
the register EAX. Register AX contains number 09DFH.

Now press “F10”. The
debugger will execute the highlighted instruction.
Note the change in the
content of EAX and the fact that the register has been highlighted by
the
debugger, indicating the change.

The highlighting the
code window moved to the next instruction.
Note that the line of
the source code “MOV AL, VAR1” became
“MOV AL, [000C] where 000CH is the actual offset of VAR1 in the data segment. You can check that this is true by checking the content of memory location DS:000CH in the data window.
“MOV AL, [000C] where 000CH is the actual offset of VAR1 in the data segment. You can check that this is true by checking the content of memory location DS:000CH in the data window.
Now execute this
instruction by pressing “F10”. Content of the register AL changed,
taking the
value from the VAR1.

The next instruction
is “MOV BX, OFFSET VAR2”. VAR2 follows VAR1 in memory and has offset of
000DH.
This is the value that will be placed into the BX upon execution of
this
instruction. Press “F10” to execute.

The following
instruction “MOV [BX], AL” will copy the content of AL into the
memory
location pointed by BX within the data segment. After the previous
instruction
BX contains the offset of the first byte of VAR2 or 000DH. That is
where the
data from AL will
appear. Press “F10” to execute.
Note the debugger also
highlighted changes in the data window.

Instruction “MOV
[BX+1], AL” will copy the content of the register AL into the memory
location
with offset equal whatever the number is in BX plus 1. In our case
BX=000DH,
then the offset is 000DH+0001H=000EH. That is the second byte of the
VAR2.
Press “F10” to execute. Note the change in the memory content.

Instruction “MOV EAX,
12345678H” will place number 12345678H into the register EAX. Press
“F10” to
execute.

The instruction “MOV
VAR3, EAX” became
“MOV DWORD PTR [000F], EAX”.
“MOV DWORD PTR [000F], EAX”.
VAR3 has been replaced
by the actual offset (000FH) of VAR3 in the data memory. This
instruction will
take the content of the EAX and place into the four consecutive bytes
of memory
(a 32-bit variable) starting with the offset 000FH. Press “F10” to
execute.

That was the last
instruction of the user program. The remaining instructions are
generated by
the .EXIT directive and serve to terminate the program. Press “F10”
until the
process terminates.

Still not clear how to
work with the CodeView debugger?
Here is
additional tutorials you can go through.
CodeView tutorial
Debugging