0% found this document useful (0 votes)
17 views

Lab Supplement 1 Debug Assembly Language

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views

Lab Supplement 1 Debug Assembly Language

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 19

Lab Supplement1 – Debug

Assembly Language
Lab Assignment - Questions
1. Write an Assembly command to add two numbers, 3 and
8, and save the result into Register BX. (show the screen
shot of your complete code and results.)
2. Write an Assembly command using two registers AX
and BX that adds 5 and 7 and saves the result into BX.
(show the screen shot of your complete code and
results.)
3. (student will need to do some research for this question)
Write an Assembly program to display “Hello
World”, compile it, save it to the disk and run it from the
DOS prompt. (show the screen shot of your complete
code and results.)
Check List
 The first step in using debug is to check if you are using
an operating system that is 32bits or 64bits.
 32 bit operating systems still include debug and 64bit
operating systems no longer support debug.
 To work around this we will download a program called
DOS Box which is free and easy to use for our debugging.
Lets Begin!!!
 Download DOS Box from www.dosbox.com and then
install it.
 8086 files have already been pre-installed, these files will
allow us to use DOS Box on our 64bit Windows 7
operating systems.
 Once installed go ahead and click the DOSBox icon to
start it up.
Let’s start writing Assembly code
DOSBox start up window
 First we need to tell DOSBox where our 8086 folder that
contains our microprocessing debug files.
 Second we enter the following to direct DOSBox to get
them. You will notice that DOSBox has this line already
Z:\>…from here we enter the following.
 mount c c:\8086 (we must first mount the c drive then point to
the folder where 8086 files are at) then hit enter
 Next enter
 c: (to navigate to our c drive) then type the next
 debug (now we are ready to start our assembly commands
 What your screen should look like
Debug Tutorial
 Once your set up in debug type in ? After the -.
 -? (this will show all of the debug command list)

 On the following slide is the command list


 Debug commands

 A- Assembles 8086/8088 mnemonics.


C- Compares two areas of memory.
D- Displays the contents of memory locations.
E- Enters data into specified memory locations.
F- Fills memory locations with specified values.
G- Runs an executable program from within debug.
H- Performs Hexadecimal math on two Hex numbers.
i- reads one byte of data from the specified port.
L- loads the contents of a disk file or sectors into memory.
M- moves or copies the contents of memory locations.
Commands continued
 N- Names a file for the L or w command. (load or write)
O- outputs one byte of data to the specified port.
P- Executes a loop, a repeated string instruction, a software interrupt, or
a subroutine.
Q- Quits a debug session.
R- Displays or modifies the contents of the cpu registers.
S- Searches the contents of memory for the specified string of data.
T- Executes one instruction at a time and dumps the contents of all the
registers to the screen, then displays the next instruction to be executed.
U- Disassembles machine code into the mnemonic form of the program.

W- Writes the data in memory to the disk. The name given the file is the
name entered with the n (name) command. The file size is given by
setting the BX:CX register to the number of bytes to be saved.
?- Display a help screen on some versions of debug.
Tutorial – Example 1
 For our first example we are going to add two numbers
and save them into register AX. Type the following
 mov ax,2 (moves the value 2 into register ax) hit enter.
 add ax,2 (adds value 2 to what is already in register ax) hit
enter. Then hit enter again to get the – line. Then type
 r ( this will show us all the registers AX, BX, CX etc.) next type
 t ( this will trace the values in the register AX)
 t (again type this and you should notice a new value in AX).

Once finished you can type q to quit


Tutorial - Example 2
 For our second example we are going to add two integers
in separate registers and store the result.
 As before type
 a (which will give the next line we can use) hit enter and type
 mov cx,2 (hit enter)
 mov dx,2 (hit enter)
 add dx, cx (hit enter) until you get the – then type
 r ( to show the registers)
 t (to trace the value in cx)
 t (again to trace the value in dx)
 t (to trace the result in cx)
 Once finished you can type q to quit
What is Debug
 Debug is a method of looking at portions of your
computer and writing assembly code to perform certain
tasks on your computer.
 Debug can act as an assembler, disassembler, or hex
dump program allowing users to interactively examine
memory contents (in assembly language, hexadecimal or
ASCII), make changes, and selectively execute COM,
EXE and other file types.
 The debug command is an external command and is
available in the below Microsoft operating systems.
What is Debug available in
 All Versions of MS-DOS, Windows 95, Windows 98
Windows ME, Windows NT, Windows 2000 ,Windows
XP and 32 bit systems
 Not available in 64 bit systems.
What is Assembly Language
 assembly language is a low-level programming language
for a computer, microcontroller, or other programmable
device, in which each statement corresponds to a single
machine code instruction.
 Each assembly language is specific to a particular
computer architecture, in contrast to most high-level
programming languages, which are generally portable
across multiple systems.
Assembly language continued
 Assembly language is converted into executable machine
code by a utility program referred to as an assembler; the
conversion process is referred to as assembly, or
assembling the code.
 Assembly language uses a mnemonic to represent each
low-level machine operation or opcode.
 Some opcodes require one or more operands as part of the
instruction, and most assemblers can take labels and
symbols as operands to represent addresses and constants,
instead of hard coding them into the program.
Assembler
 An assembler creates object code by translating assembly
instruction mnemonics into opcodes, and by resolving
symbolic names for memory locations and other entities.
 The use of symbolic references is a key feature of
assemblers, saving tedious calculations and manual
address updates after program modifications.
 Most assemblers also include macro facilities for
performing textual substitution—e.g., to generate common
short sequences of instructions as inline, instead of called
subroutines.
Assembler continued
 Assemblers have been available since the 1950s and are
far simpler to write than compilers for high-level
languages as each mnemonic instruction / address mode
combination translates directly into a single machine
language opcode.
 Modern assemblers, especially for RISC architectures,
such as SPARC or POWER, as well as x86 and x86-64,
optimize Instruction scheduling to exploit the CPU
pipeline efficiently.
DEBUG/ASSEMBLY TUTORIAL
 For an in depth tutorial go to the following link
 http://www.armory.com/~rstevew/Public/Tutor/Debug/
debug1.htm

 This is a link to a complete list of assembly language


commands
 http://en.wikipedia.org/wiki/X86_instruction_listings

You might also like