MPI Lab Programs
MPI Lab Programs
OUTPUT 2500AD
ORG 2000H
DB 0AH,0DH,'ENTER THE VALUE'
LEA AX,MES1
CALL FAR 0FE00:0031H
CALL FAR 0FE00:0013H
CALL FAR 0FE00:00C7H
MOV BL,AL
MOV CL,AL
MOV CH,00H
MOV SI,2200H
CALL FAR 0FE00:0031H
CALL FAR 0FE00:00C7H
MOV [SI],AL
INC SI
DEC CL
JNZ IN
MOV SI,2200H
MOV CL,BL
MOV AL,[SI]
INC SI
LOOP B1
MOV SI,2200H
MOV CL,BL
DEC CL
MOV AL,[SI]
INC SI
CMP AL,[SI]
JNC NEXT
MOV AL,[SI]
LOOP BACK
CALL FAR 0FE00:0031H
CALL FAR 0FE00:0052H
IN:
B1:
BACK:
NEXT:
HLT
OUTPUT 2500AD
ORG 2000H
CALL FAR 0FE00:0031H
DB 10,13,'ENTER N VALUE',00H
LEA AX,M1
CALL FAR 0FE00:0013H
CALL FAR 0FE00:0031H
CALL FAR 0FE00:00C7H
MOV DL,AL
MOV BL,AL
MOV DH,00H
MOV CL,AL
MOV CH,00H
MOV SI,2200H
CALL FAR 0FE00:0031H
CALL FAR 0FE00:00C7H
MOV [SI],AL
INC SI
LOOP L1
MOV SI,2200H
C1:
L1:
L2:
DEC DL
MOV CL,DL
MOV AL,[SI]
INC SI
CMP AL,[SI]
JC L3
XCHG AL,[SI]
LOOP L2
SUB SI,DX
MOV [SI],AL
INC SI
CMP DL,01H
JNZ L1
MOV SI,2200H
MOV CX,BX
MOV AL,[SI]
CALL FAR 0FE00:0031H
CALL FAR 0FE00:0052H
INC SI
LOOP L4
HLT
L3:
L4:
OUTPUT 2500AD
ORG 2000H
CALL FAR 0FE00:0031H
DB 10,13,'ENTER 2 DIGIT HEX VALUE',00H
DB 10,13,'THE BCD IS:',00H
LEA AX,M1
CALL FAR 0FE00:0013H
CALL FAR 0FE00:00E0H
MOV AH,00H
MOV BL,64H
DIV BL
MOV DL,AL
MOV AL,AH
MOV AH,00H
MOV BL,0AH
DIV BL
SHL AL
SHL AL
SHL AL
SHL AL
OR AL,AH
MOV AH,DL
MOV BX,AX
CALL FAR 0FE00:0031H
LEA AX,M2
CALL FAR 0FE00:0013H
MOV AX,BX
CALL FAR 0FE00:006AH
JMP M
RET
4. To check the given number is prime or not?
Program:
OUTPUT 2500AD
ORG 2000H
M1:
L1:
DIV BH
CMP AH,00H
JE L2
INC BH
MOV AL,CH
MOV AH,00H
DEC CL
JNZ L1
CALL FAR 0FE00:0031H
M2:
DB 10,13,'
PRIME NUMBER
',00H
LEA AX,M2
CALL FAR 0FE00:0013H
JMP L3
L2:
M3:
',00H
LEA AX,M3
CALL FAR 0FE00:0013H
L3:
RET
OUTPUT 2500AD
ORG 2000H
CALL FAR 0FE00:0031H
MOV AX,0000H
MES1:
LAB:
XCHG AL,BL
ADD AL,BL
CALL FAR 0FE00:0031H
CALL FAR 0FE00:0052H
DEC CL
JNZ LAB
RET
MES1:
START:
GET:
ORG 2000H
MOV AX,0000H
;Initialise Segment
MOV ES,AX
;Registers
MOV DX,0FFE6H
;Initialise
MOV AL,80H
;all 8255 Ports as o/p
OUT DX,AL
CALL FAR 0FE00:01EDH
JMP SHORT START
DB 0AH,0DH,'ENTER DIRECTION'
DB 0AH,0DH,'A-ANTICLOCKWISE
C-CLOCKWISE',00H
LEA DX,MES1
MOV AX,DX
CALL FAR 0FE00:0013H
CALL FAR 0FE00:00A9H
CMP AL,41H
JE ANTI
;Display message
;on LCD or Console
;Wait for user entry
;If key ='A',
;rotate anti-clockwise
CLO:
R1:
ANTI:
R2:
COMMON:
DELAY:
SS:
CMP AL,43H
JE CLO
JMP SHORT GET
CALL
OUT
CALL
RCR
JMP
COMMON
DX,AL
DELAY
AL,1
SHORT R1
;Introduce delay
;Rotate bits in
;data byte right & repeat
CALL
OUT
CALL
RCL
JMP
COMMON
DX,AL
DELAY
AL,1
SHORT R2
;Rotate bits
;left & repeat
CALL
CALL
MOV
MOV
RET
FAR 0FE00:0031H
FAR 0FE00:00H
AL,11H
DX,0FFE0H
;Output value
;to Port A
MOV CX,800H
LOOP SS
RET
END
;Delay routine
2000H
AL,80H
DX,0FFE6H
DX,AL
SI,2038H
AL,[SI]
DX,0FFE0H
DX,AL
SI
DX,2
AL,[SI]
DX,AL
SI
DX,2
AL,[SI]
DX,AL
SI
DELAY
SI,2056H
NEXTST
AGAIN
CX,0FFH
CX
CX,03FFH
; PortB value
; PortC value
; Calling Delay routine
; Checking for the end of the data values
; Delay routine
LOOP
POP
LOOP
RET
DLY10
CX
DLY5
ORG
2038H
PORTVALUES: DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
10H,81H,7AH
44H,44H,0F0H
08H,11H,0E5H
44H,44H,0F0H
81H,10H,0DAH
44H,44H,0F0H
11H,08H,0B5H
44H,44H,0F0H
88H,88H,00H
44H,44H,0F0H
00H
;
;
;
;
;
;
;
;
;
;
;
State 1
All ambers
State 2
All ambers
State 3
All ambers
State 4
All ambers
State 5
All ambers
Dummy
ON
ON
ON
ON
ON
2000H
AX,0000H
DS,AX
DX,FFE6H
AL,80H
DX,AL
LOOP4: MOV
MOV
LOOP3: MOV
LOOP2: MOV
SI,2100H
CL,05H
CH,04H
BL,08H
MOV
INC
LOOP1: ROL
MOV
OUT
MOV
MOV
MOV
OUT
DEC
OUT
MOV
DEC
JNZ
DEC
AL,[SI]
SI
AL,1
DX,FFE2H
DX,AL
AH,AL
AL,01H
DX,FFE4H
DX,AL
AL
DX,AL
AL,AH
BL
LOOP1
CH
?
JNZ LOOP2
;no,continue
CALL DELAY
DEC CL
JNZ LOOP3
JMP SHORT LOOP4
DELAY: PUSH CX
MOV CX,0
;delay subroutine
L1: LOOP L1
L2: LOOP L2
POP CX
RET
;Display code table
ORG 2100H
STRING: DB 0FFH,0FFH,0FFH,0FFH
DB 0C6H,086H,0C7H,086H
DB 0BFH,0C0H,0DEH,087H
DB 0BFH,092H,091H,092H
DB 092H,0C8H,086H,087H
END