63
Data transfer instructions Write an ALP to move a block of data BYTE from one memory location to another WITHOUT OVERLAPPING .MODEL SMALL .DATA SRC DB 01h,02h,03h,04h,05h DES DB 05h DUP(?) .CODE MOV AX,@DATA MOV DS,AX MOV SI, OFFSET SRC MOV DI, OFFSET DES MOV CL, 05h START: MOV AL,[SI] MOV [DI],AL INC SI INC DI DEC CL JNZ START MOV AH, 4Ch INT 21h END OUTPUT:- Before execution:- After execution:-

Mplab Programs

Embed Size (px)

DESCRIPTION

MPlab

Citation preview

Page 1: Mplab Programs

Data transfer instructions

Write an ALP to move a block of data BYTE from one memory location to another WITHOUT

OVERLAPPING

.MODEL SMALL

.DATA

SRC DB 01h,02h,03h,04h,05h

DES DB 05h DUP(?)

.CODE

MOV AX,@DATA

MOV DS,AX

MOV SI, OFFSET SRC

MOV DI, OFFSET DES

MOV CL, 05h

START: MOV AL,[SI]

MOV [DI],AL

INC SI

INC DI

DEC CL

JNZ START

MOV AH, 4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 2: Mplab Programs

Write an ALP to move a block of data WORD from one memory location to another WITHOUT

OVERLAPPING

.MODEL SMALL

.DATA

SRC DW 1234h,2222h,3333h,4444h

DES DW 04h DUP(?)

.CODE

MOV AX,@DATA

MOV DS,AX

MOV SI, OFFSET SRC

MOV DI, OFFSET DES

MOV CL, 08h

START: MOV AL,[SI]

MOV [DI],AL

INC SI

INC DI

DEC CL

JNZ START

MOV AH, 4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 3: Mplab Programs

Write an ALP to move a block of data BYTE from one memory location to another WITH

OVERLAP

.MODEL SMALL

.DATA

SRC DB 11h,22h,33h,44h,55h

DES DB 05h DUP(?)

.CODE

MOV AX,@DATA

MOV DS,AX

MOV SI, OFFSET SRC

MOV DI, OFFSET DES

MOV CL, 05h

START: MOV AL,[SI+04h]

MOV [DI+02h],AL

DEC SI

DEC DI

DEC CL

JNZ START

MOV AH, 4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 4: Mplab Programs

Write an ALP to move a block of data WORD from one memory location to another WITH

OVERLAP

.MODEL SMALL

.DATA

SRC DW 1234h,2222h,3333h,4444h

DES DW 04h DUP(?)

.CODE

MOV AX,@DATA

MOV DS,AX

MOV SI, OFFSET SRC

MOV DI, OFFSET DES

MOV CL, 08h

START: MOV AL, [SI+07h]

MOV [DI+02h], AL

DEC SI

DEC DI

DEC CL

JNZ START

MOV AH, 4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 5: Mplab Programs

Write an ALP to interchange ‘N’ BYTES of data stored in consecutive memory locations

.MODEL SMALL

.DATA

SRC DB 11h,22h,33h,44h,55h

DES DB 66h,77h,88h,99h,0AAh

.CODE

MOV AX,@DATA

MOV DS,AX

MOV SI, OFFSET SRC

MOV DI, OFFSET DES

MOV CL, 05h

START: MOV AL,[SI]

MOV BL,[DI]

MOV [SI],BL

MOV [DI],AL

INC SI

INC DI

DEC CL

JNZ START

MOV AH, 4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 6: Mplab Programs

Write an ALP to interchange ‘N’ WORDS of data stored in consecutive memory locations

.MODEL SMALL

.DATA

SRC DW 1234h,2222h,3333h,4444h

DES DW 5555h,6666h,7777h,8888h

.CODE

MOV AX,@DATA

MOV DS,AX

MOV SI, OFFSET SRC

MOV DI, OFFSET DES

MOV CL, 08h

START: MOV AL,[SI]

MOV BL,[DI]

MOV [SI],BL

MOV [DI],AL

INC SI

INC DI

DEC CL

JNZ START

MOV AH, 4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 7: Mplab Programs

Write an ALP to MOVE a block of data WORD from one memory location to another IN REVERSE

ORDER

.MODEL SMALL

.DATA

SRC DW 1111h,2222h,3333h

DES DW 03h DUP(?)

.CODE

MOV AX,@DATA

MOV DS,AX

MOV SI, OFFSET SRC+05h

MOV DI, OFFSET DES

MOV CL, 06h

START: MOV AL,[SI]

MOV[DI],AL

DEC SI

INC DI

DEC CL

JNZ START

MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 8: Mplab Programs

Write an ALP to INTERCHANGE ‘N’ bytes of data in REVERSE ORDER

.MODEL SMALL

.DATA

X DB 01h,02h,03h,04h,05h

Y DB 0Ah,0Bh,0Ch,0Dh,0Eh

.CODE

MOV AX,@DATA

MOV DS,AX

MOV SI,OFFSET [X+04h]

MOV DI,OFFSET [Y]

MOV CL,05h

UP: MOV AL,[SI]

MOV BL,[DI]

MOV [SI],BL

MOV [DI],AL

DEC SI

INC DI

DEC CL

JNZ UP

MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 9: Mplab Programs

Arithmetic & Logical instructions

