Vous êtes sur la page 1sur 6

Middle Technical University Digital Controller Lab.

Electrical Engineering Technical College Third Stage


Electrical Power Technical Engineering Dept. Mohammed D. Altamemi

Experiment-1
Introduction to Microprocessors by using an emulator: EMU8086
1-1 Object:
Introduction to Assembly Language Tools and Familiarization with Emu8086
environment. and to be able to understand Data Representation and perform
conversions from one system to another.

2-1 Theory:
Introduction to Assembly Language Tools:
Software tools are used for editing, assembling, linking, and debugging
assembly language programming. You will need an assembler, a linker, a debugger,
and an editor. These tools are briefly explained below.
Assembler An assembler:
is a program that converts source-code programs written in assembly language
into object files in machine language. Popular assemblers have emerged over the
years for the Intel family of processors. These include MASM (Macro Assembler
from Microsoft), TASM (Turbo Assembler from Borland), NASM (Netwide
Assembler for both Windows and Linux), and GNU assembler distributed by the free
software foundation.
Linker A linker:
is a program that combines your program's object file created by the assembler
with other object files and link libraries, and produces a single executable program.
Debugger A debugger:
is a program that allows you to trace the execution of a program and examine
the content of registers and memory.
Editor:
You need a text editor to create assembly language source files. You can use
NotePad , or any other editor that produces plain ASCII text files.
Emu8086:
Emu8086 combines an advanced source editor, assembler, disassemble and
software emulator (Virtual PC) with debugger. It compiles the source code and
executes it on emulator step by step. Visual interface is very easy to work with. You
can watch registers, flags and memory while your program executes. Arithmetic &
Logical Unit (ALU) shows the internal work of the central processor unit (CPU).
Emulator runs programs on a Virtual PC, this completely blocks your program from
accessing real hardware, such as hard-drives and memory, since your assembly code
runs on a virtual machine, this makes debugging much easier. 8086 machine code is
fully compatible with all next generations of Intel's microprocessors, including
Pentium II and Pentium 4. This makes 8086 code very portable, since it runs both on
Middle Technical University Digital Controller Lab.
Electrical Engineering Technical College Third Stage
Electrical Power Technical Engineering Dept. Mohammed D. Altamemi

ancient and on the modern computer systems. Another advantage of 8086 instruction
set is that it is much smaller, and thus easier to learn.
EMU8086 Source Editor:
The source editor of EMU86 is a special purpose editor which identifies the
8086 mnemonics, hexadecimal numbers and labels by different colors as seen in
Figure (1-1).

(a) (b)
Figure (1-1) a) EMU8086 Source Editor, and b) assembler status report windows

The compile button on the taskbar starts assembling and linking of the source
file. A report window is opened after the assembling process is completed.
Figure (1-2) shows the emulator of 8086 which gets opened by clicking on emulate
button.

Figure (1-2) first.exe in the emulator window of EMU8086 debugging environment

Emu8086 environment contains templates to generate command and executable


files. Another benefit of Emul8086 is its emulation of a complete system, including
Middle Technical University Digital Controller Lab.
Electrical Engineering Technical College Third Stage
Electrical Power Technical Engineering Dept. Mohammed D. Altamemi

the floppy disk, memory, CPU, and I/O ports, which raises opportunity to write
custom bios and boot programs together with all other coding of a system. Moreover,
its help is quite useful even for a beginner of asm programming.

Data Representation:

Before going into the details of assembly language programming, it is important


that you master skills and develop fluency about data representation. Computer data
can be represented in a variety of ways. We will examine the content of memory and
registers at the machine level. We will use the binary, decimal, and hexadecimal
number systems.

1. Decimal System:

Most people today use decimal representation to count. In the decimal system
there are 10 digits:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9

These digits can represent any value, for example: 754.

The value is formed by the sum of each digit, multiplied by the base (in this
case it is 10 because there are 10 digits in decimal system) in power of digit position
(counting from zero):

Position of each digit is very important! for example if you place "7" to the end:
547 it will be another value.

Important note: any number in power of zero is 1, even zero in power of zero is 1:

2. Binary System:

Computers are not as smart as humans are (or not yet), it's easy to make an
electronic machine with two states: on and off, or 1 and 0. Computers use binary
system, binary system uses 2 digits: 0, 1 and thus the base is 2. Each digit in a binary
Middle Technical University Digital Controller Lab.
Electrical Engineering Technical College Third Stage
Electrical Power Technical Engineering Dept. Mohammed D. Altamemi

