8086 micro processor programs 2

27
8086 PROGRAMMING:2 Dr Vinita Kumari

Upload: sayyed-amir-hussain

Post on 23-Jan-2018

156 views

Category:

Education


6 download

TRANSCRIPT

Page 1: 8086 micro processor programs 2

8086 PROGRAMMING:2Dr Vinita Kumari

Page 2: 8086 micro processor programs 2

8086 SOFTWARE MODEL

2

When you write your assembly language program for an 8086, theoretically you should define the different segments!!!

Page 3: 8086 micro processor programs 2

Data segment refers to an area of memory set

aside for data

• Format DS:BX or DI or SI

• example:DS:0200 = 25

DS:0201 = 12

DS:0202 = 15

DS:0203 = 1F

DS:0204 = 2B

Program SegmentsData segment

Page 4: 8086 micro processor programs 2

PROGRAM TO ADD ARRAY OF DATA

Page 5: 8086 micro processor programs 2

Example:

Add 5 bytes of data: 25H, 12H, 15H, 1FH,

2BH

Program SegmentsData segment

using data segment with a constant offset

Data location in memory:

DS:0200 = 25

DS:0201 = 12

DS:0202 = 15

DS:0203 = 1F

DS:0204 = 2B

Program:

MOV AL,0

ADD AL,[0200]

ADD AL,[0201]

ADD AL,[0202]

ADD AL,[0203]

ADD AL,[0204]

Page 6: 8086 micro processor programs 2

PROGRAM TO ADD ARRAY OF DATA USING INC

INSTRUCTION

Page 7: 8086 micro processor programs 2

Example:

Add 5 bytes of data: 25H, 12H, 15H, 1FH,

2BH

Program SegmentsData segment

using data segment with an offset register

Program:

MOV AL,0

MOV BX,0200H

ADD AL,[BX]

INC BX ;same as “ADD BX,1”

ADD AL,[BX]

INC BX

ADD AL,[BX]

INC BX

ADD AL,[BX]

INC BX

ADD AL,[BX]

END

Page 8: 8086 micro processor programs 2

PROGRAM TO ADD ARRAY OF DATA USING

JUMP INSTRUCTION

Page 9: 8086 micro processor programs 2

Example:

Add 5 bytes of data: 25H, 12H, 15H, 1FH,

2BH

Program SegmentsData segment

using data segment with an offset register

Program:

MOV AL,0

MOV BX,0200H

MOV CL, 05H

BACK: ADD AL,[BX]

INC BX

DEC CL

JNZ : BACK

MOV [BX], AL

END

Page 10: 8086 micro processor programs 2

PROGRAM TO ADD ARRAY OF DATA WITH CARRY

Page 11: 8086 micro processor programs 2

Example:

Add 5 bytes of data: 25H, 12H, 15H, 1FH,

2BH

Program SegmentsData segment

using data segment with an

offset register

Program:

MOV AL,0

MOV BX,0200H

MOV CL, 05H

MOV DL, 00H

BACK: ADD AL,[BX]

INC BX

JNC: NEXT

INC DL

NEXT: DEC CL

JNZ : BACK

MOV [BX], AL

INC BX

MOV [BX], DL

Page 12: 8086 micro processor programs 2

8085 PROGRAM TO ADD ARRAY OF DATA

USING JUMP INSTRUCTION

Page 13: 8086 micro processor programs 2

Example:

Add 5 bytes of data: 25H, 12H, 15H, 1FH,

2BH

Program SegmentsData segment

Program:

LXI H 2050

MVI A,00H

MOV B, M

MVI C, 05H

BACK: ADD B

INX H

DCR C

JNZ : BACK

MOV M, A

Page 14: 8086 micro processor programs 2

8086 PROGRAM TO ADD TWO 16 BIT

NUMBER

Page 15: 8086 micro processor programs 2

PROGRAM TO ADD TWO 16 BIT NUMBERS

DATA SEGMENT

NUM DW 1234H, F234H

SUM DW 2 DUP (0)

DATA ENDS

CODE SEGMENT

ASSUME CS: CODE, DS: DATA

START: MOV AX, DATA

MOV DS, AX

MOV AX, NUM

MOV BX, 0H

ADD AX, NUM+2

JNC DOWN