Write an ALP to ADD ‘N’ BYTES of data stored in consecutive memory locations and store the

result in a memory location

.MODEL SMALL

.DATA

NUM DB 01h,02h,03h,04h,05h

RES DB ?

.CODE

MOV AX,@DATA

MOV DS,AX

MOV SI, OFFSET NUM

MOV CL, 05h

MOV BL,00h

MOV AL,[SI]

UP: INC SI

ADD AL,[SI]

JNC DOWN

INC BL

DOWN: DEC CL

JNZ UP

MOV [RES],AL

MOV [RES+1],BL

MOV AH, 4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 10: Mplab Programs

Write an ALP to ADD ‘N’ WORDS of data stored in consecutive memory locations and store the

result in a memory location

.MODEL SMALL

.DATA

NUM DW 0FFFFh,0EEEEh,0DDDDh,0CCCCh

RES DW 02h DUP(?)

.CODE

MOV AX,@DATA

MOV DS,AX

MOV SI, OFFSET NUM

MOV CL, 04h

MOV BL,00h

MOV AX,[SI]

UP: INC SI

INC SI

ADD AX,[SI]

JNC DOWN

INC BL

DOWN: DEC CL

JNZ UP

MOV [RES],AX

MOV [RES+2],BX

MOV AH, 4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 11: Mplab Programs

Write an ALP to ADD ‘N’ WORDS of data along WITH CARRY

.MODEL SMALL

.DATA

X DW 1234h,2222h

Y DW 3333h,4444h

R DW ?

.CODE

MOV AX,@DATA

MOV DS,AX

MOV CX,02h

MOV BX,00

CLC

UP: MOV AX,X[BX]

ADC AX,Y[BX]

MOV R[BX],AX

INC BX

INC BX

LOOP UP

MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 12: Mplab Programs

Write an ALP to SUBTRACT ‘N’ WORDS of data along WITH BORROW

.MODEL SMALL

.DATA

X DW 1234h,2222h

Y DW 3333h,4444h

R DW 02 DUP(?)

.CODE

MOV AX,@DATA

MOV DS,AX

MOV CX,02h

MOV BX,00

CLC

UP: MOV AX,X[BX]

SBB AX,Y[BX]

MOV R[BX],AX

INC BX

INC BX

LOOP UP

MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 13: Mplab Programs

Write an ALP to carry out SIGNED MULTIPLICATION

.MODEL SMALL

.DATA

NUM1 DW -128h

NUM2 DW 0045h

RES DW 02h DUP(?)

.CODE

MOV AX,@DATA

MOV DS,AX

MOV AX,NUM1

MOV BX,NUM2

MUL BX

MOV RES,AX

MOV RES+2,DX

MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 14: Mplab Programs

Write an ALP to carry out SIGNED MULTIPLICATION (USING IMUL INSTRUCTION)

.MODEL SMALL

.DATA

NUM1 DW -128h

NUM2 DW 0045h

RES DW 02h DUP(?)

.CODE

MOV AX,@DATA

MOV DS,AX

MOV AX,NUM1

MOV BX,NUM2

IMUL BX

MOV RES,AX

MOV RES+2,DX

MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 15: Mplab Programs

Write an ALP to carry out UNSIGNED DIVISION

.MODEL SMALL

.DATA

NUM1 DW 2222h

NUM2 DW 02h

RES DW 02h DUP(?)

.CODE

MOV AX,@DATA

MOV DS,AX

MOV AX,NUM1

MOV BX,NUM2

DIV BX

MOV RES,AX

MOV RES+2,DX

MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 16: Mplab Programs

Write an ALP to carry out SIGNED DIVISION

.MODEL SMALL

.DATA

NUM1 DW -128h

NUM2 DW 0045h

RES DW 02h DUP(?)

.CODE

MOV AX,@DATA

MOV DS,AX

MOV AX,NUM1

MOV BX,NUM2

CWD

IDIV BX

MOV RES,AX

MOV RES+2,DX

MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 17: Mplab Programs

Write an ALP to find GCD of two numbers

.MODEL SMALL

.DATA

N1 DB 03h

N2 DB 06h

GCD DB ?

.CODE

MOV AX,@DATA

MOV DS,AX

MOV AL,N1

MOV BL,N2

UP: CMP AL,BL

JE LAST

JA L1

SUB BL,AL

JMP UP

L1: SUB AL,BL

JMP UP

LAST: MOV GCD,AL

MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 18: Mplab Programs

Write an ALP to find LCM of two numbers

.MODEL SMALL

.STACK 64h

.DATA

NUM DW 0025,0015

LCM DW 02 DUP(?)

.CODE

MOV AX,@DATA

MOV DS,AX

MOV DX,00h

MOV AX,[NUM]

MOV BX,[NUM+2]

UP: PUSH AX

PUSH DX

DIV BX

CMP DX,00h

JE LAST

POP DX

POP AX

ADD AX,NUM

JNC UP

INC DX

JMP UP

LAST: POP [LCM+2]

POP [LCM]

MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 19: Mplab Programs

Write an ALP to perform ASCII ADJUST after ADDITION, SUBTRACTION and

MULTIPLICATION

ADDITION:-

.MODEL SMALL

.DATA

N1 DB 38h

N2 DB 34h

N3 DW ?

.CODE

MOV AX,@DATA

MOV DS,AX

MOV AL,N1

AND AL,0Fh

