0 ratings0% found this document useful (0 votes) 234 views301 pages8085 Self Paced Programming
8085-self-paced-programming
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content,
claim it here.
Available Formats
Download as PDF or read online on Scribd
8085 Microprocessor Programming
EB-8085 TEXTBOOK
595-4218-04
== Core mi-Tenareleyehy
=HEATHKIT.
EDUCATIONAL SYSTEMS
Prepare to succeed.”8085 Microprocessor Programming
8.8085 TEXTBOOK 595-4218-04
8085 MICROPROCESSOR PROGRAMMING, Textbook
Copyright © 2001, 1998, 1993, 1989 by Heathkit Company, Inc., Benton
Harbor, Michigan 49022. All Rights Reserved. Printed inthe Urited States
‘of America. Except as permitted under the United States Copyright Act of
1976, no part of this publication may be reproduced or distributed in any
form or by any means, electronic or mechanical, including photocopying,
recording, storage in a data base or retrieval system, or otherwise, with-
ut the prior written permission of the publisher.I
INTRODUCTION
‘The 8085 Microprocessor Programming course is designed to teach you
the fundamentals of microprocessors in general and the 8085 instruction
set in particular. The fundamental terms and characteristics of all
microprocessors are the same. The actual registers and their relation-
ships to each other and the outside world is all that is different.
‘The 8085 is a general purpose microprocessor. It uses an eight bit data
bus and a sixteen bit address bus for memory access and the same data
‘bus and low eight bits of the address bus for input and output operations.
‘The 8085 has 5 hardware interrupt lines, not including the reset. It also
has a serial input line and a serial output line.
This course is organized into units which divide the subject of
microprocessors into six areas: microprocessor fundamentals, 8085
arithmetic and logic instructions, 8085 data movement instructions,
8085 jump instructions and condition codes, 8085 stack related instruc-
tions, and 8085 1/0 and interrupt instructions. Notice that the first unit
is about microprocessors in general, and all the remaining units specifi-
cally discuss the 8085. The experiments for this course are separate, so
that you can perform them again and again, whenever desired, without
searching through the text. The software for the experiments is provided
on the EB-8085-30 ROM cartridge, which plugs into the EWS-8085
trainer system.
The experiments for this course are designed to be performed on the
EWS.8085 trainer system. The EWS-8085 trainer system is composed of
an ET-3800 trainer with an ETC-8085 CPU module installed. The com-
plete system contains not only the 8085 microprocessor, but a 21 key
hexadecimal keypad, a 40 character LCD display (2 rows of 20 charac-
ters), 8K bytes of RAM, 24K bytes of ROM, a programmable timer, a 130
connector breadboard, and 8- bit output port, an 8-bit input port, an RS-
232C interface, a D/Aconverter, and an A/D converter. In this configura-
‘tion, the trainer will accept the ETC-128 EPROM cartridge, which can
store sixteen 1K byte programs.In the trainer documentation, you will see that the microprocessor is
referred to more specifically than just 8085. If you were to open the CPU
module (And we really wish you wouldn’t) you might find that the MPU
has still a different identification. Several manufacturers make 8085
equivalent ICs. All have the same registers, bus lines, and instruction
set. Therefore, it is easiest to refer to them all by the generic name, 8085.
Further, the 8085 is compatible with the 8080 — except that the 8080
cannot perform the read and set interrupt mask instructions (RIM and
SIM). Also, it does not have the TRAP, RST 7.5, RST 6.5, and RST 5.5,
interrupts, or any of the lines associated with those instructions and in-
terrupts.
‘The 19 experiments that complement the text demonstrate the concepts
you leamed in the unit. The table of contents for the experiments iden-
tifies which unit each is related to. This will help you, when you refer to
them after you complete the course.SE
COURSE OBJECTIVES
After you have completed this course you will be able to:
1. Identify and define the words, terms, and expressions associated
with microprocessors.
2. Describe the main components of an elementary microcomputer
system and identify their functions.
Identify the program controlled registers in an 8085 microprocessor.
4, Develop a program flowchart.
5. Write and edit elementary machine code and assembly language
programs for the 8085 using the EWS-8085 Trainer System.
6 Given an 8085 assembly language mnemonic and a table of opcodes,
determine the corresponding machine code.COURSE OUTLINE
UNIT 1— MICROCOMPUTER BASICS
INTRODUCTION
UNIT OBJECTIVES:
TERMS AND CONVENTIONS
Stored Program Concept
Computer Words
Word Length
AN ELEMENTARY MICROCOMPUTER
‘Memory
Fetch-Execute Sequence
ASample Program
EXECUTING APROGRAM
‘The Fetch Phase
‘The Execute Phase
Fetching the Add Instruction.
Executing the ADI Instruction
Fetching and Executing the HLT Instruction
UNIT SUMMARY
EXPERIMENTS=
UNIT 2— MICROPROCESSOR ARCHITECTURE
INTRODUCTION
UNIT OBJECTIVES
ARCHITECTURE OF THE 8085 MPU
The Registers
INSTRUCTION SET
ARITHMETIC INSTRUCTIONS
Add
Subtract
SPECIAL ARITHMETIC AND LOGIC OPCODES
Logical AND
Logical OR
Logical Exclusive OR
SHIFT AND OTHER LOGIC OPERATIONS
DAA and CMA
Shifts or Rotates
UNIT SUMMARYVIL
UNIT 8 — ADDRESSING MODES
INTRODUCTION
‘UNIT OBJECTIVES
MOVE INSTRUCTIONS
IMMEDIATE ADDRESSING.
Assembly Language
Immediate Addressing to 16-bit Registers
STORES AND LOADS
Indirect Loads and Stores
Direct Loads and Stores
OTHER REGISTER TRANSFERS
‘UNIT SUMMARY
EXPERIMENTSVIII
UNIT 4— INTRODUCTION TO PROGRAMMING
INTRODUCTION
UNIT OBJECTIVES
PROGRAMMING LANGUAGES
PLANNING YOUR PROGRAM
Flow Charts
Constructing a Flowchart
Coding
CONDITIONAL AND UNCONDITIONAL JUMPING
Condition Codes, or Flags
Jumps
UNIT SUMMARY
EXPERIMENTSUNIT 5 — STACK OPERATIONS AND SUBROUTINES
CONTENTS
INTRODUCTION
UNIT OBJECTIVES
WHAT IS ASTACK
‘The 8085 Stack
AUTOMATIC STACK ACTIVITY AND SUBROUTINES
INSTRUCTIONS THAT CHANGE THE STACK
UNIT SUMMARY
EXPERIMENTS‘UNIT 6—INPUT/OUTPUT OPERATIONS AND INTERRUPTS
INTRODUCTION
UNIT OBJECTIVES
OUTPUT OPERATIONS
INPUT OPERAITONS SERIAL 1/0
Input
Output
INTERRUPTS
‘More Interrupts
Reset or Restart
UNIT SUMMARY
EXPERIMENTS
‘UNIT EXAMINATION
EXAMINATION ANSWERS
APPENDIX A—THE 8085 INSTRUCTION SET
APPENDIX B—THE 8085 DATA SHEET.
APPENDIX C—EXCERCISE PROGRAM LISTINGS
INDEXUnit 1
MICROCOMPUTER BASICS1-2 MICROCOMPUTER BASICS
CONTENTS
INTRODUCTION ...............-. 13
UNIT OBJECTIVES ................0.. 14
TERMSAND CONVENTIONS ..............--.. 15
Stored Program Concept ............-.- 16
Computer Words... 20.2... 18
[Word Length iecriesssreastsPeeseeer ac perrpe nerds 18
AN ELEMENTARY MICROCOMPUTER ........... 1-12
RR pact e terete ee eee eet “16
Fetch-Execute Sequence .............. -. 1-20
ASample Program ................--.- 1-21
EXECUTING APROGRAM ................204 1-26
The Fetch Phase .. 2.2.0.2... Sees 27,
‘The Execute Phase . .
Fetching the Add Instruction
Executing the ADI Instruction.
Fetching and Executing the HLT Instruction. .. . . . 1:37
UNIT SUMMARY 1-39
EXPERIMENTSINTRODUCTION 1-3
———
INTRODUCTION
A microprocessor is a very complex electronic circuit responsible for the
programmed arithmetic and logic operations of a microcomputer system.
It consists of hundreds of thousands of microscopic transistors squeezed
onto a tiny chip of silicon that is often no more than one-eighth inch square.
The chip is wired into an integrated circuit (IC) package usually contain-
ing 40 or more leads.
‘The thousands of transistors that make up the microprocessor are arranged
to form many different kinds of circuits within the chip. From the stand-
point of learning how the microprocessor operates, the most important
circuits on the chip are registers, counters, and decoders. In this unit, you
will learn how these circuits can work together to perform simple but use~
ful tasks
In addition to the standard circuits characteristic of all microprocessors,
the 8085A that you will be learning to program in this course also contains
a serial /O circuit. This makes it easier to connect to a serial terminal
circuit.
As you learn and progress through this unit (and course) you should be
aware of several things happening. You will find yourself becoming more
| familiar with standard microprocessor and programming terms. Many of
these apply to all microprocessors in general, but some are very specific to
the 8085 as used in the ETC-8085 CPU module when inserted into the ET-
3800 trainer. This is referred to as the EWS-8085 Microprocessor Trainer
‘System. You will be learning and using the programming instructions of
the 8085A. You should recognize that many other microprocessor units
(other than the 8085A) have equivalent instructions to perform the same
kind of operations as those you will be learning here. In this sense, the
programming proficiency that you gain in this course will enable you to
understand and program a wide variety of other microprocessors. You will
also find that although there are many different kinds of microprocessors
available, many common or similar hardware features exist from one to
another. The learning you begin here should be an ongoing process.
If you have previously completed another Heathkit Educational Systems
introductory microprocessor course (for the 6800, 6809, or 6811 micro-
processors) you may want to continue with Unit 2. Unit 1 of this course
presents the same material as those other courses.1-4 MICROCOMPUTER BASICS
UNIT OBJECTIVES
‘When you complete this unit you will be able to:
i
‘Recognize and explain the differences between a microprocessor and
microcomputer in reference to their respective block diagrams.
Define the terms: microprocessor, microcomputer, input, output,
1/0, VO device, /O port, instruction, program, stored program
concept, word, byte, MPU, ALU, operand, memory, address,
read, write, RAM, fetch, execute, MPU cycle, mnemonic,
opcode, and bus.
Explain the purpose of the following circuits in a typical
microprocessor: accumulator, program counter, instruction
decoder, controller-sequencer, data register, and address
register.
Using a simplified block diagram of a hypothetical microprocessor,
trace the data flow that takes place between the various
circuits during the execution of a simple program.
Write simple straight-line programs that can be executed by the
ET-3800 Microprocessor Trainer with the ETC-8085 CPU
module installed.TERMS AND CONVENTIONS 1-5
TERMS AND CONVENTIONS
Amicroprocessor is a logic device that is used in digital electronic sys-
tems. It is also being used by hobbyists, experimenters and low-budget
research groups as a low-cost, general purpose computer. But a distine-
tion should be made between the microprocessor and the microcomputer.
‘The microprocessor unit, or MPU, is a complex logic element that per-
forms arithmetic, logic, and control operations. In most casesit is asingle
integrated circuit.
Amicrocomputer contains a microprocessor, but it also contains other
circuits such as memory devices to store information, interface adapters
to connect it with the outside world, and a clock to act as a master timer
for the system. Figure 1-1 shows a typical microcomputer. The arrows
represent conductors over which binary information flows. The wide ar-
rows represent several conductors connected in parallel. (Parallel cir-
cuits have a separate path for each signal.) A group of parallel conductors
that carry information is called a bus.
inten Ace
IoRCCOMPUTER
Figure 1-1
‘A Basic Microcomputer.1-6 MICROCOMPUTER BASICS
ST
The microcomputer is composed of everything inside the dotted line.
Everything outside the dotted line in Figure 1-1 is referred to as the out-
side world, and all microcomputers must have some means of com-
municating with it. Information received by the microcomputer from the
outside world is referred to as input data. Information transmitted to
the outside world from the microcomputer is referred to as output data.
Input information may come from devices like disk drives, various kinds
of transducers, mechanical switches, keyboards, or even other com-
puters. Output information may be sent to video displays, output
printers, disk drives, or indicator lamps. Some devices such as modems
can serve as both an input and an output device. These devices are
referred to as input/output or /O devices. The point at which the /O
device connects to the microcomputer is called an /O port. The construc-
tion and use of /O ports, though beyond the scope of this course, is central
to the subject of microprocessor interfacing and applications.
Stored Program Concept
A microcomputer is capable of performing many different operations. It
can add and subtract numbers and it can perform logical operations. It
can read information from an input device and transmit information to
an output device. In fact, depending on the microprocessor used, there
may be several hundred different operations that the microcomputer can
perform.
In spite of all these capabilities, it will do nothing of its own accord. It
will only do what it has been told to do, nothing more and nothing less.
‘You must tell the computer exactly what operations to perform and the
order in which it should perform them. The operations the computer can
be told to perform are called instructions. A few of the most common in-
structions are ADD, SUBTRACT, LOAD REGISTER, STORE
REGISTER, MOVE DATA, and JUMP (to another sequence of instrue-
tions).
Agroup of instructions that cause the computer to perform a specific task
is called a program. One who writes these instructions is called a
programmer. To design equipment based on a microprocessor, the en-
gineer must know how to program that microprocessor. To repair
microprocessor based equipment, a technician must understand exactly
what the program is doing.‘TERMS AND CONVENTIONS 1-7
Programs can be short or long depending on the complexity of the task
to be done. A program to add a sequence of numbers might have only a
few dozen instructions, but a program to control all the traffic lights in
a city would have over a thousand.
Acomputer is often compared to a calculator, which is controlled by the
‘keyboard. Even inexpensive calculators can perform several operations
that can be compared to instructions in a computer. By depressing the
right keys, you can instruct the calculator to add, subtract, multiply,
divide, and clear the display. Of course, you must also enter the numbers
that are to be added, subtracted, ete, With a calculator, you can add a list
of numbers as quickly as you can enter the numbers and the instructions.
Thatis, the operation is limited by the speed and accuracy of the operator.
From the start, computer designers recognized that it was the human
operator that slowed the computation process. To overcome this, the
stored program concept was developed. Using this approach, the
program is stored in the computer’s memory. Suppose, for example, that
you have 20 numbers that are to be manipulated by a program that is
‘composed of 100 instructions. Let’s further suppose that 10 answers will
be produced in the process.
Before any computation begins, the 100-instruction program plus the 20
numbers are loaded into the computer's memory. Furthermore, 10
memory locations are reserved for the 10 answers. Only then is the com-
puter allowed to execute the program. The actual computation time
might be less than one millisecond. Compare this to the time it would
take to manually enter the instructions and numbers, oneata time, while
the computer is running. This automatic operation is one of the features
that distinguishes the computer from the simple, non-programmable,
calculator. However, the numbers have to be entered in either case.
‘Therefore, stored programs save time only if the operation needs to be
repeated or if there are many computations to be performed on the same
set of numbers.1-8 MICROCOMPUTER BASICS
Computer Words
All data is stored in the computer in the form of I's and 0's. These 1’s and
O's are called binary digits, or bits. These bits are represented by such
physical things as magnetic fields and voltages. Because a bit can rep-
resent so little, the bits are grouped together. In computer terminology,
a word is a group of binary digits that can occupy a storage location. Al-
though the word is made up of several binary digits, the computer hand-
les each word as if it were a single unit. Therefore, the word is the
fundamental unit of information used in the computer.
Word Length
In the past several years, a wide variety of microprocessors have been
developed. Their cost and capabilities vary widely. One of the most im-
portant characteristics of any microprocessor is the word length it can
handle. This refers to the length in bits of the most fundamental unit of
information.
Today, there are many 16-bit microprocessors, and the most common
word length is 16 bits. Asa result, the term word has come to mean 16
bits. In spite of this, and because 8-bits is both a useful size and an his-
torically common size, many operations are based on 8 bits, which is
called a byte. Various computers are identified by the number of bits
they can work with. As a result, some are called 8-bit machines and
others are called 16-bit machines.
Because computers operate in binary, it is often desirable to give num-
bers in binary (base 2) or hexadecimal (base 16). To avoid confusion, sub-
script numbers 2, 10, and 16 are used to indicate the base of the number
system used. The lowest 8-bit binary number is 0000 00002 or 0016. The
highest is 1111 11112 or FF 6. In decimal numbers, this is the range from
0 to 25510. Therefore, a byte can have any one of 25610 unique values.
Therefore, a byte can specify positive numbers between 0 and 25510. Or,
if the byte represents an instruction, it can be any one of 256 possible
operations. It is alsocommon fora byte to represent a character or printer
operation. When the high bit is used as a sign (0 for positive or 1 for nega-
tive) the byte can represent numbers from -128 to +127.TERMS AND CONVENTIONS 1-9
Naturally, you must have some list of what all the byte patterns repre-
sent. The most commonly accepted list is ASCII, the American Stand-
ard Code for Information Interchange. However, ASCII provides only for
the first 12810 values (0 through 12710). The greater values 12810
‘through 25510 do not have standard ASCII values. You will find a HEX-
ASCII table on the Assembly Language Reference card.
Let’s look at an example. In ASCII, the byte 0100 00012 represents the
letter "A". On some computers, 1100 00012 also represents an "A," but on
others it is used for a graphic character. As you can guess, this is a cause
for some confusion when values are transported from one computer to
another.
Even within a specific computer, the same byte pattern can have many
meanings as mentioned. It can represent a character, a number, or an in-
struction. You as the programmer, must ensure that an ASCII character
or abinary number is not mistaken for an instruction. Later, you will see
the consequences of making this mistake.
Ina 16-bit machine, ASCII is still commonly used to represent charac-
ters. But the 16-bit word allows them to easily work with numbers up to
65,53530. It also allows them to have 65,53510 different instructions.
However, this also adds to the complexity of the microprocessor. Many
microprocessors, such as the 8085, which is the subject of this course, use
bytes (6-bits) for data, and 16-bit words for memory addressing. This al-
lows them to access 65,53610 memory locations and still keep most opera-
tions relatively simple. It is also important to realize that even an 8-bit
computer can combine two or more bytes to represent numbers larger
than 25510.
‘The 8-bit value is reflected in the hardware. Within the MPU, there are
temporary storage locations called registers. The registers are usually
byte-length, or multiples of eight bits. Not only are the values within the
‘MPU in groups of eight bits, but the transfer outside the MPU is also in
groups of eight. For example, it takes eight wires to transfer a byte of
data from the MPU to memory. This group of eight wires is called the
data bus. The sixteen wires that carry the address are called the ad-
dress bus. Each memory location stores 8 bits.1-10 MICROCOMPUTER BASICS
=-.
‘To manipulate the address values within the MPU, the sixteen bit word
is handled in two bytes as shown in Figure 1-2. So that it is easier to dis-
cuss the bits in the byte and the bytes in the word, there are some terms
you must know. The least significant bit, or LSB, is the one that has a
place value of 1 when the byte represents a number. This is shown as the
right most bitin the figure. The most significant bit holds the highest
Position value in the byte or word. This bit has a value of 12830 in a byte
or 3276810 in a 16-bit word. This is also the position that represents the
sign (+ or -)in a signed number.
one, avTE
—
sit? BIT 0
‘usa) “CeToToToTeT oToTo}- #:3,°
HIGH oRoER LOW ORDER
eyTe BYTE
oF"
917 1°] oT OTs] oT ToT oo] oT oy oy op oT oT op —817,8
Fe
‘ONE WORD
Figure 12
Bytes and Words.
‘To further assist in identifying the bits, each has a number. The LSB is
bit 0, because it has a place value of 2°. The MSB of a byte is bit 7 as
shown in Figure 1-2. This is because its place value, 12810, is 2’. Similar-
ly, in the 16-bit word the MSB is bit 15, because 3276810 is 2!°. The bytes
are also referred to by location. Bits 0 through 7 are the low order byte,
or least significant byte. Bits 8 through 15 are the high order byte, or
most significant byte.TERMS AND CONVENTIONS 1-11
Self-Test Review
3
10.
i.
12.
13.
Memory and other additional circuits are what distinguish a
from a microprocessor.
A group of parallel conductors that carry information is called a
Signals received by the microcomputer are called signals.
‘The microcomputer sends signals to the "outside world” from its
ports.
A sequence of instructions that perform a specific task is called a
Abinary digit is called a
‘The most common computer code for representing the alphabet is
called
Bit 0 is the significant bit.
Abyte consists of, bits.
What is the bit number of the MSB in a byte?
‘What is the largest number that can be represented by a byte?
What is the largest number that can be represented by a 2-byte
word?
‘The temporary storage locations within the MPU are called1-12 MICROCOMPUTER BASICS
SS
AN ELEMENTARY MICROCOMPUTER
One of the difficulties you may encounter in learning about a microcom-
puter for the first time is the complexity of its main component ~- the
microprocessor. The microprocessor may have a dozen or more registers
varying in size from 1 to 32 bits. Of course this is not the limit, registers
of 128 bits or more could become very common. The microprocessor can
have hundreds of instructions, most of which are implemented several
different ways. It will have data, address, and control buses. In short, it
can be intimidating, if not overwhelming, to start out by considering one
of todays full-capability microprocessors.
To avoid this problem, we will begin by considering a "stripped- down"
version. This will allow you to understand the fundamentals, without
getting "bogged-down" in the complexity of the unit. All the characteris-
ties of the more complicated units are embodied in this hypothetical
model. To make the transition to the 8085 easier, we have used examples
from the 8085's instruction set. The programming examples will actual-
ly work on the EWS-8085 Microprocessor Trainer System.
conTROL
Bus
‘pores | ome
BUS
INTERFACE
soabren
Mo
oevite
Figure 1.3
‘The Basie Microcomputer.AN ELEMENTARY MICROCOMPUTER 1-13
A block diagram of a basic microcomputer is shown in Figure 1-3. Its
basic elements are the microprocessor, the memory, and the I/O circuitry.
For simplicity, we will ignore the /O circuitry in this unit. In order to do
this, we will assume that the program and data are already in memory
and that the results of any computations will be held in a register and
stored in memory. Ultimately, of course, the program and data must come
from the outside world and the results must be sent to the outside world.
We will save these procedures until a later unit. This will allow us to con-
centrate on the microprocessor and the memory.
‘The microprocessor unit is shown in greater detail in Figure 1-4. For
simplicity, only the major registers and circuits are shown. Notice that
most of the counters, registers, and buses are 8-bits wide, to accom-
modate a full byte of data.
MicnoPRocesson UNIT
ARTiMer ic
teeletGnit
Le ret execute
CONTROLLER:
SEQUENCER
TM
INSTRUCTION
DECODER
th.
regi sre
eeCieter
AcoRESS
feersren
256 evies of | AD
raRGow ASSES
Went “aaa
es
Figure 1-4
‘ASimplisied Microprocessor Unit.1-14 MICROCOMPUTER BASICS
eS
One of the most important circuits is the arithmetic logic unit (ALU).
Its purpose is to perform the arithmetic and logic operations on the data
that are delivered to it. The ALU has two main inputs. One comes from
a register called the accumulator, and the other comes from the data
register. In more complex computers there may be more possible sour-
ces, and more than one ALU. The ALU can combine the two pieces of data
in only a few ways -- addition, subtraction, or one of the logical opera-
tions (such as: OR, AND, and XOR), which will be discussed in Unit 2.
‘The operation that the ALU performs is determined by signals on the
various control lines (Marked C in Figure 1-4) within the MPU.
Generally, the ALU receives one number from the accumulator and
another from the data register as shown in Figure 1-5A. Because some
operation is performed on these data words, the two inputs are called
operands or arguments. After the operation is performed, the results
are usually returned to the accumulator, which is how that register got
its name. For example, assume the two numbers 710 (binary 0000 0111)
and 910 (binary 0000 1001) are to be added, Before the numbers can be
added, one operand must be placed in the accumulator and the other
operand placed in the data register. When the proper ALU control lines
are activated, the accumulator and data registers are gated together. A
fraction of a second later, the result of that operation (in this example
1610, binary 0001 0000) is routed back into the accumulator, replacing
the operand, as shown in Figure 1-5B. Notice that all numbers involved
are in binary form.AN ELEMENTARY MICROCOMPUTER 1-15
A B
iF Function
A is ADO, ‘SELECT
SS
© 7 3 i
o x ° ®
> ALU a soa]} > ALU fl
o + ‘ :
¢ 2 ¢ z
Pur INPUT
nog
EE CCT DATA REGISTER
ACELARILATOR DATA REGISTER
ACMULATOR
8M - 1649 OF 10000)
Figure 1.5
‘The Arithmetic Logic Unit.
‘The accumulator is the most useful register in the microprocessor.
During arithmetic and logic operations it performs a dual function.
Before the operation, it holds one of the operands. After the operation it
holds the resulting sum, difference, or logical answer. Many operations
in the microprocessor involve the accumulator in one way or another.
‘The data register is a temporary storage location used for many opera-
tions. In some microprocessors, the data register is similar to an ac-
cumulator, in that it can receive the results of some operations. In our
hypothetical microprocessor, the data register also holds the instruction
before it is interpreted. You will see how this works a little later in this
unit. It is not uncommon for registers to do more than one thing. As in-
dicated by the arrows in Figure 1-4, all data in our hypothetical
microprocessor passes through the data register on its way from memory
to the accumulator. Data also passes through the data register when
transferred from the accumulator back to memory or one of the other
registers.
‘The MPU also contains several other important registers and circuits:
the address register, the program counter, the flag register, the index
register, the instruction decoder, and the controller-sequencer. Except for
the flag and index register, these are shown in Figure 1-4.1-16 MICROCOMPUTER BASICS
The address register is a temporary storage location. It holds the ad-
dress of the memory location or I/O device that is used in the operation
presently being performed.
The program counter is a register that controls the sequence in which
the instructions of the program are executed. Normally, it does this by
counting as each instruction is performed, so that it typically contains
the address of the next instruction. By changing its contents, you can
cause the program to jump, or branch, from one place in memory to
another.
The instruction decoder is a circuit that interprets the meaning of the
byte in the data register when it is a program instruction. The only way
it knows that the byte is an instruction is by the timing.
‘The controller-sequencer produces a variety of control signals tocarry
out the instruction. Because each instruction is different, it has a uni-
que patter of control signals associated with it. The controller-sequen-
cer produces these patterns after it receives information from the
instruction decoder.
Later you will see how these various elements work together to execute
simple programs. But first, take a closer look at the memory for our
microcomputer.
Memory
A simplified diagram of the 256-byte read/write memory that is used in
our hypothetical microcomputer is shown in Figure 1-6, The memory con-
sists of 25610 locations, each of which can store an 8-bit word. This size
memory is often referred to as 256 X 8. A read/write memory is one that
you can both read data from and write data to with equal ease.
‘Two buses and a number of control lines connect the memory with the
microprocessor unit. The address bus carries the location of the specific
byte desired, as specified by the address register, from the MPU to the
memory. The contro] lines indicate whether the byte is to be read or writ-
ten and when the address lines are valid. The data bus carries the data
to the memory during a write operation and from memory to the MPU
during a read operation. Notice in Figure 1-6, that the address and con-
trol lines are inputs to memory and not outputs. The data bus, on the
other hand, has arrows both toand from, because it can be either an input
to the data register or an output from the data register.AN ELEMENTARY MICROCOMPUTER 1-17,
o/FROM
MICROPROCESSOR
ADDRESS. FROM
MICROPROCESSOR
sire
}-00 -e[ COCATION OD)
aa
aooness:
e-ar
pata’ BUS.
8-817
ADDRESS BUS
rr
READ IWATE
comuano Frou LT
wicaopaocessan fj “L CONTROL
Figure 1-6
‘The Random Access Memory.
Each location has a unique identifying number called its address. The
first location has address 0. The last in this illustration has address
25510, which is binary 1111 1111, or FF hexadecimal. (Notice that the bi-
nary form is written in groups of four bits. This is a common practice that
makes it easy to translate the half-bytes, or nibbles, to hexadecimal.
‘After you have worked with this notation for a while, it will become very
easy for you to read the nibbles as hexadecimal numbers and visualize
the hexadecimal in binary.)
In our simplified microprocessor, the value from the address register is
always present at the memory, and the read/write signal is normally in
the read condition. Therefore, the contents of the selected memory are
available on the data bus. However, because of the control leads to the
data register, that data is only "read" when it is required by the data
register. For a write operation, these same control leads to the data
register select when the data register is to output to memory. After both
‘the address and data registers are set to the desired value, the read/write
control line selects a WRITE operation, and the data are stored in
memory. The read/write line is then returned to the read state and the
address and data registers are free to be used for other operations,
without affecting the contents of memory.1-18 MICROCOMPUTER BASICS
DATA TO
Wau
toot 0111
‘ADORESS
20000100 rey
LOCATION
TaoRanoaaee
ees TOOL OTET|} cata ous
beconeR
‘ADDRESS BUS
—
“READ” CONTROL,
z Le
Figure 1-7
Reading from Memory.
Let’s look at these procedures a little closer. The read operation is il-
lustrated in Figure 1-7. The MPU places the address of the memory byte
desired in the address register. This is applied to the address bus, select-
ing address 0416. Because the read/write control line is in the READ
state, the data from address 0416, in this case 1001 01112 (9716), areavail-
able on the data bus to the MPU. At this time, the MPU gates the data
bus value into the data register, and the memory has been read.
Itis important to know that reading memory does not affect the contents
of that memory location. This characteristic of not being affected by the
read operation is referred to as nondestructive read out (NDRO). It is an
important feature, because it allows us to read out the same data as many
times as needed. It also saves the time that would be required to write
the data back into that memory location, which was necessary in early
computers.
More sophisticated microprocessors have additional control lines to
select between memory and /O. Because of the bus structure, the con-
trol signal that selects between I/O and memory is applied at the memory
and V/O entries to the bus. Therefore, in a read condition, the bus con-
tains which ever input (I/O or memory) is selected.‘AN ELEMENTARY MICROCOMPUTER 1-19
®
DATA FROM
MPU.
0101 0010
@
‘ADDRESS
(000 0911
sf 0707 0079
ADDRESS
DECODER,
ADDRESS BUS
Figure 1-8
‘Writing into Memory.
‘The WRITE operation is shown in Figure 1-8. As in the read operation, the address
register applies the desired address on the bus. In this example, the selected address is,
03, (0000001 1,). The data register applies the correct data 52,,(0101 0010,) tothe data
bus. The WRITE signal is applied and the value is gated tothe memory cell. Before the
data or address buses change, the write signal must be removed. Recall, this returns the
bus toaread condition, which is nondestructive, so the memory stays.as it was set by the
‘write operation.
This type of memory, in which any address can be read or written to with equal ease is
called Random Access Memory, or RAM. “Random access” refers to the fact that any
address can be accessed at any time. In contrast, some memories, such as “bubble”
‘memory, can only read or write data by sequentially accessing each address location
until the desired address is located. Because itis not an efficient way to store data,
sequential ead memory snot commonly used in microcomputer circuits. The other type
‘of memory most commonly used is called Read Only Memory, or ROM. ROM is just
asrandomily accessible as RAM, butt cannot be easily changed. When you see the term.
RAM, you must think of Read And write Memory. The process for reading ROM is,
exactly the same as reading RAM. But if you try to write to ROM, the value in memory
isnot changed.0
MICROCOMPUTER BASICS
Fetch-Execute Sequence
When the microcomputer is executing a program, it goes through a fun-
damental sequence that is repeated over and over again. Recall that a
Program consists of instructions that tell the microprocessor exactly
what operations to perform. These instructions must be stored in an or-
derly manner in memory. Typically, this is in the order in which they are
tobe executed. The instructions are read, or fetched, one at a time, from
memory by the MPU. After it is fetched, each instruction is interpreted
and executed.
‘The operation of the microprocessor can be broken down into two phases,
as shown in Figure 1-9. When the microprocessor is initially started, it
enters the fetch phase. During the fetch phase, an instruction is taken
(read) from memory and decoded by the MPU. Once the instruction is
decoded, the MPU switches to the execute phase. During this phase,
the MPU carries out the operation dictated by the instruction.
exegure
Te
INSTRUET ION
Figure 1.9
‘The Fetch-Execute Sequence.
The fetch phase always consists of the same series of operations. Thus it
always takes the same amount of time. However, the execute phase will
consist of different sequences of events, depending on what type of in-
struction is being executed. Thus, the time of the execute phase may vary
considerably from one instruction to the next.‘AN ELEMENTARY MICROCOMPUTER 1-21
ASample Program
Now that you have a general idea of the registers and cireuits found in
microcomputer, you are ready to examine how all of these circuits work
together to execute a simple program. At this point, you are primarily in-
terested in knowing how each step in the process is accomplished. There-
fore, the program will be a very trivial one. Longer programs work
generally the same way, but with many more instructions.
Let's see how the computer goes about solving a problem like adding
seven and ten (7 + 10= ?), While this may seem incredibly easy, the com-
puter has no idea how to solve this problem, until somebody tells it ex-
actly what to do. You must include every detail, because if the right
information is not in the right place when it is needed, the result will be
wrong,
Before you can write the program, you must know what instructions are
available to you and the computer. Every microprocessor has its own in-
struction set. For this example, assume that after you look over the in-
struction set you decide that three instructions are necessary to solve
this problem. These instructions and a description of what they do are
shown in Figure 1-10.
NAME: MNEMONIC — OPCODE DESCRIPTION
Load Accumulator MVIA, 011 11102 Load (Move) the contents ofthe
ee ‘ex (Immeciate) memory acres
into te accumulator.
Aas ADI 110001102 Add the contents of the next
or Cie (immediate) memory adress 0
the present contents ofthe
‘accumulator. The eum wil be in
the accu
HALT Hr 0111 01102 Stop all operations.
or 7616
Figure 1-10
Instructions used in the simple program.
‘The first column in the table gives the name of the instruction. When
writing programs, it is often inconvenient to write out the entire name.
For this reason, each instruction is given an abbreviation or a memory
aid called a mnemonic. The mnemonics are given in the second column.
‘The third column is called the operation or opeode.1-22 MICROCOMPUTER BASICS
OO
This is the binary number that the computer and the programmer use
to represent the instruction. The opcode is given in both binary and
hexadecimal form. The final column describes exactly what operation is
performed when the instruction is executed. Study this table carefully;
you will be using these instructions over and over again.
Assume that you wish to add 7 to 1030 and place the sum in the ac-
cumulator. The program is an elementary one. First, you will load 7 into
the accumulator with the MVI A instruction. Next, you will add 1010 to
the accumulator using the ADI instruction. Finally, you will stop the
program with the HLT (halt) instruction.
Using the mnemonics and the decimal representation of the numbers to
be added, the program looks like this:
Myr AT
ADI 20
HLT
Unfortunately, the basic microcomputer cannot understand mnemonics,
decimal, or hexadecimal numbers. It can interpret binary numbers and
nothing else. Within the computer you use binary, Therefore, these
mnemonics and numbers must be converted into binary. You can do this
by replacing each mnemonic with its corresponding opcode and each
decimal number with its binary counterpart.
That is:
IAT becomes 0011 1110 00000111 binary representation
opcode rom 17
Figure 1-10
and:
ADI 10 becomes 1100 0110 0000 1010 binary repeesentaton
opcodetrom 19" 1010
Figure 1-10
Finally,
Hur becomes om on
opcode tom
Figure 1-10
Notice that the program consists of three instructions. The first two in-
structions have two parts: an 8-bit opcode followed by an 8-bit operand.
‘The operands are the two numbers that are to be added (7 and 1010).AN ELEMENTARY MICROCOMPUTER 1-23
Recall that the microprocessor and memory work with 8-bit words or
bytes. Because the first two instructions consist of 16-bits of information,
they must be broken into two 8-bit bytes before they can be stored in
memory. Thus, when the program is stored in memory, it will look like
this:
‘stinstuction —tstaddress_ 0011 1110 (Opcode for MV A
2ndaddress 00000111, Operand (7)
2nd instruction —Srdaddress «11000110 ‘Opoode for ADI
‘th adcress 0000 1010 ‘Operand (10:0)
Std instruction Sthaddress 1110110 (Opoode for HLT
As you can see, five bytes of memory are required. You can store this 5-
byte program any place in memory that is not already being used. As-
suming you store it at the first five memory addresses, the memory can
be diagrammed as shown in Figure 1-11.
ADDRESS MEMORY
BINARY
HEX BINARY CONTENTS _MNEMONICS/CONTENTS.
00 (0000 0000 00111110 MIA
ot 0000 0001 ooooo111 7,
02 (0000 0010 11000110 ADI
03 (9000 0011 00001010 1010
04 (0000 0100 01110110 HLT
FO $111 1101
FE $11 1110
FF suit attt
Figure 1-11
it binary numbers as-
sociated with it. One is its address, the other is its contents. Be careful
not to confuse these two numbers. The address is fixed. It is established
when the microcomputer is built. However, the contents may be changed
at any time by storing new data.
Before you see how this program is executed, let's review the material
covered in this section.1-24 MICROCOMPUTER BASICS
Self-Test Review
4,
15.
16.
1.
18.
19,
20.
21.
22,
23,
25.
26.
27.
‘The circuit in the microprocessor that performs arithmetic and
logic operations is called the
‘The numbers that are operated upon by the microprocessor are
called :
Before they are added together, the two numbers are in the
and the register.
After an arithmetic operation, the result is in the
‘The opcode is decoded when the instruction is in the
register.
‘The memory location to be read or written to is selected by the
register.
‘The address of the next instruction is normally in the
An 8-bit address can select any of.
locations.
‘The abbreviation, or memory aid, for each instruction is called a
different memory
The bit pattern that represents the microprocessor instruction is
called the Z
Memory that can be either read or written during routine computer
operation is called.
An instruction is retrieved from memory and decoded during the
phase.
The operation indicated by the instruction is carried out during the
phase.
When the add instruction is executed, the sum will be in the28.
29,
‘AN ELEMENTARY MICROCOMPUTER 1-25
How many memory locations are required for the following
program?
MI A, 1320
»DI Tao
apr 1010
What value will be in the accumulator after this program is
executed?1-26 MICROCOMPUTER BASICS
ee
EXECUTING A PROGRAM
Before a program can be run, it must be placed in memory. Later, you will see
how this is done. For now, assume that the program developed in the previous
section is already loaded into memory.
‘The pertinent registers of the microprocessor are shown in Figure 1-12. Notice
that the5-byte program that adds 7 and10, yisshown in memory addresses zero
through four. The following paragraphs and drawings will take you through the
step-by-step procedure by which the computer executes this program.
| CROPROCESSOR
UNIT
(MPU)
lcovrpot ter
‘SEQUENCER
acoumaator[ TT
OToTOOTO) exces ee
T) a88°5%Ea [HBG
MEMORY.
Binaay | PRENONIGST
roses | Bitte | REM
Figure 1-12
‘The Program Counter is Set to the Address of the First Instruction.
‘To begin executing the program, the program counter must be set to the
address of the first instruction. In this case, the first instruction is in
memory location 0000 0000, so the program counter is set accordingly.
‘The procedure for setting the program counter to the proper address will
be discussed later.EXECUTING A PROGRAM 1-27
The Fetch Phase
‘The first step in the execution of any instruction is to fetch the instruc-
tion from memory. The sequence of events that happen during the fetch
phase is controlled by the controller-sequencer. It produces a number of
control signals which will cause the events illustrated in Figures 1-13
through 1-17 to occur.
First, the contents of the program counter are transferred to the address
register as shown in Figure 1-13. Recall that this is the address of the
first instruction.
MICROPROSSER
UNIT i
(MPU) {BTR
ee CONTROLLER-
‘SEQUENCER
scommaron[ TT TT11]
nocn ay ygrauer iow
(oTO] eeRFeK Becdden
sooress [ oata
APTS FER rblties
MEMORY
TNEWONTCST
BINARY,
spores | oS iNAGY, | “bec Mal.
INTENTS | CONTENTS
ToT z
Figure 1-13
‘The Contents of the Program Counter are Transferred to the Address Register.1-28 MICROCOMPUTER BASICS
Once the address is safely in the address register, the program counter
is incremented by one. That is, its contents change from 0000 0000 to
0000 0001 (Figure 1-14). Notice that this does not change the contents
of the address register in any way.
acouMuLaton |
Vv
lol] s] Eee
10]
lofofoToTo) seers. = CL
MEMORY
inary] "MENON GST
scones | instr, | MEER
CONTENTS
Figure 1-14
‘The Program Counter is Ineremented.EXECUTING A PROGRAM 1-29
‘The contents of the address register (0000 0000) are placed on the ad-
dress bus as shown in Figure 1-15. The memory circuits decode the ad-
dress to select location.
I CROPROCESSOR
UNIT
(MPU)
“SEOUENGER
ACCUMULATOR I ]
[oLoToToTOTOTOTT) exer
TsTRUCT 108
‘SECoDER
[OTOTOTOTOTOIO) a28°EF2. I J afer
AopRESs
BUS
MEMORY
WNEHONTGST
BINARY,
ADoRESS | CONTENTS | DECIMAL
Dope BpT TOOT BUT
o-ogoT He} —
tH ABT
o-oo ort orto} —Bb
SSS
Figure 1-15
‘Tho Address of the First instruction is on the Address Bus,1-30 MICROCOMPUTER BASICS
Next, the contents of the selected memory location are read from the
data bus into the data register. The data are on the data bus because that
address was selected by the address bus. After this operation, the MVI
A instruction will be in the data register as shown in Figure 1-16.
conraonsen-
SEOTENSE
scoutaron 11
17] pacar ngraueT 1oN
[OTOT1] eaeasey ‘Brceoen
G] aponess.
Aegisten
ADDRESS
BUS.
EMORY.
Biwany | MNEMONTOS
contents | DECIMAL
ie ee
ELE
Figure 1-16
‘The Opeode for the First instruction is put into the data register.EXECUTING A PROGRAM 1-31
‘The next step is to decode the instruction (Figure 1-17). The opcode is
transferred to the instruction decoder. This circuit recognizes that the
opcode is that of an MVI A instruction. It informs the controller-sequen-
cer of this fact and the controller-sequencer produces the necessary con-
trol pulses to carry out the instruction. This completes the fetch phase
of the first instruction.
SBaTeGNS
tatu
INSTRUCT 10N
DEOOSER
ons
0) rehire
TO) Az87SF2a
MEMORY.
rooress | Binary, | MBeSue
conrents | SaTENTS.1-82 MICROCOMPUTER BASICS
sss
The Execute Phase
‘The first instruction was fetched from memory and decoded during the
fetch phase. The MPU now "knows" that this is an MVI A instruction,
During the execute phase it must carry out this instruction by reading
out the next byte of memory and placing it in the accumulator.
‘The first step is to transfer the address of the next byte from the program
counter to the address register (Figure 1-18). You will recall that the
Program counter was incremented to the proper address (0000 0001)
during the previous fetch phase. Notice, too, that the MPU cannot change
the address register until the previous byte from memory is latched into
the data register. The key to the operation of any MPU is the timing, or
nati A
ACCUMILATOR
ooTgIOTO
VW
(o0]
MEMORY
wane] PREDONTCST
AoRESS | CONTENTS | DECIMAL
Figure 118
‘The Contents ofthe Program Counter are Transferred tothe Address Register.EXECUTING A PROGRAM 1-33
‘The next operation is shown in Figure 1-19. The program counter is in-
cremented to 0000 0010 in anticipation of the next fetch phase. Notice
that the address from the address register is shown on the address bus.
MICROPROCESSOR
i UNIT. aaaaeriall
i ARNT!
i (MPUD tTNNIF
i catu CONTROLLER
i ‘SEQUENCER
ACCUMULATOR T
Progeny Insrauct ON
110] SBoRFeK DecaoeR
iL]0) neS¥eren
foTOTOTOTOTOTOT] APSFEFER OOnn
MEMORY.
TRENEATCST
aooness | BINARY, | “best
CONTENTS | CONTENTS:
Sree
7
=
‘The Program Counter is incremented and the Contents
of the Address Register is on the Address Bus.1-34 MICROCOMPUTER BASICS
_Shvh
‘The address is decoded and the contents of memory location 0000 0001
are loaded into the data register as shown in Figure 1-20. Recall that this
is the number seven. Just as the opcode was immediately available to
the instruction decoder, this operand is immediately transferred to the
accumulator. Thus, the first execute phase ends with the number 7 in
the accumulator.
MICROPROCESSOR
UNIT.
(MPU) tbe)
[controuter-
SEOENSER
sccumucator [O10]
ius TRUCT ION
SECOSER
(ofofofofofo|o|
ADpness.
Aeeistea
DATA
register
WNEMONICST
BINARY.
aooress | outdite | “DeciMa
Figure 1.20
‘The First Operand is Transferred to the Accumulator Via the Data Register.
Fetching the Add Instruction
‘The next instruction in our program is the ADI instruction. It is fetched
from memory using the same procedure that was used for fetching the
MVI A instruction. Figure 1-21 illustrates this. The five significant
events are as follows:EXECUTING A PROGRAM 1-35
1 ‘The contents of the program counter (0000 0010) are transferred to
the address register.
2. ‘The program counter is incremented to 0000 0011.
8. The address is on the address bus.
4, The contents of the selected memory location are transferred to the
data register.
5. The contents of the data register are decoded by the instruction
decoder.
MICROPROCESSOR | | |
UNI 7
(MPU) SetetOnS
cata? CONTROLLER
SeSDeNGES
acoumu.aton [TOTOTOTOTT abe
@
[DloTo[OToTOT 1] eeneren
jo)
lofojojofo
apres,
AeersteA,
oft
register
THERON GST
Binacy | MEAONICS
aboness | contents | DECIMAL
Figure 1-21
Fetching the ADI Instruction.
‘The data word fetched from memory is the opcode for the ADI instruc-
tion. Therefore, the controller-sequencer produces the necessary control
pulses to execute this instruction.1-36 MICROCOMPUTER BASICS
Executing the ADI Instruction.
The execution of the ADI instruction is a five step procedure. This pro-
cedure is illustrated in Figure 1-22.
1
The contents of the program counter (0000 0011) are transferred to
the address register, which places it on the address bus.
The program counter is incremented to 0000 0100 in anticipation of
the next fetch phase.
‘The operand is read from the data bus into the data register.
‘The ALU combines the values from the accumulator and the data
register.
‘The sum from the ALU is placed into the accumulator, replacing the
number (7) that was previously stored there.
‘The computation portion of this program ends with the sum of the two
numbers in the accumulator. However, the program is not finished until
it tells the computer to stop executing instructions.
eae
eae
contrat
INSTRUCTION |
‘BEGSOER
acoumtaror \ [0/0]
COR ®
ARBTEtER (OTOTOTOT [OTTO] wien
©
sian | RERSRIGST
Bitehe | NOE IMAe
pare a
Tee ent
i
He a
Figure 1.22
Executing the ADI InstructionEXECUTING A PROGRAM 1-37
Fetching and Executing the HLT Instruction.
The final instruction in the program is an HLT instruction. Itis fetched
using the same fetch procedure as before. The four steps are illustrated
in Figure 1-23.
1
The address from the program counter is put on the bus via the
address register.
‘The program counter is incremented.
‘The contents of memory address 0000 0100 is read into the data
register from the data bus.
‘The HLT opcode is translated by the instruction decoder.
‘TheMPU halts.
MICROPROCESSOR
UNIT.
(MPU)
accums.aror [OTO]O]T
@ [imgseucr on |
¥ SEESSEH
1) eeanren
ADDRESS, aI
feeisrer
OTTO) Aeren
| Bis
Aopaess.
Bus
oO
MEMORY
soonees | .gisany, | MESRICST
DECIMAL
CONTENTS | CONTENTS
Figure 1-23
Executing the HLT instruction.1-38 MICROCOMPUTER BASICS
SK
In some microprocessors, the execution of the HLT instruction. places the
computer in a low power consumption or wait mode. The controller-se-
quencer then stops producing control signals. Consequently, the com-
puter operations stop. Notice that the program has accomplished its
objective of adding 7 and 10:0. The resulting sum, 1710, is in the ac-
cumulator,
Self-Test Review
Examine this sample program carefully, assume it starts at address 8016,
refer to the previous pages, and answer the following questions:
vr aS
ADI 3
2DI 5
BLT
30. During the first fetch phase, what binary number is loaded into the
data register? _
81. At the end of the first execute phase, the number 0000 1001 will be
inthe________andthe__register.
32. During the second fetch phase, what binary number is loaded into
the data register? __ é
33. If the first byte of the program is in address 8016, what is the
address of the second operand? ce
34. How many bytes does the program occupy?
35. What number is in the program counter at the end of the second
fetch phase? _
36. When the program is finished running, what number will be in the
accumulator?
37. What is the final number in the program counter? _
38. What is the final value of the address register? _
39. What is the final value in the data register?____ ____UNIT SUMMARY 1-39
10.
uu.
12.
13.
14.
15.
UNIT SUMMARY
A microprocessor is a logic device that is used in digital electronic
systems.
The microprocessor is the “brains” of the microcomputer. It
performs arithmetic, logic, and control operations.
‘The microcomputer is composed of a microprocessor, RAM,
ROM, a clock, and an I/O interface.
Parallel conductors within the microcomputer that carry address
and data information are called buses.
The microcomputer communicates with the “outside world”
through one or more I/O ports.
‘The operation of the microprocessor is controlled by a list of
instructions called a program.
One who writes these instructions is called a programmer.
The computer program is stored so that it can be used when it is
needed to perform an operation. This is known as the stored
program concept.
A bit is a binary digit. It can have only a value of 1 or 0.
A byte is a group of 8 bits.
A byte pattern can represent any one of 256, unique values,
including: signed numbers from —128 to +127, unsigned numbers
from 0 to 255, or the 128 characters and operations defined by
ASCII plus 128 other selected characters.
A computer word is the fundamental unit of information used in a
the computer. Current usage has given the word a length of
sixteen bits.
Sixteen bits can represent 65,536,9 unique values.
Microprocessors are known by the number of bits in their regis-
ters and on their data buses. For example, a microprocessor with
a 16-bit data bus is called a 16-bit microprocessor.
Most microprocessors have buses and registers that are 8-bits
long or multiples of 8-bits.1-40 MICROCOMPUTER BASICS
16. Ina 16-bit word, the byte representing the values from 2 through
2" is called the low byte, and the byte representing the values from
2 through 2! is called the high byte.
17. The bits in a word are numbered from 0 to 15 according to the
value they represent in an unsigned number. In other words, the
bit representing 2° is bit 0 and the bit representing 2" is called bit 7.
18. The microprocessor (MPU) contains many specialized circuits.
‘These include the data register, the instruction decoder, the
controller-sequencer, the arithmetic logic unit (ALU), the program
counter, the address register, and the accumulator.
ie The ALU performs arithmetic or logic operations on the data
supplied to the MPU. The data supplied to the ALU are called
operands.
20. ‘The accumulator is a specialized register that performs two
functions. First it holds one of the operands prior to an ALU.
operation. Second, it receives the result of an ALU operation.
21. Specific MPU instructions load data into the various MPU regis-
ters, operate on that data, and send data out of the MPU.
22, The data register is a temporary storage location for data going to
or coming from the data bus.
—23. The address register is a temporary storage location that controls
the address bus. You select a memory location or /O port by
putting its address in the address register.
24, The program counter controls the sequence of instructions in a
program. It is incremented after each memory operation, and
contains the address of the next memory location to be accessed.
—25, The instruction decoder translates the opcode in the data register
and directs the operation of the controller-sequencer.
26. The controller-sequencer determines the sequence of events
necessary to complete the operation described by the instruction
decoder.
27. Memory is a series of storage locations outside the MPU. If the
MPU is an 8 bit device, each memory location typically stores one
byte.UNIT SUMMARY 1-41
a.
28. Each memory location is identified by a unique address.
29. Memory is connected to the MPU by an address bus, a data bus,
and at least one control line (read/write).
30. Reading the contents of memory does not alter the contents of that
address. This is known as nondestructive read out (NDRO).
31. Memory that can be both read and written to during normal
computer operations is called random access memory, or RAM.
32. Memory that can only be read (not written) is called read only
memory, or ROM.
33. When executing a program, the MPU goes through a fundamental
sequence of steps or phases called the fetch-execute sequence.
34. In the fetch phase, the MPU reads and decodes the opcode in
memory. This time is the same for all types of instructions.
85. During the execute phase, the MPU performs the operation
described by the instruction. This time will vary depending on
the operation performed,
36. Amnemonic is a memory aid, or abbreviation. Mnemonics are used
by programmers to identify the opcodes and operands.
37. The opcode is the binary pattern that determines the operation the
MPU will perform. Each opcode has at least one related
mnemonic,
38. An operand is the data the instruction is to use. Operands may be
in registers or memory when the instruction begins execution.
‘The result of an operation is NOT an operand.1-42 MICROCOMPUTER BASICS
EXPERIMENTS
Perform Experiments 1 and 2.Unit 2
MICROPROCESSOR
ARCHITECTURE2-2 MICROPROCESSOR ARCHITECTURE
CONTENTS
INTRODUCTION GE resp cr tee erp eer te 23
JUNTR OBJECTIVES irre eerie eee rie reir 24
ARCHITECTURE OF THE 8085MPU .............. 25
‘The Registers ................ 27
INSTRUCTION SET ................. 2-10
ARITHMETIC INSTRUCTIONS ................ 2-13
Add ...... Beer eee 2-13
Subiract rete eee eee 2-20
SPECIAL ARITHMETIC AND LOGIC OPCODES 2.24
Togical AND apie eee is sic per P os cin ae ere 2-24
Logical OR ...... Bee Cerys 2-26
Logical ExclusiveOR........... 2.28
SHIFT AND OTHER LOGIC OPERATIONS 2-31
DAA and CMA 2-31
Shifts or Rotates... Persea es ore 2-35
UNIT SUMMARY = 2-38INTRODUCTION 2-3
INTRODUCTION
Now that you understand the basic concepts of microprocessors and computer
systems, let's take a look at the 8085 used in the EWS-8085 Trainer System. In this
unit you will leam what registers the 8085 contains, how they are related to each
other, and how to read an instruction set table.
‘As you learned in Unit 1, the 8085 is a member of the Intel© family of 8080 related
microprocessors. This means that its basic architecture is similar to the 8080, the
8088, the 8086, the 80286, the 80386, and the 80486.
For those of you who are familiar with the Motorola® family of microprocessors,
such as the 6800, working with the 8085 will require a new way of thinking. For
example; the addressing modes are slightly different. Pairs of data bytes are stored
in memory in reverse order (low byte in the low address). The interrupt vectors are
in low memory instead of high memory.
If you are leaming about microprocessors for the first time, don’t let this talk
discourage you. While itis true that different manufacturers have different ways of
doing things, the principles involved are similar, and the specific instruction set for
the particular microprocessor you are working with is all that’s important.
This course is about the 8085, and you will understand the 8085 when you complete
the course. This unit gives you the fundamentals of the 8085. These are important
because you cannot understand the units that follow if you don’t understand the
fundamentals.2-4 MICROPROCESSOR ARCHITECTURE
ST
UNIT OBJECTIVES
When you complete this unit you will be able to:
1. Identify the registers in the 8085, by size, function, and their
relationship to each other and the outside world.
2 Draw a block diagram of the 8085 MPU.
3. Given an instruction mnemonic and a table of opcodes, look up the
corresponding opcode.
4. Explain the relationship between the accumulator and the flag
register.
5. _ List and identify the flags in the 8085.
6. __ List the register pairs in the 8085.ARCHITECTURE OF THE 8085 MPU 2-5
ARCHITECTURE OF THE 8085 MPU
In computer terminology, the word architecture is used to describe the
computer's style of construction, its register size and arrangement, its
bus configuration, its operating speed, and the access to and by the out-
side world. The architecture of our hypothetical microprocessor is shown
again in Figure 2-1. By the end of this unit, you will be working with
block diagrams of the 8085. But, we are using this unit again here be-
cause of its simplified architecture, and to make the transition to the real
thing.
i
cont EE
LL
Figure 2-1
Architecture of the hypothetical microcomputer.
Figure 2-1 illustrates the two important architecture considerations for
you as a programmer. First, what registers are there. Second, which
registers are linked to which other registers.2-6 MICROPROCESSOR ARCHITECTURE
—.
‘You do not need to concern yourself with the control lines, because they
only cause things to happen in response to the opcodes, they are not paths
for data.
Let's examine the paths in this hypothetical unit. This discussion deals
with each register and circuit as seven elements in no particular order.
The first element is the accumulator, which can receive input from two
sources; the ALU and the data register. The second element, the ALU,
receives input from the Data Register, the Accumulator, and the Flags
(N, Z, V, and C), What, you may ask, are the Flags? The Flags can be
thought of as individual registers that reflect the outcome of the last
math or logic operation. You will learn about each one later in this unit.
For now, you can think of them as a special register that is linked to the
ALU, the accumulator, the data register, and the controller-sequencer -
~ that makes the flags the third element. The fourth element is the
Program counter. It receives input from the data register, or from
memory. Number five, the address register, receives input from the data
register, memory, or the program counter. Sixth, the data register gets
input from the accumulator, flags, or memory. But, as you can see, the
data register can feed any of the other registers. This makes it the most
used register, and the second most critical circuit in the microprocessor.
The instruction decoder, which only feeds the controller-sequencer,
receives its input only from the data register. Finally, the controller se-
quencer gets its input from the instruction decoder, the clock and exter-
nal control lines, and the flag register. The controller-sequencer controls
the operation of every register in the MPU, which makes it the mostcriti-
cal circuit.
Compare the hypothetical microprocessor (inside the dotted lines in
Figure 2-1) to the block diagram of the 8085A shown in Figure 2-2. Notice
these elements that are the same: the accumulator, the flags, the ALU,
the instruction decoder, the program counter, the address (buffer)
register, and the timing and control circuit (which is the same as the con-
troller-sequencer). The data register in our hypothetical MPU is replaced
by the dual purpose data/address buffer. In addition, you see an inter-
rupt control circuit, a serial /O control, a temporary register, an instruc-
tion register, a stack pointer, an incrementer/decrementer address latch,
as well as registers identified as B, C, D, E, H, and L,ARCHITECTURE OF THE 8085 MPU 2-7
an TTR, AST 6S TAP an
I
| aie teare ena
Figure 2-2
Block diagram of the 8085 microprocessor.
Beside the name of each register is a number in parentheses, which in-
| dicates the number of bits in that register. For example, the accumulator
has 8 bits, the flag register has only 5 bits, and the program counter has
16 bits.
/ During the remainder of this section, you will learn about all of these
registers and how they interact. The primary purpose of this course is to
‘ach you the instructions that control data flow through the MPU.
The Registers
Perhaps the most interesting feature of the 8085 is the group of registers
identified as the register array. Although all of these registers have
special operations associated with them, the letter designated registers
B, C, D, E, H, and Lare considered general purpose registers. These can
be used for certain math operations, as well as serving as pointers to
memory addresses. The stack pointer is always special purpose register
that points to a location in memory. You will learn all about the stack
operations that use this register in Unit 5.2-8 MICROPROCESSOR ARCHITECTURE
‘The 8085 has many instructions that allow you to perform operations on the data
in these nine registers, Included are instructions that exchange, copy, and compare
their contents. In addition, six of the 8-bit registers are paired to form three 16-bit
registers. As implied by the figure, the pairs are BC, DE, and HL. The limited math
operations you can perform on these registers make them much less than accumu-
lators, but still more powerful than data registers. The incrementer/decrementer
address latch instruction allows you to increase or decrease the value in these
registers.
For convenience, the Accumulator is also referred to as the A register. This allows
great amount of similarity in the mnemonics. For example, in Unit 1 you saw how
the MVI A instruction placed a value in the accumulator. There are also MVI
instructions to place values in the B, C, D, E, H, and L registers.
‘The accumulator and flag register are also paired to form the processor status
word, or PSW. Special instructions allow you to exchange the PSW with other
registers.
As shown by the arrows in Figure 2-2, data flow in the 8085 is quite similar to the
hypothetical microprocessor. The address buffer controls the high byte of the
address bus, the data/address buffer controls the low byte of the address bus as well
as sending and receiving data. This dual purpose architecture requires a circuit
‘outside the MPU to hold the low byte of the address bus so that the data\address
buffer can be used to send or receive data. This is also why the MPU has an
instruction register and a temporary register to hold one operand for the ALU. Both
of these registers are automatic in their operation. As a programmer, you do not
need to access either the instruction register or the temporary register.
‘Tomake iteasierto visualize the registers as you are writing programs, the registers
are usually pictured as shown in Figure 2-3. Only the registers that are programmer
accessible are shown. Because the accumulator and the flags can be combined to
form the PSW, they are shown side-by-side. The bit positions of the flags are
‘identified so that you can easily identify them. In addition, the RIM and SIM values
for the accumulator are shown.ARCHITECTURE OF THE 8085 MPU 2-9.
‘You will lear about RIM and SIM later, in the unit on interrupts. For now,
however, you should know that the flags are named sign (S), zero (Z), auxiliary
carry (A or AC), parity (P), and carry (C or CY). They will come up periodically
during the discussion, and their value will be revealed as you lear about the other
instructions. Be careful not to confuse the A flag with the accumulator, which is
often called the A register. Similarly, the C flag (carry) should not be confused with
the C register.
Locate the similar parts of Figure 2-3 on your programmer's reference card. As you
write programs, you will want torefer to this card and these figures regularly. Keep
your programmer's reference card handy, you will want to refer to it as you
continue this section.
nesneeet wor beim
ees
TT Fy (aaa
Trsrssmask
RESET AST? nes @) | Les. @
Soo ewe PROGRAM COUNTER)
‘Semaccutruroata |“ sragcronmEn io
Figure 2-3
Programming mode! for the 8085.2-10 MICROPROCESSOR ARCHITECTURE
SSS
INSTRUCTION SET
‘The key to accessing these registers and the power of the 8085 is the in-
struction set. Figure 2-4 is a list of the instructions for the 8085. Here,
they are listed in a matrix that shows the instruction associated with
each of the 256 opcodes. The hexadecimal numbers along the left side
represent the high nibble of the opcode. The hexadecimal numbers across
the top provide the low nibble. For example, the opcode for RIM is 2016.
Notice that 10 of the opcodes are not used. This leaves 246 usable op-
codes. As the course proceeds, you will see them listed in other ways. At
this time, you are not expected to remember all these mnemonies,or even
' to recognize them. What you should notice, is that they are grouped on
Loo the chart.
vOVE.E [MOV B.C |
(S[uovD8"Twov0.c J
[wovAC WOH [WOVE [ov —|wOVRL—[vov RN —[wov HA}
[MOVMC | WOV ND [MOVE —[WOV MH [wor [ra —Twov A]
{200° T7000 1700 TASH —]
Figure 2-4
‘8085 Microprocessor Instruction Set.INSTRUCTION SET 2-11
For example, the block of opcodes from 40,. to 7F,, are all move (MOV)
instructions, except the HLT instruction, 76,,, which occupies the spot
that might logically have been MOV M,M. It helps to look at the binary
values to see how the opcodes are structured. The MOV instructions all
have the pattern Olax 200m,, where the x values may vary. Further
examination shows that bits 3 through 6 designate the letter before the
comma and bits 0 through 2 designate the letter after the comma. This is
easiest to observe in the low three bits because the moves in columns 9,5
(1001) and 1), (0001) all end in the letter C. Not so easily observed is that
the same 001 pattern in bits 6, 5, and 4 also designates the letter C in
opcodes 48,, through 4F,,.
To see the similarities in the opcodes, you compare the values that are
common. In the previous example, the MOV instructions have a first
nibble of 0100, 0101, 0110, or 0111. In every ease the first bit is a 0 and
the second bit is a 1, which means the pattern is OLxx. The bits in the
second nibble can be any of the sixteen possible patterns, so that has a
pattern of xxx,
Let’s look at some of the other groups of opcodes and see how they are
alike, and yet different. Notice the opcodes with the RST mnemonics (C7
toF7 and CF to FF). These all have the form 11xxx111,. The first nibble
isC, D, E, or Fall have the first two bitsas1s, The second nibble is either
7 or F, both of which have the last three bits as 1s. Now look at the INR
instructions in columns 4 and C. You should see that these all have the
following bit pattern, Oxxx x1 00,. From your knowledge of digital circuits,
you should observe that these patterns can be decoded by AND and OR
gates torecognize these opcodes when they arein the instruction register.
‘This is significant, because it is exactly how the MPU decides what the
opcode is.
‘On your programmer's reference card the opcodes are divided into four
groups: data transfer, arithmetic and logic, branch control, and /O and
‘Machine control. For this course, we have regrouped the last two catego-
ies and diverted two special arithmetic and logic opcodes. As aresult, you
will learn the opcodes in five categories: arithmetic and logic, data
transfer (addressing modes), jumps and condition codes, stack opera-
tions, and /O and interrupts.2-12 MICROPROCESSOR ARCHITECTURE
Self-Test Review
1.
10.
Refer to Figure 2-4. What is the common pattern for the POP
and PUSH opcodes? ___
Again looking at the POP and PUSH opcodes, bit 2 is a1 for
the opcodes and a 0 for the opcodes.
The , _ is a two-byte regis-
ter formed by a combination of the accumulator and the flag
register.
In the 8085 the B, C, D, E, H, L, Stack Pointer, Program
counter, and increment/decrement address latch form the
Opcodes with the pattern 10xx x001 all contain the designation
for the ____ register in their mnemonic.
In the 8085, the ALU gets its input from the. , the
register, and the
‘The 8085 instruction decoder decodes the opcode in the __
register.
‘The 8085 has four register pairs, that are designated 4c,
DE,_HL, and PSW.
‘The low byte of the 8085 address bus is controlled by the
buffer.
‘The high byte of the 8085 address bus is controlled by the
buffer.ARITHMETIC INSTRUCTIONS 2-13
ARITHMETIC INSTRUCTIONS
The 8085's arithmetic opcodes are discussed in five categories: add, sub-
tract, increment, decrement, and special. Excepting the special instruc-
tions, these opcodes do simple addition or subtraction. In addition to
discussing the arithmetic operations, you will also learn about the carry
flag. The other flags are discussed in Unit 4. In general, the flags are af-
fected by the results of arithmetic and logic operations but not by any
other operations. This is very important, because you may want to per-
form other operations before the conditional operation based on the flags.
‘You must know which instructions affect the flags, and which ones do
not. As you read about each instruction, be sure to note which flags are
affected. On your programmer's reference card you should notice the
asterisk (* or **) and crosses (+). There are corresponding notes that in-
dicate which instructions affect all flags, which affect all except the carry
flag, and which affect only the carry flag.
Add
Most of the add instructions increase the value of the accumulator. The
increment instructions, which are also in this category have the ability
to add one (1) to any specific register or a location in memory. The double
add instruction affects the HL register pair. There are seven add instruc-
tions. They have the following mnemonics and affects on the flags:
‘Mogmanic ‘Flag impact
AD!
all fags aected
ADD all lags affected
ACI all lags affected
Apc all lags affected
INR all except CARRY affected
IX No fags atected
DAD only CARRY affected2-14 MICROPROCESSOR ARCHITECTURE
Before considering the addition of bytes or words, let’s review the addi-
tion of individual bits. Naturally, 0 plus 0 is 0, 1 plus 0 or 0 plus 1is 1. If
both bits are 1, the result is 0 with a carry of 1 to the next level. Because
of the carry generated by two ones, you must also consider the sum of
three bits, the two previously considered and the carry from the next
lower order. If any of the bits is zero, the addition is just like two bits
ignoring the zero. But, if all three bits are 1’s, the result is not only the
carry to the next level, but a one in that position created by the other two
ones. Here is a summary of the rules.
1. 040-0
2. o+1=1
3. 141-0 with a carry of 1
4. lettien with a carry of 1.
‘The ADI and ADD instructions add a byte to the accumulator. This is the
addition of two binary numbers, so the only other consideration is if a
carry is generated. In the binary addition of two bytes, you cannot have
more than a carry of one. Consider the following examples.
carry 4221 222° 12122 421 12222 222
0101 0102 3221 1211 1222 1112
#2020 2022 42121 1112 +9000 9902
total 10000 0000 11112 1110 10000 0000
Ineach of these examples, the combination of bits at each level generate
carry to the next level. Only in the center example did the total contain
ones in the intermediate positions. The carry to the eighth position is
sent to the carry flag, because there is no room for it in the byte. As a
result, each of these examples would leave a 1 in the carry flag. This is
fine if you only wish to add two single byte values, but to combine two or
more bytes for a result, you typically add the low order bytes and then
add the others, working your way to the most significant byte. To
accommodate this string of additions, you need to consider the carry from
the lower byte when you perform the addition. This is the reason for the
ACI and ADC opcodes.ARITHMETIC INSTRUCTIONS 2-15,
These opcodes add with the carry. In other words, for the 0 bit in that byte,
the carry bit is also added. Thus, if there was a carry from the previous
arithmetic operation, the low bit in this operation will include that carry.
However, you must consider that ADD, ADI, ADC, and ACTall place their
result in the accumulator. To use a series of these operations, you would
have to store the result of each operation and load a new byte into the
accumulator before the next addition. As mentioned earlier, the mathemati-
cal operations affect the flags, but the transfer instructions do not. There-
fore, your transfers between additions will not change the value of the carry
flag from the last addition.
‘You know that the results of the addition are placed in the accumulator, but
where does the other operand come from? Since you remember the block
diagram of the 8085 MPU, you probably answered “the temporary regis-
ter.” However, as you may also recall, the temporary register is not shown
in Figure 2-3, the programming model. The temporary register is loaded
automatically with the operand specified in the add instruction. If the
opcode is ADI or ACI, the value to be added is obtained from the byte of
memory immediately after the add opcode. For the ADD and ADC instruc-
tions, the source for the temporary register value may be any of the 8-bit
registers or the contents of memory at address M. However, you cannot add
the flag register. Thus, you can specify the ADD or ADC instructions with
any of the following:
Mnemonic Opcode Action
ADDA 87 = A+A=A
ADCA 8F 0 A+ Ancy=>A
ADD B 80 A+B=>A
ADCB 88 «= A+B cy=>A
ADDC 81 A+C=>A
ADCC 89 A+ C+cy=>A
ADDD 82 A+D=>A
ADCD 8A = As Da cy=>A
ADDE 83 A+E=>A
ADCE 88 = A+Excy=>A
ADDH 84. A+H=>A
ADCH 8C 0 A+Hcy=>A
ADDL 85 A+L=>A
ADCL 8D = A+L+cy=>A
ADDM 86 A+M=>A
ADCM = 8E-— A+ Macy=>A2-16 MICROPROCESSOR ARCHITECTURE
———
For convenience, the notations ADD r and ADC r are used. The r indi-
cates you can specify one of the 8-bit registers. Notice that these all have
the opcode pattern 1000 xxxx2 (8x16). Further, bit 3 determines the ef:
fect of the carry flag. IF bit 8 is a 1, the carry flag is considered. If bit 3 is
0, the carry flag has no effect. Also from the opcodes, it is easy to derive
the following chart.
Register Binary patern
forbits
240
Mt
000
oot
010
on
100
101
110
zr zmoom>|
‘These patterns are common to all instructions that affect the 8-bit
registers in the 8085. This is why the columns and rows in the opcode
table have the common pattern you saw earlier. Look for these patterns
as you learn about the other opcodes.
It is easy to understand the meaning of registers A through L, but what
about M? The description above indicates that it means memory. But
which memory? This is a very important feature of the 8085 microproces-
sor. The H (high) and L (low) registers are always pointing to a specific
location called M, for memory. Many of the 8085 opcodes deal with M, so
it is important to be aware of the value in the HL register pair. Not just
HL, but any register pair that points to an address in memory is referred
to as an index. This is the meaning of the X in INX and DCX.ARITHMETIC INSTRUCTIONS 2-17
In the instruction mnemonics, the indexes are specified as B, D, H, and
SP. You should recognize B, D, and H as the high byte of those register
pairs. SP is the stack pointer register.
With the exception of ADD A, none of these instructions affect the
registers specified as the operand of the mnemonic. These are source
registers, not destinations. In ADD A, the source is the A register, but as
you know, that is also the accumulator. As a result, this instruction adds
the accumulator to itself, so obviously the source value (the accumulator)
is changed. ADD Ais one way to double the value in the accumulator. You
will learn the other when you read about the logic operations later in this
unit. ADC A not only doubles the accumulator, it also considers the carry
(cy) from the next previous arithmetic operation.
ADI and ACI are similar to ADD and ADC, except that the value to be
added to the accumulatoris in the memory address after the opcode. This
is called immediate addressing, because the value is immediately after
the opcode. Again, the Cin ACI indicates that the carry flag will be added
to the sum of the accumulator and the immediate value.
INR instructions have the pattern 00xx x100. This time, bits 3, 4, and 5
identify which one of the eight registers is involved. The INR opcode
creases the contents of the register named. For example, the INR D
struction increases the D register by 1. You can add two to a register by
increasing the register twice. However, you cannot consider the carry
flag, because it is not affected by the INR instruction. Therefore, you can-
not link together several bytes and add to them with INR instructions,2-18 MICROPROCESSOR ARCHITECTURE,
2
‘However, you can increment register pairs: BC, DE, HL, or the stack pointer. To
do this you use the INX instruction. Although none ofthe flags are affected by INX,
the register pair is incremented by one. For example; if B is 0000 0000, and C is
1111 1111,, you can use INX B to increase that value by 1. The result will be a B
value of 0000 0001, and C value of 0000 0000,.. Notice that the carry from the C
register was applied to the B register. If both registers contain all Is, an INX B
instruction will cause both registers to go toall 0s. The common pattem for the INX
‘opcodes is 00x 0011. A cursory examination of the opcodes reveals that the
following bit patterns specify the register pairs.
Pair Binary pattern
for bits 5 and 4
BC 00
DE o
HL 10
SP 1
‘This 2-bit code for the double-length registers also has a common feature with the
3-bit codes used to identify the 8-bit registers. The codes for BC, DE, and HL have
the same values as the high 2-bits in the 3-bit register codes you saw earlier. For
example; the 3-bit code for B is 000, while C is 001. The code for the BC pair is
(00—the same as the high two bits. Like the 3-bit register code, these 2-bit codes
‘occur in many of the 8085 opcodes.ARITHMETIC INSTRUCTIONS 2-19
So that you will understand all this better, let's look at a program segment to add
two 4-byte numbers. The following sequence will do just that. This assumes that
cone 4-byte number is in registers BC and DE with the highest-order byte in B and
the lowest-order byte in E. The other number is in four sequential addresses, with
the lowest-order byte in the address currently indicated by HL. We also have touse
instructions such as MOV A,E to move (copy) the value from E into A. The result
is stored in memory, writing over the value that was there. This is done with the
instruction MOV M,A (copy A to M). The MOV instructions are explained
completely in Unit 3, but we must use them here to keep the program segment
correct.
1) MOV AE —_;Copy E (low byte) to A
2) ADD OM ‘Add low bytes, do not include carry
3) MOV = MA Store result in Memory
4) IX oH
5) MOV AD
8) ADC OM Add 2nd bytes, with cary
2 MOV = MA Store result in Memory
8) INX H sPoint to 3rd byte
9) MOV AG Copy C (Grd byte) to A
1) ADC OM Add 3rd bytes, with carry
11) MOV MA Store result in Memory
12) INX H ‘Point to 4th byte
13) MOV AB {Copy B (4th byte) oA
14) ADC M Add 4th bytes, with carry
15) MOV = MA _—_—_;Store result in Memory
Figure 2-5
Program segment to add four bytes.
Notice that you must start with the lowest byte, because the carry from that
operation affects the next operation. For example, if there is a carry from the
addition of the lowest bytes, the ADC operation at line 6 will add that carry to the
second two bytes. Similarly, the carry (if any) is included at lines 10 and 14. You
donot include the carry at line 2 because you do not want a carry from the previous
operation (whatever that was) to affect the sum of the first two bytes.2-20 MICROPROCESSOR ARCHITECTURE
The DAD instruction (opcode 00xx 10012) adds the specified double byte
register to the HL register. This is another way the HL register is dif-
ferent from BC and DE. Although the DAD instructions may generate a
carry, you cannot use that carry in a second DAD instruction. Therefore,
DAD is limited to adding two bytes, and the primary use for the carry is
to indicate that an overflow has taken place, and that the value in HL is
not complete. Although you can add additional bytes with the ADC in-
structions, this may not be the most efficient method.
Subtract
The subtract instructions subtract one value from another. In general,
this will decrease the value of the accumulator, just as the add instruc-
tions increase it. The decrement instructions, which are also in this
category have the ability to subtract one (1) from any specific register.
There is no double subtract instruction, but there are two compare in-
structions, so there are eight subtract instructions. They have the follow-
ing mnemonics and affects on the flags:
Mcemene ag imaact
sul allfags affected
sue all tags affected
SBI allfags affected
$88 alfags affected
ocr allexcept CARRY afeced
Dex no fags afectod
cmp allfags affected
cri all fags aflectedARITHMETIC INSTRUCTIONS 2-21
Let’s look at the SUB and SBB instructions first. The common pattem for these
opcodes is 1001 xxxx,. Just like the add instructions, bit 3 determines whether or
not the carry flag is considered. However, the mnemonic uses a B for borrow
instead of a C for Carry. When the opcode is executed, a borrow will set the carry
flag. There is not a different flag to indicate a borrow rather than a carry. Consider
the following rules and examples.
Borrow: Att 1114 44091:191 1449111
Minuend 000 0000 1010 1010 1000 0000
Subtrahend — =00000001 =1010 1011-9000 0001.
Difference 49919: 1191 40990: 1111 0111: 1111
‘The minuend is inthe accumulator and the subtrahend is identified by the opcode.
Inthe firsttwo examples, the subtrahend is one greater than the minuend. The result
isa value which is all sand a borrow assigned tothe carry flag. In the thirdexample,
the subtrahend is less than the minuend. Even though borrows are required for
several intermediate bits, the overall result does not include a borrow.
Just as you can add A to itself, you can also subtract A from itself. You may think
this is a strange instruction, since the result is always zero. However, SUB A may
bbe preferred to MVI A.0 (move immediate 0 into A) for two reasons. First, after
SUB A, the flags will be in a known condition. MVI A,0 does not affect the flags.
Second, MVT A.0 requires two bytes, SUB A only one.2-22 MICROPROCESSOR ARCHITECTURE
oo
Because of the number of single byte registers, the most plentiful sub-
traction opcodes are SUB and SBB. Study the following list of opcodes.
Compare it to the list of ADD and ADC opcodes, and notice the
similarities and differences.
Mnemonic Opcode ‘Action
SUBA 7 AAA
SBBA oF A-A-cy=A
SUBB 9 A-BeA
BBB 98 A-B-y=k
SUB C st A-CeA
BBC. 99 A-C-cy =A,
suBD 92 A-D=A
$88 D 8A A-D-cy=A
SUBE 3 A-EsA
SBBE 9B A-E-cyaa
SUB H % AHeA
SBBH 9c A-HecyeA,
SUB L 95 A-LeA
SBBL 90 AcL-cy=A
SUB M 96 AMeA,
‘SBBM 9 A-Meoy= A
The two lists (subtract and add) are very similar. The only difference in
the opcodes is that bit 4 is a 1 in the subtract instructions and 0 in the
add instructions. All of the operations here are minus, where they were
plus in the add list. The carry (borrow) flag is still listed as cy, because it
is still the carry flag even though it may test for a borrow.
‘The SUI and SBI instructions subtract the value given in the instruc-
tion. Again, the accumulator is the minuend, but the subtrahend is the
next byte in memory after the opcode. This means that SUI and SBI are
two byte instructions. In all other respects, SUI is the same as SUB and
SBI is the same as SBB.
‘You should use DCR and DCX when you want to subtract one from the
value in a register. Use DCR when you want to specify a one byte register
and DCX when the register pair is BC, DE, HL, or the stack pointer. Be-
cause these are one byte instructions, you will find they work well when
values up to 4 need to be subtracted. To do that, you simply repeat the
DCR or DCX instruction the required number of times.ARITHMETIC INSTRUCTIONS 2-23
‘These instructions compare the byte in the accumulator with another byte
specified by the opcode. In the case of CMP, it is one of the registers or the
M address specified by the HL index. CPI uses the value in memory
immediately after the CPI opcode. These instructions are listed with SUB
and SUI because their effect on the flags is the same. In other words, the
flags will be the same after you do a CMP B as they would be after a SUB
B. It is therefore very helpful to think of them in the same category.
As mentioned earlier, there is not a double-length subtract instruction.
Subtracting from a value in HL is not as easy as adding to it. It is also
difficult to complement the value in HL, so subtraction by addition is
complicated
Now answer the following self-test review questions and then perform
Experiment 4.
Self-Test Review
11. The result of an ADD E instruction is placed in the.
12, DAD B adds the register pair to the HL register pair and
puts the result in the register pair and the carry flag.
13. The INR instruction affects all flags except the ____flag.
14, INR and DCR instructions affect ___-byte registers.
15. _ INX and DCX instructions affect _-byte registers.
16. The X in INX and DCX means
17. The register pair always points to a byte identified as M in
the instruction mnemonics.
18. The I in ADI, ACI, SUI, and SBI stands for
19. CMP and CPI affect the flags the same as a/an instruction.2-24 MICROPROCESSOR ARCHITECTURE
—
SPECIAL ARITHMETIC AND LOGIC
OPCODES
Besides addition and subtraction, the 8085 is also capable of several logi-
cal combinations of two values. From your experience with digital cir-
cuits, you should be familiar with the expressions AND, OR, and
Exclusive OR. As you also know, the circuits in a digital computer are
based on these logic combinations. It should seem natural therefore, that
the microprocessor allows you to use these functions to combine values
within a program. For simplicity, these three operations will be con-
sidered separately, although they have much in common.
One thing they all have in common is that they affect all the flags.
Logical AND.
When you AND two bytes, the individual bits of the byte are considered
separately. For example, if you AND the values 1010 1111z and 1111
01012, you get 1010 01012, The carry flag will always be cleared after an
AND operation. Let’s review the AND function quickly before you con-
tinue.
The logic table in Figure 2-6 shows the possible combinations of two bits.
The logic operations in the 8085 will not combine more than two bits
during any operation, so this table is sufficient.
tA bin AaND
° ° °
° 1 °
1 ° °
1 1 1
Figure 2.6
AND logic table.
The rule is that the result is only a 1 when both inputs are 1’s. Another
way to say this is that any 0 input will result in a 0 output.‘SPECIAL ARITHMETIC AND LOGIC OPCODES 2-25,
The mnemonics for the 8085 AND operations are ANA and ANI. After
the ANA, you indicate the 1-byte register A, B, C, D, E, H, L, or M. Ifyou
use ANI, you specify the value to be ANDed. The opcode for the ANA in-
structions have the pattern 1010 Oxxxg. Bits 0, 1, and 2 indicate the 1-
byte register that will be ANDed with the accumulator. As usual, the
result will be placed in the accumulator, and all flags are affected. ANA
A can be used to check the value in the accumulator without changing
it, This maybe useful if the value was moved to A from some other loca-
tion.
The ANI instruction is like the other immediate instructions. The
operand byte is in the next address. Other than that, itis identical to the
ANA instruction. All flags are affected, and the carry flag will be 0 after
an ANT opcode is executed. ANTis also useful when you want to clear all
but certain bits in a byte. For example, if you want to know if bit 0 is a
1, you can use ANT 01 to clear all but bit 0. Then, if the value in the ac-
cumulator is zero, you know that bit 0 is a 0. If the byte is not zero, bit 0
must be a 1. This operation is called masking, because all 0 values in
the mask will be 0's in the result. The only bits that will be 1's are those
that are 1’s in both the accumulator and the operand. You will learn more
about this under the heading of flags in Unit 4, but Figure 2-7 will show
you how an AND logic mask works,
test byte 01000011 bso, 1, ne.are set
AND mask 00000010-totest bt
result 00000010 only bit eset
tostbyto 01001001 bis 0,9, 26.are set
AND mask 00000010 —toteet bt
resut 00000000 no bits are set
Figure 2-7
AND logic mask.
In the first example, bit 1 is set (1) in both the test byte and the mask.
Asa result, the AND function has bit 1 set, so the value is NOT zero. In
the second example, bit 1 is not set in the test byte, so the result is zero.2-26 MICROPROCESSOR ARCHITECTURE
—.
‘The purpose of this course is to teach you the instructions for the 8085,
0 we cannot show you alll the ways you can use the instructions. This is
left to you and your imagination. However, you must keep in mind the
rules for each operation.
Logical OR
‘When you OR two bytes, the result will have 1's where either of the source
bytes contained 1's. The table in Figure 2-8 shows the result of combin-
ing the four different possible inputs. For OR operations the rule is that
the output is a 1 whenever either input is a 1. Or, the output is 0 only
when both inputs are 0. The carry flag and auxiliary carry flag will al-
ways be cleared after an OR function.
baa be agae
° ° °
° 1 1
1 ° 1
1 1 1
Figure 2-8
OR logic table.‘SPECIAL ARITHMETIC AND LOGIC OPCODES 2-27
‘The mnemonics for 8085 OR operations are ORA and ORI. The ORA
instructions are followed by the name of the l-byte register that you want
to OR with the accumulator. The opcode for ORA is 1011 0xxx,, which is
thesameas ANA except bit fouris now a1. Like ANI, ORI canalsobe used
to test for a specific bit. If you wish to test bit 0, you can apply ORI FE,
and check if the resulting byte has an odd or even number of Is. An even.
number of 1s means bit 0 is a 1, and an odd number of 1s means bit 0 is
0. This is also a mask, but this time the values that are 1s in the mask
will be1sin the result. Again, you will learn more about masks under the
heading of flags in Unit 4, but Figure 2-9 does show you how an OR logic
mask works.
test byte 0100 0011 bits 0, 1, & 6 are set
OR mask 1111-1101 to test bit 1
result Wt 1011 number of 1s is even
test byte 0100 1001 bits 0, 3, & 6 are set
ORmask ©1111 1101 to test bit 1
result 1111 1101 number of 1s is odd
Figure 2.9
OR logic mask.
In the first example, bit 1 in the test byte is being tested to see if it is set
(1). Therefore, all ofthe bits in the mask are set except for bit 1. Because
bit 1 in the test byte is set, the OR function causes all bits to be set in the
result. This produces in an even number (8) of 1s in the result, which will
be reflected in the parity flag. In the second example, bit 1 is not set in the
test byte, so it is not set in the result. Therefore, an odd number of bits (7)
are 1s in the result. This is only one of the many ways you can use the OR
instruction. It is an interesting fact that ORA A and ANA A havethe same
result. The accumulator is unchanged, but the flags are set or cleared
appropriately.2-28 MICROPROCESSOR ARCHITECTURE
OO
Logical Exclusive OR
The rule for the exclusive OR (KOR) function is that the output is a 1
when the two inputs are different. This is the same as saying that the
output is a 0 whenever both inputs are the same. This is useful when you
want to selectively change one or more of the bits in a byte. Figure 2-10
is a table showing the input and output values for the XOR function,
bia bie AxoRE
° ° °
° 1 1
1 ° 1
1 1 °
Figure 2-10
XOR logic table.
‘The 8085 exclusive OR instructions are XRA and XRI. By now, you should
be getting used to the structure of these mnemonics, so it should be ob-
vious that XRA is followed by the 1-byte register name, which will be ex-
clusively ORed with the accumulator. By referring to the Opcode Chart
you can see that the opcode for the XRA instructions is 1010 1xxx. XRI,
of course, combines the next byte in memory with the value in the ac-
cumulator. Like the AND and OR functions, the carry flag and auxiliary
carry flag will always be cleared after an OR function. The one byte in-
struction XRA A is sometimes used to clear the accumulator.SPECIAL ARITHMETIC AND LOGIC OPCODES 2-29
Figure 2-11 shows the effect of using an exclusive OR mask on a byte.
For this example, we have used the output of the first operation as the
input of the second, you can see that the byte returns to its original value
when the mask is applied twice.
test byte 01000011 bits 0, 1, 8 Gare sat
XORmask 00001111 toggle the low nibble
result 01001100 high nibble same, low nibble
‘complimented
tect byte 01001100 bis 2, 3, AE arosot
XORmask 00001111 toggle low nibble
resut 01000011 high nibble same, low nibble
complimented
Figure 2-11
XOR logie mask.
Any 1 in the XOR mask toggles the corresponding bit in the test byte.
One use for this is to convert lowercase ASCII characters to uppercase
and vice versa. The difference between uppercase and lowercase ASCII
characters is that bit 6 is a 1 for lowercase and a 0 for upper case. If you
use an XOR mask of 0100 00002, bit 6 will toggle, making lowercase upper
and uppercase lower.
‘Think about that and decide how you might use the AND and/or OR func-
tions to covert all characters to uppercase or all to lowercase.
Have you thought about it? To convert uppercase letters to lowercase,
you must change bit 6 from a 0 to a 1. This is easily done by ORing a byte
that has only bit 6 set, with the ASCII character. In Experiment 5, you
will have an opportunity to see this, and then exercise the instructions
that convert lowercase to uppercase.
‘Now answer the following self-test review questions and then perform
Experiment 5.2-30 MICROPROCESSOR ARCHITECTURE
SS
Self-Test Review
20. The mnemonic for the instruction that ANDs the next (immediate)
byte with the accumulator is,
21. When you AND 1011 11112 with 0110 00012 the result is
23. If you want to AND the accumulator with the H register the
mnemonic to use is
24. What will be the value in the accumulator after XRAA?__
25. An AND mask has____’s in the bits you want to retain.
26. An exclusive OR mask has____’s in the bits you wish to remain the
same.
27, What is the mnemonic to AND the contents of memory (as pointed to.
by HL) with the accumulator,SHIFT AND OTHER LOGIC OPERATIONS 2-31
SHIFT AND OTHER LOGIC OPERATIONS
‘The remaining instructions and opcodes for this unit are listed in Figure
2-12. These fall into three categories. The first category contains the
instructions that rotate, or shift, the accumulator. The second has only
one instruction, which compliments the accumulator. And the last
category, also with one instruction adjusts the eccumulator for binary
coded decimal.
Mnemonic —Opeode Flags fected Action
RUC or ‘cary only Fate Ala Ay = Ay A, = 67
ARC oF cary ony Rotate Aight, Ay =A, A, = cy
RAL 1 cary only Fotate Alef A, = oy, y= A
RAR + cary only Rotate A ight, A= cy, cy =A,
CMA oF none ‘Acomplime
DAA ar al Decimal agust A= A
Figure 2-12
Rotates, DAA, and CMA.
DAA and CMA
Let's look at the last two categories first. DAA, opcode 0010 01115, adjusts
the accumulator so that the value is in a format called binary coded
decimal, or BCD. Binary coded decimal means that instead of the eight
bits representing a number between 0 and 255,., they represent two
decimal digits. This allows a range between 0 and 99,,. Figure 2-13 is a
table of the BCD values.2-32 MICROPROCESSOR ARCHITECTURE
—_.
Because BCD is a convenient notation, it is often used to represent num-
bers that must be displayed. It requires special handling, as you will see,
and requires more space in memory that a simple binary number.
‘Decimal ‘Bina BCD
° 2000 0000000
1 001 2000 001
2 coro eno 010
a cons 0000 011
‘ 100 000 0100
5 ovo 2000101
6 ox10 e200 0110
7 ons 0000111
® 1000 0000 1000
° t001 0000 1001
0 toro 0001 0000
1 ron 003 0001
1100 0001 0010
8 101 0010011
“ mo 2010100
1s mt 001 0101
Figure 2-13
Binary Coded Decimal.
From 0 through 9, you should recognize these as the same as the
hexadecimal values. For values greater than 9, the BCD requires a
second nibble that is not all zeros.‘SHIFT AND OTHER LOGIC OPERATIONS 2-33
The microprocessor adds two bytes in the same way, regardless of
whether the code is BCD or not. However, ifthe values are BCD this could
Jead to some errors. The examples in Figure 2-14 show what can happen.
cary 0110 100 1000 1001 10000 001 0001 000
0101 O10 0101 0110 1001 1000 0000 1000
200110100 401000100 £1000 0001 +0000 1000
total 1000 1001 1001 1010 10001 1001 0001 0000,
55 6 98 08
4 +44 sat 208
89 910 119 10
Figure 2-14
BCD addition.
‘The first example (in the left column) adds the binary values for 85,, and
52,, and produces the sum 187). If the values were BCD, 554, plus 34,
produces a total of 89,,, which is also correct.
In the second example, the situation is slightly different. The binary
addition sees the values as 86, plus 68,9 for a total of 154, . However, if
the numbers are BCD, the addition is 56,, plus 44,, and a total of 9 10,
But that cannot be! The highest nibble in BCD is equal to 9,,, A nibble
value of 10,, is not allowed. Obviously an adjustment is needed.
Let’s check the third example. In binary, the addition is 152,, plus 129,
fora total of 26,, and carry. But in BCD, the addition would be 98, plus
81,9, for a total of 19,, plus a carry. Obviously an error.
In the fourth example, the numbers are very simple. In standard binary
the values represent 8,» plus 89, for a total of 16,5. In BCD it is also 8,5
plus 8,., but the total only represents 10,9, How can this problem be
corrected?
‘The answer is to use the decimal adjust accumulator (DAA) instruction.
DAA makes use of the carry flag and an intermediate, or auxiliary, carry
flag (A or AC). The A flag is set whenever there is a carry from bit 3 to bit
4 during a math operation in the accumulator.2-34 MICROPROCESSOR ARCHITECTURE
TT
Let's see how this can help solve the problem. In the first example, no
adjustment was necessary. Itis also obvious that neitherthe carrynorthe
Aflag would be set. In the second example, neither the carry nor the A flag
are set, but there is a problem. It appears that the lower nibble is greater
than 9. To correct the problem use the first DAA rule is as follows:
1. When the resulting low nibble ualue is greater than 9, DAA must add
6 to the result.
Let’s see how that looks:
cary 1000 100
0101 0110
+0100 0100
subtotal 1001 1010
add6 +0000 0110
total 1010 0000
But wait, the BCD now says 56,, plus 44, is 10 0, At first glance, you
might think that is right, but remember, BCD does: not permit any nibble
with a value greater than 9. This leads to the second rule:
2. Ifthe result in the high nibble is greater than 9, DAA must add 6 to
it—that is, add 60,9 o the byte value.
Let's check example 2 again.
carry 1000 100
0101 0110
201000100
sibtoll 1001 1010
add 6 400000110 (rule 1)
subtotal "1010 0000
add60 401100000 (rule 2)
total 1 0000 0000
‘Now the value is correct. 56,, plus 44, is 00,5 plus a carry to the next
byte (100,,).
But what about the third example? Neither result is greater than 9,
but the high nibble is only one, and it should be seven. This leads to a
modification of the second rule:
2. (Revised) If the result in the high nibble is greater than 9, or the
carry flag is set, DAA must add 6 to it—that is, add 60, to the
byte value.