You are on page 1of 27

Programming

Programming 8086
8086
Slide Courtesy
Rajvir Singh and
Dr. Vineet Kumar
Introduction to
programming
• Machine level language
• Assembly level language
• High level language

21/1/2011 ES C263: MICROPROCESSOR 2


PROGRAMMING AND
Machine level language
• Program is stored in successive memory locations by
storing sequence of binary numbers corresponding to each
instruction.
00100 11100100
00101 00000101
……… ………….
• Drawbacks:
1. Programmer need to memorize thousands of instruction
codes for CPU.
2. More error prone

21/1/2011 ES C263: MICROPROCESSOR 3


PROGRAMMING AND
Assembly Language
• One level higher than machine language
• Easier than machine level language.
• Assembler translates AL programs into
machine code which is stored in memory.
• AL program statement format is:

4
Assembly Language
• Label : identifies instructions
• Opcode: contains mnemonics e.g. ADD, SUB
may be 2, 3 or 4 letters wide
• Operand: contains data, memory address, port address
or register names.
ADD AL,07 H
ADD BH, AL
• Comment: starts with ; in a statement. They do not
become part of machine code

5
AL program to machine code
conversion
• Hand coding - Manually by using
manufacturer’s data sheet
• Using Assembler

6
High level language

• It is even easier than AL programming.


• It is less abstract than ALP.
• HL programs are bigger than AL Programs.
• An HL statement may represent many machine
code instructions.
• An interpreter program or compiler program is
required.
• Programs in HLL can be usually written faster
than ALL but are executed more slowly.

7
Addressing Modes

• The different ways in which a


processor can access data are called
addressing modes
Accessing Code and Stack

• 8086 accesses instructions using


contents of CS & IP register
• 8086 accesses stack using contents
of SS & SP register
How 8086 accesses data?
• 8086 assembly language instructions
can be used to illustrate the
addressing modes
• Format of MOV instruction
MOV destination, source
• Source of data can be
– Immediate data
– A specified register
– A memory location specified in 1 of 24
different ways
• Destination of data can be
– A specified register
– A memory location specified in 1 of 24
different ways
Classification of
Addressing Modes
1. Register addressing mode
2. Immediate addressing mode
3. Memory addressing mode
4. Port addressing mode
5. Relative addressing mode
6. Implied addressing mode
1. Register addressing mode

• Source/destination can be one of the


8086 registers
• MOV AX, BX ; 16-bit data transfer
• MOV AL, BL ; 8-bit data transfer
2. Immediate addressing mode
• 8 or 16-bit data can be specified as
part of the instruction
• E.g. MOV AL, 45H
MOV BX, 5062H
3. Memory addressing mode
• One of the operands is in memory
• 8086 must use
– a segment register
– A 16-bit offset (effective address)
• By default, DS register is used for
accessing data from memory
• 16-bit offset can be specified in many
ways
Different ways of
specifying offset
• Direct memory addressing
• Register Indirect addressing
• Based addressing
• Indexed addressing
• Based-Indexed addressing
• String addressing
a. Direct Memory addressing

• Effective address is specified


directly in the instruction
• E.g. MOV BX, [5062]
• 20-bit physical address of memory
location is calculated using DS and
offset value 5062
Accessing memory
Segment register

+ = 20-bit physical address


of operand
16-bit offset
b. Register indirect addressing

• The effective address of memory


operand is present in one of the base
or index registers [BX, BP, SI, DI]
• E.g. MOV CX, [BX]
• If DS = 2000H, BX = 0004H
• THEN contents of memory location
20004H are copied to register CX
c. Based addressing
• Effective address is sum of
– 16-bit offset given in instruction
– Contents of base register BX or BP
• Segment register is DS or SS
• E.g. MOV AX, 4[BX]
• E.G. PUSH CX
d. Indexed addressing
• Effective address is sum of
– 16-bit offset given in instruction
– Contents of index register SI or DI
• Segment register is DS
• E.g. MOV AX, 4[SI]
e. Based-Indexed addressing
• Effective address is sum of
– 16-bit offset given in instruction
– Contents of index register SI or DI
– Contents of base register BX or BP
• Segment register is DS
• E.g. MOV AX, 4[BX][SI]
f. String addressing

• Used when string related instructions


are executed
• Uses index registers
• SI register points to the first byte or
word of the source string
• DI register points to the first byte or
word of the destination
Classification of
Addressing Modes
1. Register addressing mode
2. Immediate addressing mode
3. Memory addressing mode
4. Port addressing mode
5. Relative addressing mode
6. Implied addressing mode
4. Port addressing

• Two I/O port addressing modes can


be used
– Direct (e.g. IN AL, 02H)
– Indirect (e.g. IN AL, DXH)
5. Relative addressing mode
• Specifies the operand as a 8-bit
signed displacement relative to PC
• E.g. JNC 08H
• IF carry = 0, THEN IR is loaded with
current IR contents + 8-bit signed
value
6. Implied addressing mode
• No operands are specified
• E.g. CLC
• Means clear carry flag

You might also like