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

30-Module 2 - 8086 Programming-22-03-2024

Uploaded by

pandeaditya1507
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
24 views

30-Module 2 - 8086 Programming-22-03-2024

Uploaded by

pandeaditya1507
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 24

AVERAGE OF THREE NUMBERS

ORG 100H

MOV BX, 5000H

MOV [BX], 20H

INC BX

MOV [BX], 42H

INC BX

MOV [BX], 30H

MOV AL, 0H

ADD AL, [BX]

DEC BX

ADD AL, [BX]

DEC BX

ADD AL, [BX]

MOV BL, 3H

DIV BL
RET

FACTORIAL (JNZ)

ORG 100H

MOV AL, 01H

;;;;;;;;;;;;;;;;;;;;LOOP;;;;;;;;;;;;;;;;;

MOV BL, 03H

LAB: MUL BL

DEC BL

JNZ LAB

;;;;;;;;;;;;;;;;;;;;LOOP;;;;;;;;;;;;;;;;;

RET

FACTORIAL (LOOP)

ORG 100H

MOV AL, 01H

;;;;;;;;;;;;;;;;;;;;LOOP;;;;;;;;;;;;;;;;;

MOV BL, 03H

LAB: MUL BL

DEC BL

JNZ LAB

;;;;;;;;;;;;;;;;;;;;LOOP;;;;;;;;;;;;;;;;;

RET
REVERSING AN ARRAY

ASSUME CS:CODE, DS:DATA

DATA SEGMENT
STR1 DB 01H,02H,05H,03H,04H
STR2 DB 5 DUP(?)
DATA ENDS

CODE SEGMENT
START:
MOV AX, DATA
MOV DS, AX
LEA SI, STR1
LEA DI, STR2+4
MOV CX, 05H

BACK: CLD
MOV AL, [SI]
MOV [DI], AL
INC SI
DEC DI
DEC CX
JNZ BACK

MOV AH, 00H


INT 21H

CODE ENDS
END START
;
MOVING A STRING

.ORG 100H

;;;;;;;;;;;;;;;STORING STRING ;;;;;;;;;;;

MOV AX, 5000H

MOV DS, AX

MOV SI, 1000H

MOV [SI], 63H

INC SI

MOV [SI], 61H

INC SI

MOV [SI], 74H

;;;;;;;;;;;;;;;STORING STRING ;;;;;;;;;;;


MOV AX, 5000H ; DEFINE SOURCE ADDRESS

MOV DS, AX

MOV SI, 1000H

MOV AX, 6000H ; DEFINE DESTINATION ADDRESS

MOV ES, AX

MOV DI, 2000H

MOV CX, 03H

CLD

REP MOVSB

;;;;;;;;;;;;;;;VIEWING STRING ;;;;;;;;;;;

MOV AX, 6000H

MOV DS, AX

MOV DI, 2000H

MOV AL, [DI]

INC DI
MOV AL, [DI]

INC DI

MOV AL, [DI]

;;;;;;;;;;;;;;;VIEWING STRING ;;;;;;;;;;;

RET

COMPARING TWO STRINGS

; YOU MAY CUSTOMIZE THIS AND OTHER START-UP TEMPLATES;


; THE LOCATION OF THIS TEMPLATE IS
C:\EMU8086\INC\0_COM_TEMPLATE.TXT

.ORG 100H

;;;;;;;;;;;;;;;STORING STRING 1;;;;;;;;;;;

MOV AX, 5000H

MOV DS, AX

MOV SI, 1000H

MOV [SI], 63H

INC SI
MOV [SI], 68H

INC SI

MOV [SI], 74H

;;;;;;;;;;;;;;;STORING STRING 1;;;;;;;;;;;

;;;;;;;;;;;;;;;STORING STRING 2;;;;;;;;;;;

MOV AX, 6000H

MOV DS, AX

MOV DI, 2000H

MOV [DI], 63H

INC DI