MOV BL,N2

AND BL,0Fh

MOV AH,00H

ADD AL,BL

AAA

ADD AX,3030h

MOV N3,AX

MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 20: Mplab Programs

SUBTRACTION:-

.MODEL SMALL

.DATA

N1 DB 38h

N2 DB 34h

N3 DW ?

.CODE

MOV AX,@DATA

MOV DS,AX

MOV AL,N1

AND AL,0Fh

MOV BL,N2

AND BL,0Fh

MOV AH,00H

SUB AL,BL

AAS

ADD AX,3030h

MOV N3,AX

MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 21: Mplab Programs

MULTIPLICATION:-

.MODEL SMALL

.DATA

N1 DB 38h

N2 DB 34h

N3 DW ?

.CODE

MOV AX,@DATA

MOV DS,AX

MOV AL,N1

AND AL,0Fh

MOV BL,N2

AND BL,0Fh

MOV AH,00H

MUL BL

AAM

ADD AX,3030h

MOV N3,AX

MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 22: Mplab Programs

Write an ALP to perform ASCII ADJUST before DIVISION

.MODEL SMALL

.DATA

NUM1 DW 0405h

NUM2 DB 36h

RES DB 02 DUP(?)

.CODE

MOV AX,@DATA

MOV DS,AX

MOV BL,NUM2

AND BL,0Fh

MOV AX,NUM1

AAD

DIV BL

OR AX,3030h

MOV [RES],AL

MOV [RES+1],AH

MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 23: Mplab Programs

Write an ALP to find SQUARE of a number

.MODEL SMALL

.DATA

X DW 012h

R DW ?

.CODE

MOV AX,@DATA

MOV DS,AX

MOV AX,X

MUL AX

MOV [R],AX

MOV [R+2],DX

MOV AH, 4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 24: Mplab Programs

Write an ALP to find CUBE of a number

.MODEL SMALL

.DATA

X DW 012h

R DW ?

.CODE

MOV AX,@DATA

MOV DS,AX

MOV AH,00h

MOV AX,X

MOV BX,AX

MUL AX

MUL BX

MOV [R],AX

MOV [R+2],DX

MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 25: Mplab Programs

Code conversions:-

Write an ALP to convert 8 bit BCD to BINARY

.MODEL SMALL

.DATA

NUM DB 99h

BIN DB 02 DUP(?)

.CODE

MOV AX,@DATA

MOV DS,AX

MOV AL,NUM

AND AL,0F0h

MOV CL,04h

SHR AL,CL

MOV BL,0Ah

MUL BL

MOV BL,AL

MOV AL,NUM

AND AL,0Fh

ADD AL,BL

MOV BIN,AL

MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 26: Mplab Programs

Write an ALP to convert 16 bit (8 bit) BCD to HEXADECIMAL

.MODEL SMALL

.DATA

NUM DW 9999h

BIN DW 02 DUP(?)

.CODE

MOV AX,@DATA

MOV DS,AX

MOV AX,[NUM]

AND AX,0F000h

MOV CL,0Ch

ROR AX,CL

MOV BX,03E8h

MUL BX

MOV BX,AX

MOV AX,[NUM]

AND AX,0F00h

MOV CL,08h

ROR AX,CL

MOV DX,64h

MUL DX

ADD BX,AX

MOV AX,[NUM]

AND AX,00F0h

MOV CL,04h

ROR AL,CL

MOV DX,0Ah

MUL DX

ADD BX,AX

MOV AX,[NUM]

AND AX,000Fh

ADD AX,BX

MOV [BIN],AX

MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 27: Mplab Programs

Write an ALP to convert binary (HEX) number to BCD

.MODEL SMALL

.DATA

NUM DW 0ABCDh

RES DB 05 DUP(?)

.CODE

MOV AX,@DATA

MOV DS,AX

MOV AX,[NUM]

LEA SI,RES

MOV BX,0Ah

BACK: MOV DX,0000h

DIV BX

MOV [SI+4],DL

DEC SI

CMP AX,0000h

JNE BACK

MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 28: Mplab Programs

Write an ALP to find the FACTORIAL of a number

.MODEL SMALL

.DATA

NUM1 DB 05h

RES DB 01 DUP(?)

.CODE

MOV AX,@DATA

MOV DS,AX

MOV AX,0001h

MOV BL,NUM1

CMP BL,00h

JC L1

CALL FACTORIAL

L1: MOV RES,AL

MOV AH,4Ch

INT 21h

FACTORIAL PROC NEAR

CMP BX,0001h

JC RETURN

PUSH BX

DEC BX

CALL FACTORIAL

POP BX

MUL BX

RET

RETURN: MOV AX,0001h

RET

FACTORIAL ENDP

END

OUTPUT:-

Before execution:-

After execution:-

Page 29: Mplab Programs

Bit manipulation instructions

Write an ALP to find whether the given number is POSITIVE or NEGATIVE and display the

corresponding message

.MODEL SMALL

.DATA

NUM DB -04h

MSG1 DB 10,13,'THE NUMBER IS POSITIVE $'

MSG2 DB 10,13,'THE NUMBER IS NEGATIVE $'

.CODE

MOV AX,@DATA

MOV DS,AX

MOV AL,[NUM]

ROL AL,01h

JNC DISP_POS

LEA DX,MSG2

MOV AH,09h

INT 21h