INC BX

DOWN: MOV SUM,AX,

MOV SUM+2, BX

MOV AH, 4CH

CODE ENDS

END START

Page 16: 8086 micro processor programs 2

INPUT: 1234H, F234H

OUTPUT: 10468H

Page 17: 8086 micro processor programs 2

8086 PROGRAM TO SUBTRACT TWO 16 BIT

NUMBER

Page 18: 8086 micro processor programs 2

PROGRAM TO SUBSTRACT TWO 16 BIT

NUMBERS

DATA SEGMENT

NUM DW F234H, 1234H

DIF DW ?

DATA ENDS

CODE SEGMENT

ASSUME CS: CODE, DS: DATA

START: MOV AX, DATA

MOV DS, AX

MOV AX, NUM

SUB AX, NUM+2

MOV DIF,AX,

MOV AH, 4CH

CODE ENDS

END START

Page 19: 8086 micro processor programs 2

8086 PROGRAM TO SUBTRACT TWO 16 BIT

NUMBER USING LEA INSTRUCTION

Page 20: 8086 micro processor programs 2

DIRECTION FLAG

one of 8086 processor control flags.

controls the direction of string operations:

DF = 0 => forward processing

DF = 1 => backward processing

CLD - clears the DF; sets DF = 0

STD - sets DF = 1

Page 21: 8086 micro processor programs 2

21

If the direction flag is cleared with a CLDinstruction, then the pointers in SI and DI will beautomatically be incremented after each stringoperation

If the direction flag is set with an STD instruction,then the pointers in SI and DI will be automaticallybe decremented after each string operation

Page 22: 8086 micro processor programs 2

INSTRUCTION DESCRIPTION(CONTD.)

.

LEA – Load Effective Address

LEA register, source: determines offset of the

variable or memory location named source and

puts it into 16-bit register.

LEA DI, NEW_LOC

Page 23: 8086 micro processor programs 2

PROGRAM TO SUBTRACT TWO 16 BIT

NUMBERS

DATA SEGMENT

NUM DW 1234H, F234H

DIF DW ?

DATA ENDS

CODE SEGMENT

ASSUME CS: CODE, DS: DATA

START: MOV AX, DATA

MOV DS, AX

CLD

LEA SI, NUM

MOV AX, [SI]

SUB AX, [SI+2]

MOV DIF,AX,

MOV AH, 4CH

CODE ENDS

END START

Page 24: 8086 micro processor programs 2

PROGRAM TO ADD A SERIES OF FIVE 16 BIT

NUMBERS

DATA SEGMENT

NUM DW 1234H, F234H, 1111H,

2123H, 1024H

SUM DW ?

DATA ENDS

CODE SEGMENT

ASSUME CS: CODE, DS: DATA

START: MOV AX, DATA

MOV DS, AX

MOV CL, 05

MOV BX,00

CLD

GO:LEA SI, NUM

MOV AX, [SI]

ADD AX, [SI+2]

JNC: NEXT

INC BX

NEXT:DEC CL

JNZ: GO

MOV SUM,AX,

MOV AH, 4CH

CODE ENDS

END START

Page 25: 8086 micro processor programs 2

8086 PROGRAM TO MULTIPLY TWO 16 BIT

UNSIGNED NUMBER USING LEA INSTRUCTION

Page 26: 8086 micro processor programs 2

MUL

MUL source

Multiplies an unsigned byte from source times an

unsigned byte in AL register or unsigned word in AX

register

Example

MUL BH- AL times BH, result in AX

MUL CX- AX times CX, result high word in DX, low

word in AX

MUL BYTE PTR [BX]- AL times byte in DS pointed

by [BX]

Page 27: 8086 micro processor programs 2

PROGRAM TO MULTIPLY TWO 16 BIT

NUMBERS

DATA SEGMENT

NUM DW 1234H, F234H

PROD DW 2 DUP (0)

DATA ENDS

CODE SEGMENT

ASSUME CS: CODE, DS: DATA

START: MOV AX, DATA

MOV DS, AX

CLD

MOV DX, 00H

LEA SI, NUM

MOV AX, [SI]

MUL AX, [SI+2]

MOV PROD, AX

MOV PROD+2, DX

MOV AH, 4CH

CODE ENDS

END START