MOV [DI], 61H

INC DI

MOV [DI], 74H

;;;;;;;;;;;;;;;STORING STRING 2;;;;;;;;;;;


;;;;;;;;;;;;;;;COMPARING STRING ;;;;;;;;;;;

MOV AX, 5000H ; SETTING STRING 1 ADDRESS

MOV DS, AX

MOV SI, 1000H

MOV AX, 6000H ; SETTING STRING 2 ADDRESS

MOV ES, AX

MOV DI, 2000H

MOV CX, 03H

CLD
; IF SAME ZF=1, DIFFERENT ZF=0
REPE CMPSB

;;;;;;;;;;;;;;;COMPARING STRING ;;;;;;;;;;;

RET

SCANNING A STRING
; YOU MAY CUSTOMIZE THIS AND OTHER START-UP TEMPLATES;
; THE LOCATION OF THIS TEMPLATE IS
C:\EMU8086\INC\0_COM_TEMPLATE.TXT

ORG 100H

;;;;;;;;;;;;;;;STORING STRING ;;;;;;;;;;;

MOV AX, 5000H

MOV DS, AX

MOV SI, 2000H

MOV [SI], 63H

INC SI

MOV [SI], 61H

INC SI

MOV [SI], 74H

;;;;;;;;;;;;;;;STORING STRING ;;;;;;;;;;;

MOV AX, 5000H

MOV ES, AX

MOV DI, 2000H


MOV CX, 03H

MOV AL, 69H

CLD ; IF FOUND ZF=1, NOT FOUND ZF=0

REPNE SCASB

RET

ADDING TWO NUMBERS

; YOU MAY CUSTOMIZE THIS AND OTHER START-UP TEMPLATES;


; THE LOCATION OF THIS TEMPLATE IS
C:\EMU8086\INC\0_COM_TEMPLATE.TXT

ASSUME CS:CODE,DS:DATA1

DATA1 SEGMENT

A DB 02H

B DB 05H

SUM DB ?
CARRY DB 00H

DATA1 ENDS

CODE SEGMENT

START:

MOV AX,DATA1

MOV DS, AX

MOV AL, A

MOV BL, B

ADD AL, BL

JNC GO

MOV CARRY, 01H

GO: MOV SUM, AL

MOV AH, 00H


INT 21H

END START

CODE ENDS

END

RET

ADDING FIVE NUMBERS

; YOU MAY CUSTOMIZE THIS AND OTHER START-UP TEMPLATES;


; THE LOCATION OF THIS TEMPLATE IS
C:\EMU8086\INC\0_COM_TEMPLATE.TXT

ASSUME CS:CODE, DS:DATA

DATA SEGMENT

NUMLIST DB 01H, 02H, 03H, 03H, 02H


COUNT EQU 05H

RESULT DW 01H DUP (?)

DATA ENDS

CODE SEGMENT

START:

MOV AX, DATA ; GET THE SEGMENT ADDRESS OF DATA SEGMENT IN DS


REGISTER

MOV DS, AX

MOV CX, COUNT ; COUNT IS THE NUMBER OF DATA HAS TO BE ADDED

MOV SI, OFFSET NUMLIST ; GET THE OFFSET ADDRESS OF NUMLIST

MOV AX, 0000H

MOV BX, 0000H

LP: MOV BL, [SI]

ADD AX, BX
INC SI

DEC CX

JNZ LP

MOV DI, OFFSET RESULT ; GET THE OFFSET ADDRESS OF RESULT IN DI


REGISTER

MOV [DI], AX

; MOV RESULT, AX

MOV AH, 00H

INT 21H

CODE ENDS

END START

RET

ADDITION USING DAA


; YOU MAY CUSTOMIZE THIS AND OTHER START-UP TEMPLATES;
; THE LOCATION OF THIS TEMPLATE IS
C:\EMU8086\INC\0_COM_TEMPLATE.TXT

ASSUME CS:CODE, DS:DATA

