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

8086 Addressing Modes & Programming Introduction

The document discusses the 8086 addressing modes, data transfer instructions, arithmetic instructions, number representation, logical instructions, string instructions, and program transfer instructions. It also covers assembler directives like ASSUME, DB, DD, DQ, and ENDS that provide instructions to the assembler. The document outlines how an 8086 assembly language program is structured with columns for address, data, labels, mnemonics, operands, and comments.
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
35 views

8086 Addressing Modes & Programming Introduction

The document discusses the 8086 addressing modes, data transfer instructions, arithmetic instructions, number representation, logical instructions, string instructions, and program transfer instructions. It also covers assembler directives like ASSUME, DB, DD, DQ, and ENDS that provide instructions to the assembler. The document outlines how an 8086 assembly language program is structured with columns for address, data, labels, mnemonics, operands, and comments.
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 22

8086 Addressing Modes &

Programming Introduction
Addressing Modes
• Implied Addressing – The data value/data address is
implicitly associated with the instruction

• Register Addressing – The data is specified by referring the


register or the register pair in which the data is present .

• Immediate Addressing – The data itself is provided in the


instruction.

• Direct Addressing – The instruction operand specifies the


memory address where data is located.
Addressing Modes
• Register indirect addressing – The instruction specifies a
register containing an address, where data is located.

• Based - 8-bit or 16-bit instruction operand is added to the


contents of a base register (BX or BP), the resulting value is
a pointer to location where data resides.

• Indexed - 8-bit or 16-bit instruction operand is added to the


contents of an index register (SI or DI), the resulting value is
a pointer to location where data resides.
Addressing Modes
• Based Indexed - the contents of a base register (BX or BP) is
added to the contents of an index register (SI or DI), the
resulting value is a pointer to location where data resides.

• Based Indexed with displacement - 8-bit or 16-bit


instruction operand is added to the contents of a base
register (BX or BP) and index register (SI or DI), the resulting
value is a pointer to location where data resides.
Data Transfer Instructions
Data Transfer Instructions
Arithmetic Instructions
Arithmetic Instructions
Number Representation
Logical Instructions
String Instructions
Program Transfer Instructions
Program Transfer Instructions
Processor Control Instructions
Assembler Directives
• Assembler directives give instruction to the assembler
where as other instructions discussed in the above section
give instruction to the 8086 microprocessor.
• Assembler directives are specific for a particular assembler
• However all the popular assemblers like the Intel 8086
macro assembler, the turbo assembler and the IBM macro
assembler use common assembler directives
Important Directives
• The ASSUME directive tell the assembler the name of the logical segment
it should use for a specified segment
• The DB directive is used to declare a byte-type variable or to set aside one
or more storage locations of type byte in memory (Define Byte)
• The DD directive is used to declare a variable of type doubleword or to
reserve memory locations which can be accessed as type doubleword
(Define Doubleword)
• The DQ directive is used to tell the assembler to declare a variable 4
words in length or to reverse 4 words of storage in memory (Define
Quadword)
Important Directives
• The ENDS directive is used with the name of a
segment to indicate the end of that logical
segment.

• The EQU is used to give a name to some value or


symbol
Assembly Language Program
• Writing assembly language programs for 8086 is slightly
different from that of writing assembly language programs
for 8085
• In addition to the instructions that are meant for solving
the problem, some additional instructions are required to
complete the programs
• The purpose of these additional programs is to initialize
various parts of the system, such as segment registers, flags
and programmable port devices
• Some of the instructions are to handle the stack of the
8086 based system
Assembly Language Program
• Another purpose of these additional instructions is to
handle the programmable peripheral devices such as ports,
timers and controllers
• The programmable peripheral interfaces should be
assigned suitable control words to make them to function
in the way as we expect
• The best way to approach the initialization task is to make a
checklist of all the registers, programmable devices and
flags in the system we are working on
Assembly Language Program
• An 8086 assembly language program has five
columns namely
– Address
– Data or code
– Labels
– Mmnemonics
– Operands
– Comments
Assembly Language Program
• The address column is used for the address or
the offset of a code byte or a data byte
• The actual code bytes or data bytes are put in
the data or code column
• A label is a name which represents an address
referred to in a jump or call instruction
• Labels are put in the labels column
Assembly Language Program
• The operands column contains the registers,
memory locations or data acted upon by the
instructions
• A comments column gives space to describe the
function of the instruction for future reference

You might also like