JMP DOWN

DISP_POS: LEA DX,MSG1

MOV AH,09h

INT 21h

DOWN: MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 30: Mplab Programs

Write an ALP to find whether the given number is EVEN or ODD and display the corresponding

message

.MODEL SMALL

.DATA

NUM DB 87h

MSG1 DB 10,13,'THE NUMBER IS EVEN $'

MSG2 DB 10,13,'THE NUMBER IS ODD $'

.CODE

MOV AX,@DATA

MOV DS,AX

MOV AL,[NUM]

ROR AL,01h

JNC DISP_EVEN

LEA DX,MSG2

MOV AH,09h

INT 21h

JMP DOWN

DISP_EVEN: LEA DX,MSG1

MOV AH,09h

INT 21h

DOWN: MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 31: Mplab Programs

Write an ALP to find the number of 1’s and 0’s in a given number

.MODEL SMALL

.DATA

NUM DB 3Fh

ZERO_CNT DB ?

ONE_CNT DB ?

.CODE

MOV AX,@DATA

MOV DS,AX

MOV AL,[NUM]

MOV BX,0000h

MOV CL,08h

UP: ROR AL,01h

JNC Z_NUM

INC BH

JMP DOWN

Z_NUM: INC BL

DOWN: LOOP UP

MOV [ZERO_CNT],BL

MOV [ONE_CNT],BH

MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 32: Mplab Programs

Write an ALP to find whether the given number is 2 out of 5 code or not and display the

corresponding message

.MODEL SMALL

.DATA

NUM DB 11h

MSG1 DB 10,13,'VALID 2 OUT OF 5 CODE $'

MSG2 DB 10,13,'NOT VALID 2 OUT OF 5 CODE $'

.CODE

MOV AX,@DATA

MOV DS,AX

MOV AL,[NUM]

AND AL,1Fh

MOV CX,05h

MOV BL,00h

UP: ROR AL,01h

JNC DOWN

INC BL

DOWN: LOOP UP

CMP BL,02h

JZ DISPLAY

LEA DX,MSG2

MOV AH,09h

INT 21h

JMP LAST

DISPLAY: LEA DX,MSG1

MOV AH,09h

INT 21h

LAST: MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 33: Mplab Programs

Write an ALP to find whether the given number is BITWISE PALINDROME or not and display the

corresponding message

.MODEL SMALL

.DATA

NUM DW 0F00Fh

MSG1 DB 10,13,'THE NUMBER IS BITWISE PALINDROME $'

MSG2 DB 10,13,'THE NUMBER IS NOT BITWISE PALINDROME $'

.CODE

MOV AX,@DATA

MOV DS,AX

MOV CX,08h

MOV AX,[NUM]

MOV BX,AX

BACK: ROR AX,01h

JNC NEXT

ROL BX,01h

JC DO

JMP DOWN

NEXT: ROL BX,01h

JC DOWN

DO: LOOP BACK

LEA DX,MSG1

MOV AH,09h

INT 21h

JMP LAST

DOWN: LEA DX,MSG2

MOV AH,09h

INT 21h

LAST: MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 34: Mplab Programs

Write an ALP to find whether the given number is NIBBLEWISE PALINDROME or not and display

the corresponding message

.MODEL SMALL

.DATA

NUM DW 1010h

MSG1 DB 10,13,'THE NUMBER IS NIBBLEWISE PALINDROME $'

MSG2 DB 10,13,'THE NUMBER IS NOT NIBBLEWISE PALINDROME $'

.CODE

MOV AX,@DATA

MOV DS,AX

MOV AX,[NUM]

MOV BX,AX

MOV CL,04h

ROR BL,CL

ROL BH,CL

XCHG BH,BL

CMP AX,BX

JZ DISP

LEA DX,MSG2

MOV AH,09h

INT 21h

JMP DOWN

DISP: LEA DX,MSG1

MOV AH,09h

INT 21h

DOWN: MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 35: Mplab Programs

Branch/Loop instructions

Write an ALP to add two 10 byte numbers

.MODEL SMALL

.DATA

SRC1 DT 0102030405060708090Ah

SRC2 DT 0A090807060504030201h

RES DW 0Bh DUP(?)

.CODE

MOV AX,@DATA

MOV DS,AX

MOV DX,00h

MOV CL,05h

MOV SI,OFFSET SRC1

MOV DI,OFFSET SRC2

MOV BX,OFFSET RES

UP: MOV AX,[SI]

ADC AX,[DI]

MOV [BX],AX

ADD SI,02h

ADD DI,02h

ADD BX,02h

DEC CL

JNZ UP

JNC DOWN

INC DX

MOV [BX],DX

DOWN: MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 36: Mplab Programs

Write an ALP to add two 32 bit numbers

.MODEL SMALL

.DATA

SRC1 DD 01020304h

SRC2 DD 0A090807h

RES DW 03h DUP(?)

.CODE

MOV AX,@DATA

MOV DS,AX

MOV DX,00h

MOV CL,02h

MOV SI,OFFSET SRC1

MOV DI,OFFSET SRC2

MOV BX,OFFSET RES

UP: MOV AX,[SI]

ADC AX,[DI]

MOV [BX],AX

ADD SI,02h

ADD DI,02h

ADD BX,02h

DEC CL

JNZ UP

JNC DOWN

INC DX

MOV [BX],DX