DATA SEGMENT

OPR1 DB 42H

OPR2 DB 98H

RESULT DB 02 DUP (00)

DATA ENDS

CODE SEGMENT

START:

MOV AX, DATA

MOV DS, AX
MOV AX, 0000H

MOV AL, OPR1

MOV BL, OPR2

ADD AL, BL

DAA

MOV SI, OFFSET RESULT

MOV [SI], AL

JNC MSB0

MOV AH,01H

INC SI

MOV [SI], AH

MSB0: MOV AH, 00H

INT 21H

CODE ENDS

END START
RET

SUBTRACTION USING DAS

; YOU MAY CUSTOMIZE THIS AND OTHER START-UP TEMPLATES;


; THE LOCATION OF THIS TEMPLATE IS
C:\EMU8086\INC\0_COM_TEMPLATE.TXT

ASSUME CS:CODE, DS:DATA

DATA SEGMENT

OPR1 DB 63H

OPR2 DB 86H

DATA ENDS

CODE SEGMENT
START:

MOV AX, DATA

MOV DS, AX

MOV AX, 0000H

MOV AL, OPR1

MOV BL, OPR2

SUB AL, BL

DAS

JNC MSB0

MOV BH, AL

MOV AL, 99H

SUB AL, BH

DAS

ADD AL, 01H

DAA
MSB0: MOV AH, 00H

INT 21H

CODE ENDS

END START

RET

MATRIX ADDITION

; YOU MAY CUSTOMIZE THIS AND OTHER START-UP TEMPLATES;


; THE LOCATION OF THIS TEMPLATE IS
C:\EMU8086\INC\0_COM_TEMPLATE.TXT

ASSUME CS:CODE, DS:DATA

DATA SEGMENT
MAT1 DB 01H, 02H, 03H, 07H, 02H, 06H, 04H, 02H, 05H ;3X3 1X9

MAT2 DB 05H, 07H, 08H, 02H, 02H, 04H, 03H, 01H, 06H ;3X3 1X9

DIM EQU 09H

MATR DW 09H DUP (?)

DATA ENDS

CODE SEGMENT

START:

MOV AX, DATA ; GET THE SEGMENT ADDRESS OF DATA SEGMENT IN DS


REGISTER

MOV DS, AX

MOV CX, DIM ; COUNT IS THE NUMBER OF DATA HAS TO BE ADDED

MOV SI, OFFSET MAT1 ; GET THE OFFSET ADDRESS OF NUMLIST

MOV DI, OFFSET MAT2


MOV BX, OFFSET MATR

MOV AX, 0000H

LP: MOV AL, [SI]

MOV DL, [DI]

ADD AL, DL

MOV WORD PTR [BX], AX

INC DI

INC SI

ADD BX, 0002H

DEC CX

JNZ LP

MOV AH, 00H

INT 21H

CODE ENDS
END START

RET

SQUARE ROOT OF PERFECT SQUARE (2, 4, 9, 16, 25….)

ASSUME CS:CODE. DS:DATA

DATA SEGMENT

NUM EQU 36

RESULT DB ?

DATA ENDS

CODE SEGMENT

START:

MOV AX, DATA

MOV DS, AX

MOV CL, NUM

MOV BL, 1

MOV AL, 0
UP:CMP CL, 0

JZ ZERO

SUB CL, BL

INC AL

ADD BL, 02

JMP UP

ZERO: MOV RESULT, AL

MOV AH, 00

INT 21H

CODE ENDS

END START

PRINTING STRING ON DISPLAY

ASSUME CS:CODE,DS:DATA

DATA SEGMENT
MSG1 DB 'HELLO',0
DATA ENDS

CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET MSG1
MOV CX,0005H
MOVE:
MOV AH,02H
MOV DL,[BX]
INT 21H
INC BX
DEC CX
JNZ MOVE
MOV AH,00H
INT 21H

CODE ENDS
END START

You might also like