Write an assembly language procedure using string instructio
Solution
DATA SEGMENT   ;Data Segment starts here
 STR1 DB ‘I am happy Today$’
 SUBSTR1 DB ‘happy$’
 LEN1 DB 0
 LEN2 DB 0
 MSG1 DB 10,13,’Our STRING IS : $’
 MSG2 DB 10,13,’SUBSTRING IS : $’
 MSG3 DB 10,13,’SUBSTRING FOUND...!!! : $’
 POS DB -1
 RTN DB ‘-1$’
 DATA ENDS   ;Data Segement ends here
DISPLAY MACRO MSG   ;Message Macro starts
 MOV AH,9
 LEA DX,MSG
 INT 21H
 ENDM   ;Message macro ends
CODE SEGMENT
 ASSUME CS:CODE,DS:DATA   ;tells the assembler that CS segment points to Code and DS to   
        ; Data
 START:
 MOV AX,DATA
 MOV DS,AX
DISPLAY MSG1   ;Display message1
 DISPLAY STR1   ;Display I am happy today
 DISPLAY MSG2   ;Display mesaage2
 DISPLAY SUBSTR1 ;Display substring happy
LEA SI,STR1
 L1:
 CMP [SI],’$’
 JE D1
 INC LEN1
 INC SI
 JMP L1
 D1:
 LEA DI,SUBSTR1
 L2:
 CMP [DI],’$’
 JE D2
 INC LEN2
 INC DI
 JMP L2
D2:
 DISPLAY MSG3
 LEA SI,STR1
 MOV AL,LEN1
 SUB AL,LEN2
 MOV CL,AL
 MOV CH,0
 FIRSTLOOP:
 INC POS
 MOV AL,[SI]
 CMP AL,SUBSTR1[0]
 JE CMPR
 INC SI
 LOOP FIRSTLOOP
CMPR: INC SI
 MOV AL,[SI]
 CMP AL,SUBSTR1[1]
 JNE NOT_EQUAL
 INC SI
 MOV AL,[SI]
 CMP AL,SUBSTR1[2]
 JE EQUAL
NOT_EQUAL:
 MOV POS,-1
 DISPLAY RTN
 JMP EXIT
EQUAL:
 MOV DL,POS
 ADD DL,30H
 MOV AH,2
 INT 21H
EXIT: MOV AH,4CH
 INT 21H
CODE ENDS
END START