DOWN: MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 37: Mplab Programs

Write an ALP to subtract two 32 bit numbers

.MODEL SMALL

.DATA

SRC1 DD 10102030h

SRC2 DD 06070809h

RES DW 03h DUP(?)

.CODE

MOV AX,@DATA

MOV DS,AX

MOV DX,00h

MOV CL,02h

MOV SI,OFFSET SRC1

MOV DI,OFFSET SRC2

MOV BX,OFFSET RES

UP: MOV AX,[SI]

SBB AX,[DI]

MOV [BX],AX

ADD SI,02h

ADD DI,02h

ADD BX,02h

DEC CL

JNZ UP

JNC DOWN

INC DX

MOV [BX],DX

DOWN: MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 38: Mplab Programs

Write an ALP to find the LARGEST NUMBER in the given array

.MODEL SMALL

.DATA

NUM DB 01h,02h,03h,04h

RES DB 01h DUP(?)

.CODE

MOV AX,@DATA

MOV DS,AX

MOV CX,03h

LEA SI,NUM

MOV AL,[SI]

UP: INC SI

CMP AL,[SI]

JNC DOWN

MOV AL,[SI]

DOWN: LOOP UP

MOV [RES],AL

MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 39: Mplab Programs

Write an ALP to find the SMALLEST NUMBER in the given array

.MODEL SMALL

.DATA

NUM DB 01h,02h,03h,04h

RES DB 01h DUP(?)

.CODE

MOV AX,@DATA

MOV DS,AX

MOV CX,03h

LEA SI,NUM

MOV AL,[SI]

UP: INC SI

CMP AL,[SI]

JC DOWN

MOV AL,[SI]

DOWN: LOOP UP

MOV [RES],AL

MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 40: Mplab Programs

Write an ALP to sort an array of numbers in ASCENDING ORDER

.MODEL SMALL

.DATA

NUM DB 01h,05h,02h,03h,04h

.CODE

MOV AX,@DATA

MOV DS,AX

MOV DX,04h

UP1: MOV CX,DX

LEA SI,NUM

UP: MOV AL,[SI]

INC SI

CMP AL,[SI]

JC DOWN

XCHG AL,[SI]

XCHG [SI-01h],AL

DOWN: LOOP UP

DEC DX

JNZ UP1

MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 41: Mplab Programs

Write an ALP to sort an array of numbers in DESCENDING ORDER

.MODEL SMALL

.DATA

NUM DB 01H,05h,02h,03h,04h

.CODE

MOV AX,@DATA

MOV DS,AX

MOV DX,04h

UP1: MOV CX,DX

LEA SI,NUM

UP: MOV AL,[SI]

INC SI

CMP AL,[SI]

JNC DOWN

XCHG AL,[SI]

XCHG [SI-01h],AL

DOWN: LOOP UP

DEC DX

JNZ UP1

MOV AH,4Ch

INT 21h

END

OUTPUT:-

Before execution:-

After execution:-

Page 42: Mplab Programs

String manipulation instructions

Write an ALP to search an element in a string and display the corresponding message

.MODEL SMALL

.DATA

MSG1 DB 10,13,'THE ELEMENT IS FOUND IN THE STRING$'

MSG2 DB 10,13,'THE ELEMENT IS NOT FOUND IN THE STRING$'

STR DB "BANGALORE"

CHAR DB 'Z'

.CODE

MOV AX,@DATA

MOV DS,AX

MOV ES,AX

MOV CX,09h

LEA DI,STR

MOV AL,[CHAR]

REPNE SCASB

JE DISP

MOV AH,09h

LEA DX,MSG2

INT 21h

JMP LAST

DISP: MOV AH,09h

LEA DX,MSG1

INT 21h

LAST: MOV AH,4Ch

INT 21h

END

OUTPUT:-

After execution:-

For character 'Z':-

For character 'N':-

Page 43: Mplab Programs

Write an ALP to find whether the input string is palindrome or not and display the corresponding

message

.MODEL SMALL

.DATA

MSG1 DB 10,13,'ENTER THE STRING: $'

MSG2 DB 10,13,'THE STRING IS PALINDROME $'

MSG3 DB 10,13,'THE STRING IS NOT PALINDROME $'

BUFF DB 80

DB 0

DB 80 DUP(?)

.CODE

MOV AX,@DATA

MOV DS,AX

LEA DX,MSG1

MOV AH,09h

INT 21h

LEA DX,BUFF

MOV AH,0Ah

INT 21h

LEA BX,BUFF+2

MOV CL,[BUFF+1]

MOV CH,00h

MOV DI,CX

DEC DI

MOV SI,00h

SAR CL,01h

BACK: MOV AL,[BX+SI]

MOV AH,[BX+DI]

CMP AL,AH

JNZ LAST

INC SI

DEC DI

DEC CL

JNZ BACK

LEA DX,MSG2

MOV AH,09h

INT 21h

JMP RESULT

LAST: LEA DX,MSG3

MOV AH,09h

INT 21h

RESULT: MOV AH,4Ch

INT 21h

END

OUTPUT:-

After execution:-

Case 1: Not Palindrome

Page 44: Mplab Programs

Case 2: Palindrome

Write an ALP to reverse the given string

.MODEL SMALL

.DATA

MSG1 DB 10,13,'ENTER THE STRING:$'

MSG2 DB 10,13,'THE REVERSED STRING IS:$'

