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.
Download as PPTX, PDF, TXT or read online on Scribd
0 ratings0% 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.
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