MPMC Software
MPMC Software
.MODEL SMALL
.DATA
ARR DW 1,2,3,4,5,6,7
LEN DW ($-ARR)/2
MSG1 DB "KEY IS FOUND$"
MSG2 DB "KEY IS NOT FOUND$"
X DW 6
.CODE
MOV AX,@DATA
MOV DS,AX
MOV SI,0000H ; SI is LOW
MOV DI,LEN
ADD DI,DI
SUB DI,2 ;DI is HiGH
RPT: CMP SI,DI ;Comparing SI with DI
JA KNF ; IF SI > DI jump to KNF
MOV AX,X ;AX= key
MOV BX,SI ;BX (MID) = (SI + DI )/2
ADD BX,DI
SHR BX,1
CMP AX,ARR[BX] ; Comparing AX (KEY) With middle element ARR[BX]
JE KF ; if key = middle element jump to KF
JB NEXT ; if KEY < middle element jump to NEXT
MOV SI,BX ; if KEY > middle element low (SI) = mid (bx)+2
ADD SI,2
JMP RPT
NEXT:MOV DI,BX ;if key < mid element high (di)= mid (bx)-2
SUB DI,2
JMP RPT
KF: LEA DX,MSG1 ;display the message "KEY is found"
MOV AH,09H
INT 21H
JMP EXIT ;jump to exit
KNF:LEA DX,MSG2 ;display the message "key is not found"
MOV AH,09H
INT 21H
EXIT: MOV AH,4CH
INT 21H
END
Bubble sort
.MODEL SMALL
.STACK
.DATA
LIST DB 03H,04H,02H,01H,05H
N DW $-LIST
ORDER EQU 0 ;implies ascending order
MSG DB 'THE SORTED ARRAY IS:: $'
.CODE
MOV AX,@DATA
MOV DS,AX
MOV BX,N
DEC BX
NXTPASS:MOV CX,BX
MOV SI,00H
NXTCOMP:MOV AL,LIST[SI]
INC SI
CMP AL,LIST[SI]
IF ORDER EQ 0 ;ascending
JB NEXT
ELSE ;descending
JA NEXT
ENDIF
XCHG AL,LIST[SI]
MOV LIST[SI-1],AL
NEXT:LOOP NXTCOMP
DEC BX
JNZ NXTPASS
LEA DX,MSG
MOV AH,09H
INT 21H
MOV BX,N
MOV SI,00H
AGAIN: MOV AL,LIST[SI]
ADD AL,'0'
MOV DL,AL
MOV AH,02H
INT 21H
MOV AH,02H
MOV DL,' '
INT 21H
INC SI
DEC BX
JNZ AGAIN
MOV AH,4CH
INT 21H
END
Palindrome
DATA SEGMENT
MSG1 DB 10,13,'ENTER ANY STRING :- $'
MSG2 DB 10,13,'ENTERED STRING IS :- $'
MSG3 DB 10,13,'LENGTH OF STRING IS :- $'
MSG4 DB 10,13,'NO, GIVEN STRING IS NOT A PALINDROME $'
MSG5 DB 10,13,'THE GIVEN STRING IS A PALINDROME $'
MSG6 DB 10,13,'REVERSE OF ENTERED STRING IS :- $'
P1 LABEL BYTE
M1 DB 0FFH
L1 DB ?
P11 DB 0FFH DUP ('$')
P22 DB 0FFH DUP ('$')
DATA ENDS
DISPLAY MACRO MSG
MOV AH,9
LEA DX,MSG
INT 21H
ENDM
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
DISPLAY MSG1
LEA DX,P1
MOV AH,0AH
INT 21H
DISPLAY MSG2
DISPLAY P11
DISPLAY MSG3
MOV DL,L1
ADD DL,30H
MOV AH,2
INT 21H
DISPLAY MSG6
LEA SI,P11
LEA DI,P22
MOV DL,L1
DEC DL
MOV DH,0
ADD SI,DX
MOV CL,L1
MOV CH,0
REVERSE:
MOV AL,[SI]
MOV [DI],AL
INC DI
DEC SI
LOOP REVERSE
DISPLAY P22
LEA SI,P11
LEA DI,P22
MOV CL,L1
MOV CH,0
CHECK:
MOV AL,[SI]
CMP [DI],AL
JNE NOTPALIN
INC DI
INC SI
LOOP CHECK
DISPLAY MSG5
JMP EXIT
NOTPALIN:
DISPLAY MSG4
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END START
4th program
COUT MACRO VAR
MOV AH, 2
MOV DL, VAR
INT 21H
ENDM
.MODEL SMALL
.DATA
N DB 8
R DB 4
RES DB ?
.CODE
MOV AX, @DATA
MOV DS, AX
MOV RES, 0
MOV AH, N
MOV AL, R
CALL NCR;Result Display
MOV AL, N
MOV AH, 0
CALL DISPLAY
COUT 'C'
MOV AL, R
MOV AH, 0
CALL DISPLAY
COUT ' '
COUT '='
COUT ' '
MOV AL, RES
MOV AH, 0
CALL DISPLAY
JMP EOF
NCR PROC NEAR
; r == 0
CMP AL, 0
JE ONE
; r == n
CMP AL, AH
JE ONE
; r == 1
CMP AL, 1
JE EN
MOV BH, AH
DEC BH
; r == n - 1
CMP AL, BH
JE EN
DEC AH
PUSH AX
CALL NCR
POP AX
PUSH AX
DEC AL
CALL NCR
POP AX
RET
ONE:
ADD RES, 1
RET
EN:
ADD RES, AH
RET
NCR ENDP
Program 1:
#include<lpc21xx.h>
main()
{
int a=6,b=2,sum,sub,mul,div;
sum=a+b;
sub=a-b;
mul=a*b;
div=a/b;
}
Program 2:
#include<lpc21xx.h>
main()
{
int a=3, b=7, and, or, xor,not;
and=a&b;
or=a|b;
xor=a^b;
not=~a;}