BUFF DB 80

DB 0

DB 80 DUP(?)

.CODE

MOV AX,@DATA

MOV DS,AX

MOV AH,09h

LEA DX,MSG1

INT 21h

MOV AH,0Ah

LEA DX,BUFF

INT 21h

MOV AH,09h

LEA DX,MSG2

INT 21h

LEA BX,BUFF

INC BX

MOV CH,00h

MOV CL,BUFF+1

MOV DI,CX

BACK: MOV DL,[BX+DI]

MOV AH,02h

INT 21h

DEC DI

JNZ BACK

MOV AH,4Ch

INT 21h

END

OUTPUT:-

After execution:-

Page 45: Mplab Programs

Write an ALP to find whether two strings are equal or not using the CMPS string instruction and

display the corresponding message

.MODEL SMALL

.DATA

MSG1 DB 10,13,'THE STRINGS ARE EQUAL$'

MSG2 DB 10,13,'THE STRINGS ARE NOT EQUAL$'

STR1 DB "STRONG"

STR2 DB "MINDS"

COUNT DW 0006h

.CODE

MOV AX,@DATA

MOV DS,AX

MOV ES,AX

MOV CX,COUNT

LEA SI,STR1

LEA DI,STR2

REPZ CMPSB

JZ STORE1

LEA DX,MSG2

MOV AH,09h

INT 21h

JMP DOWN

STORE1: LEA DX,MSG1

MOV AH,09h

INT 21h

DOWN: MOV AH,4Ch

INT 21h

END

OUTPUT:-

After execution:-

Page 46: Mplab Programs

DOS INTERRUPTS

Write an ALP to display a message using DOS interrupts

.MODEL SMALL

.DATA

MSG DB 10,13,'MICROPROCESSORS $'

.CODE

MOV AX,@DATA

MOV DS,AX

CALL FUNCTION

MOV AH,4Ch

INT 21h

FUNCTION PROC

MOV AH,09h

LEA DX,MSG

INT 21h

RET

FUNCTION ENDP

END

OUTPUT:-

After execution:-

Page 47: Mplab Programs

Write an ALP to read the buffered inputs from the keyboard using DOS interrupts

.MODEL SMALL

.DATA

MSG DB 10,13,'ENTER THE STRING OF CHARACTERS: $'

BUFF DB 80

DB 0

DB 80 DUP(?)

.CODE

MOV AX,@DATA

MOV DS,AX

CALL FUNCTION

MOV AH,4Ch

INT 21h

FUNCTION PROC

LEA DX,MSG

MOV AH,09h

INT 21h

MOV AH,0Ah

LEA DX,BUFF

INT 21h

RET

FUNCTION ENDP

END

OUTPUT:-

After execution:-

Page 48: Mplab Programs

Write an ALP to read a CHARACTER from the keyboard using DOS interrupts using

MACROS

DISPLAY MACRO

LEA DX,MSG

MOV AH,09h

INT 21h

ENDM

READ MACRO

MOV AH,01h

INT 21h

MOV CHAR,AL

ENDM

.MODEL SMALL

.DATA

MSG DB 10,13,'ENTER A CHARACTER: $'

CHAR DB ?

.CODE

MOV AX,@DATA

MOV DS,AX

DISPLAY

READ

MOV AH,4Ch

INT 21h

END

OUTPUT:-

After execution:-

Page 49: Mplab Programs

Interfacing programs

STEPPER MOTOR:-

Write an ALP to rotate stepper motor in ANTICLOCKWISE direction

.MODEL SMALL

.DATA

PA EQU 0D880h

PB EQU 0D881h

PC EQU 0D882h

CWR EQU 0D883h

N DW 200

.CODE

MOV AX,@DATA

MOV DS,AX

MOV DX,CWR

MOV AL,80h

OUT DX,AL

MOV CX,N

MOV DX,PC

MOV AL,88h

UP: OUT DX,AL

PUSH CX

CALL DELAY

ROL AL,01h

POP CX

DEC CX

LOOP UP

MOV AH,4Ch

INT 21h

DELAY PROC NEAR

PUSH AX

PUSH BX

PUSH DX

MOV CX,0FFFh

UP2: MOV AX,0FFFFh

UP1: DEC AX

JNZ UP1

LOOP UP2

POP DX

POP BX

POP AX

RET

DELAY ENDP

END

Page 50: Mplab Programs

Write an ALP to rotate stepper motor in CLOCKWISE direction

.MODEL SMALL

.DATA

PA EQU 0D880h

PB EQU 0D881h

PC EQU 0D882h

CWR EQU 0D883h

N DW 200

.CODE

MOV AX,@DATA

MOV DS,AX

MOV DX,CWR

MOV AL,80h

OUT DX,AL

MOV CX,N

MOV DX,PC

MOV AL,88h

UP: OUT DX,AL

PUSH CX

CALL DELAY

ROR AL,01h

POP CX

DEC CX

LOOP UP

MOV AH,4Ch

INT 21h

DELAY PROC NEAR

PUSH AX

PUSH BX

PUSH DX

MOV CX,0FFFh

UP2: MOV AX,0FFFFh

UP1: DEC AX

JNZ UP1

LOOP UP2

POP DX

POP BX

POP AX

RET

DELAY ENDP

END

Page 51: Mplab Programs