number is called a BIT, 4 bits form a NIBBLE, 8 bits form a BYTE, two bytes form
a WORD, two words form a DOUBLE WORD (rarely used).

There is a convention to add "b" in the end of a binary number, this way we
can determine that 101b is a binary number with decimal value of 5. The binary
number 10100101b equals to decimal value of 165.

3. Hexadecimal System:

Hexadecimal System uses 16 digits: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F


and thus the base is 16. Hexadecimal numbers are compact and easy to read. There is
a convention to add "h" in the end of a hexadecimal number, this way we can
determine that 5Fh is a hexadecimal number with decimal value of 95. We also add
"0" (zero) in the beginning of hexadecimal numbers that begin with a letter (A..F),
for example 0E120h.

The hexadecimal number 1234h is equal to decimal value of 4660:

It is very easy to convert numbers from binary system to hexadecimal system


and vice-versa, every nibble (4 bits) can be converted to a hexadecimal digit using
this table:
Middle Technical University Digital Controller Lab.
Electrical Engineering Technical College Third Stage
Electrical Power Technical Engineering Dept. Mohammed D. Altamemi

4. Signed Integers: 2’s Complement Notation

In mathematics, the negative of a number n is the value when added to n


produces zero. For example: 3 + ( - 3) = 0.

Programs often include both subtraction and addition operations. However, the
CPU only performs addition internally. When subtracting A – B, the CPU performs A
+ (-B). For example, to subtract 6 – 4, the CPU does 6 + (-4).

When working with binary numbers, how does the CPU compute the negative
of a number? The answer is that the CPU computes the 2’s complement. The 2’s
complement is the negative of a number. For example, consider the following 8-bit
binary number: 00010110, which is equal to 22 in decimal. The 2’s complement is
obtained by reversing each bit of a binary number (called the 1’s complement) and
then adding 1. For example, 2’s complement of 00010110 = 11101001 (1’s
complement) + 1 = 11101010 The carry is 1, but it is ignored, since we are
representing the number in 8 bits Since 00010110 in binary = 22 in decimal, then
11101010 in binary = - 22 in decimal.
Middle Technical University Digital Controller Lab.
Electrical Engineering Technical College Third Stage
Electrical Power Technical Engineering Dept. Mohammed D. Altamemi

3-1 Procedure:
Part I: Use Emu8086 to make the following calculations:

10110011b = ? d

5A2Ch = ? d

45d = ? h

1. Please, first , do whole calculations manually.


2. Start Emu8086 by selecting its icon from the start menu, or by running
Emu8086.exe
3. Choose “Math” and specify “Base Convertor” in emu8086.
4. Enter one of the numbers in the appropriate box for the number system type.
5. Please, compare your results with the results “base convertor” produced.

Part II : Use EMU8086 to evaluate an expressions (0FFFFh *10h +0FFFFh)

1. Please, first , do whole calculations manually.


2. Choose “Math” and specify “Multi Base Calculator” in emu8086.
3. Enter the expression in Calculator and then press in the Keyboard Enter.
4. Please compare your results with the results “base convertor” produced. Is it
same or not? Please explain clearly.
4-1 Discussions:

1. Name four software tools used for assembly language programming.


2. What is an Emulator?
3. Do the following calculations both using EMU8086 and manually. Are the results
same for two ? Note that the followings are signed integers
a) (456)8 = (? ) 2.
b) 045FH = (?)
c) A27DH = (?)8
d) 110010112 = (?)H
4. Evaluate the following calculations both using EMU8086 and manually. Are the
results same for two?
a) 01111h *0FFFFh - 0FFFFh
b) 00FFh + 0FF00h – 0001h * 10ABh
c) ABCDh - 1FF2h
d) 0255h + FDABh
5. Indicate the sign for each of the following 16-bit signed hex integers:
a) 7FB9 c) 8123 b) D000 d) 6FFF
6. Find out the largest positive 8-bit value in binary, hexadecimal, and decimal?
7. Find out the smallest negative 8-bit value in binary, hexadecimal, and decimal?
8. Find out the largest positive 16-bit value in binary, hexadecimal, and decimal?
9. Find out the smallest negative 16-bit value in binary, hexadecimal, and decimal?
10. Please express what you learn with this laboratory work with at most one
paragraph.