Write an ALP to rotate stepper motor in both ANTICLOCKWISE and CLOCKWISE

directions

.MODEL SMALL

.DATA

PA EQU 0D880h

PB EQU 0D881h

PC EQU 0D882h

CWR EQU 0D883h

N DW 200

.CODE

MOV AX,@DATA

MOV DS,AX

MOV DX,CWR

MOV AL,80h

OUT DX,AL

MOV CX,N

MOV DX,PC

MOV AL,88h

UP: OUT DX,AL

PUSH CX

CALL DELAY

ROL AL,01h

POP CX

DEC CX

LOOP UP

MOV CX,N

UP3: OUT DX,AL

PUSH CX

CALL DELAY

ROR AL,01h

POP CX

DEC CX

LOOP UP3

MOV AH,4Ch

INT 21h

DELAY PROC NEAR

PUSH AX

PUSH BX

PUSH DX

MOV CX,0FFFh

UP2: MOV AX,0FFFFh

UP1: DEC AX

JNZ UP1

LOOP UP2

POP DX

POP BX

POP AX

RET

DELAY ENDP

END

Page 52: Mplab Programs

LOGIC CONTROLLER:-

Write an ALP to find number of 1’s and 0’s using logic controller

.MODEL SMALL

.DATA

PA EQU 0D880h

PB EQU 0D881h

PC EQU 0D882h

CWR EQU 0D883h

.CODE

MOV AX,@DATA

MOV DS,AX

MOV AL,82h

MOV DX,CWR

OUT DX,AL

MOV DX,PB

IN AL,DX

MOV CL,08h

MOV BL,00h

MOV BH,00h

L2: ROL AL,01h

JNC L1

INC BL

JMP L3

L1: INC BH

L3: DEC CL

JNZ L2

MOV AL,BL

MOV DX,PA

OUT DX,AL

MOV DX,PC

MOV AL,BH

OUT DX,AL

MOV AH,4Ch

INT 21h

END

Page 53: Mplab Programs

Write an ALP to realize the operation of JOHNSON COUNTER using logic controller

.MODEL SMALL

.DATA

PA EQU 0D880h

PB EQU 0D881h

PC EQU 0D882h

CWR EQU 0D883h

.CODE

MOV AX,@DATA

MOV DS,AX

MOV DX,CWR

MOV AL,80h

OUT DX,AL

MOV AL,01h

MOV CL,12h

MOV DX,PA

L1: OUT DX,AL

PUSH CX

CALL DELAY

XOR AL,01h

ROR AL,01h

POP CX

DEC CL

JNZ L1

EXIT: MOV AH,4Ch

INT 21h

DELAY PROC NEAR

MOV BX,0DBFFh

L4: MOV CX,0FFFFh

L2: DEC CX

JNZ L2

DEC BX

JNZ L4

RET

DELAY ENDP

END

Page 54: Mplab Programs

Write an ALP to realize the operation of RING COUNTER using logic controller

.MODEL SMALL

.DATA

PA EQU 0D880h

PB EQU 0D881h

PC EQU 0D882h

CWR EQU 0D883h

.CODE

MOV AX,@DATA

MOV DS,AX

MOV DX,CWR

MOV AL,80h

OUT DX,AL

MOV AL,01h

MOV CL,08h

MOV DX,PA

L1: OUT DX,AL

PUSH CX

CALL DELAY

ROR AL,01h

POP CX

DEC CL

JNZ L1

EXIT: MOV AH,4Ch

INT 21h

DELAY PROC NEAR

MOV BX,0DBFFh

L4: MOV CX,0FFFFh

L2: DEC CX

JNZ L2

DEC BX

JNZ L4

RET

DELAY ENDP

END

Page 55: Mplab Programs

Write an ALP to realize the operation of BCD UP/DOWN COUNTER using logic controller

BCD UP COUNTER:-

.MODEL SMALL

.DATA

PA EQU 0D880h

PB EQU 0D881h

PC EQU 0D882h

CWR EQU 0D883h

.CODE

MOV AX,@DATA

MOV DS,AX

MOV DX,CWR

MOV AL,80h

OUT DX,AL

MOV AL,00h

MOV DX,PA

L1: OUT DX,AL

CALL DELAY

ADD AL,01h

DAA

CMP AL,99h

JBE L1

EXIT: MOV AH,4Ch

INT 21h

DELAY PROC NEAR

MOV BX,0DBFFh

L4: MOV CX,0FFFFh

L2: DEC CX

JNZ L2

DEC BX

JNZ L4

RET

DELAY ENDP

END

Page 56: Mplab Programs

BCD DOWN COUNTER:-

.MODEL SMALL

.DATA

PA EQU 0D880h

PB EQU 0D881h

PC EQU 0D882h

CWR EQU 0D883h

.CODE

MOV AX,@DATA

MOV DS,AX

MOV DX,CWR

MOV AL,80h

OUT DX,AL

MOV AL,99h

MOV DX,PA

L1: OUT DX,AL

CALL DELAY

SUB AL,01h

DAS

CMP AL,00h

JA L1

EXIT: MOV AH,4Ch

INT 21h

DELAY PROC NEAR

MOV BX,0DBFFh

L4: MOV CX,0FFFFh

L2: DEC CX

JNZ L2

DEC BX

JNZ L4

RET

DELAY ENDP

END

Page 57: Mplab Programs

Write an ALP to realize the operation of BINARY UP/DOWN COUNTER using logic

controller

BINARY UP COUNTER:-

.MODEL SMALL

.DATA

PA EQU 0D880h

PB EQU 0D881h

PC EQU 0D882h

CWR EQU 0D883h

.CODE

MOV AX,@DATA

MOV DS,AX

MOV DX,CWR

MOV AL,80h

OUT DX,AL

MOV AL,00h

MOV DX,PA

L1: OUT DX,AL

CALL DELAY

ADD AL,01h

CMP AL,0FFh

JBE L1

EXIT: MOV AH,4Ch

INT 21h

DELAY PROC NEAR

MOV BX,0DBFFh

L4: MOV CX,0FFFFh

L2: DEC CX

JNZ L2

DEC BX

JNZ L4

RET

DELAY ENDP

END

Page 58: Mplab Programs

BINARY DOWN COUNTER:-

.MODEL SMALL

.DATA

PA EQU 0D880h

PB EQU 0D881h

PC EQU 0D882h

CWR EQU 0D883h

.CODE

MOV AX,@DATA

MOV DS,AX

MOV DX,CWR

MOV AL,80h

OUT DX,AL

MOV AL,0FFh

MOV DX,PA

L1: OUT DX,AL

CALL DELAY

SUB AL,01h

CMP AL,00h

JA L1

EXIT: MOV AH,4Ch

INT 21h

DELAY PROC NEAR

MOV BX,0DBFFh

L4: MOV CX,0FFFFh

L2: DEC CX

JNZ L2

DEC BX

JNZ L4

RET

DELAY ENDP

END

Page 59: Mplab Programs

Write an ALP to realize the operation of NOT GATE using logic controller

.MODEL SMALL

.DATA

PA EQU 0D880h

PB EQU 0D881h

PC EQU 0D882h

CWR EQU 0D883h

.CODE

MOV AX,@DATA

MOV DS,AX

MOV DX,CWR

MOV AL,82h

OUT DX,AL

MOV DX,PB

IN AL,DX

NOT AL

MOV DX,PA

OUT DX,AL

MOV AH,4Ch

INT 21h

END

Page 60: Mplab Programs

Write an ALP to realize the operation of AND GATE using logic controller

.MODEL SMALL

.DATA

MSG DB 10,13,'PRESS ANY KEY:$'

PA EQU 0D880h

PB EQU 0D881h

PC EQU 0D882h

CWR EQU 0D883h

.CODE

MOV AX,@DATA

MOV DS,AX

LEA DX,MSG

MOV AH,09h

INT 21h

MOV DX,CWR

MOV AL,82h

OUT DX,AL

MOV DX,PB

IN AL,DX

MOV BL,AL

MOV AH,01h

INT 21h

MOV DX,PB

IN AL,DX

AND AL,BL

MOV DX,PA

OUT DX,AL

MOV AH,4Ch

INT 21h

END

Page 61: Mplab Programs

Write an ALP to realize the operation of OR GATE using logic controller

.MODEL SMALL

.DATA

MSG DB 10,13,'PRESS ANY KEY:$'

PA EQU 0D880h

PB EQU 0D881h

PC EQU 0D882h

CWR EQU 0D883h

.CODE

MOV AX,@DATA

MOV DS,AX

LEA DX,MSG

MOV AH,09h

INT 21h

MOV DX,CWR

MOV AL,82h

OUT DX,AL

MOV DX,PB

IN AL,DX

MOV BL,AL

MOV AH,01h

INT 21h

MOV DX,PB

IN AL,DX

OR AL,BL

MOV DX,PA

OUT DX,AL

MOV AH,4Ch

INT 21h

END

Page 62: Mplab Programs

Write an ALP to realize the operation of XOR GATE using logic controller

.MODEL SMALL

.DATA

MSG DB 10,13,'PRESS ANY KEY:$'

PA EQU 0D880h

PB EQU 0D881h

PC EQU 0D882h

CWR EQU 0D883h

.CODE

MOV AX,@DATA

MOV DS,AX

LEA DX,MSG

MOV AH,09h

INT 21h

MOV DX,CWR

MOV AL,82h

OUT DX,AL

MOV DX,PB

IN AL,DX

MOV BL,AL

MOV AH,01h

INT 21h

MOV DX,PB

IN AL,DX

XOR AL,BL

MOV DX,PA

OUT DX,AL

MOV AH,4Ch

INT 21h

END

Page 63: Mplab Programs

Write an ALP to solve the following BOOLEAN EXPRESSION using logic controller

Y=ĀB+AB

.MODEL SMALL

.DATA

MSG DB 10,13,'PRESS ANY KEY:$'

PA EQU 0D880h

PB EQU 0D881h

PC EQU 0D882h

CWR EQU 0D883h

.CODE

MOV AX,@DATA

MOV DS,AX

LEA DX,MSG

MOV AH,09h

INT 21h

MOV DX,CWR

MOV AL,82h

OUT DX,AL

MOV DX,PB

IN AL,DX

MOV BL,AL

NOT AL

MOV CL,AL

MOV AH,01h

INT 21h

MOV DX,PB

IN AL,DX

MOV BH,AL

AND AL,BL

MOV CH,AL

AND CL,BH

OR CL,CH

MOV AL,CL

MOV DX,PA

OUT DX,AL

MOV AH,4Ch

INT 21h

END