The document contains several assembly language programs that demonstrate different string manipulation techniques including:
1. Displaying a string on the screen using DOS interrupts
2. Getting a string from keyboard input and calculating its length
3. Exchanging blocks of memory using string instructions
4. Comparing two strings entered from the keyboard
5. Checking if a string is a palindrome
6. Displaying a string in reverse order
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
Â
8086 pgms
1. 1
; using dos interrupts to display strings on the user screen
#MAKE_EXE#
DSEG SEGMENT
MS1 db 0DH,0AH,"STUDY OF MICROPROCESSORS",0DH,0AH,"$"
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG, S:DSEG,
START:
MOV AX, DSEG
MOV DS, AX
MOV AH,09H
MOV DX,OFFSET MS1
INT 21H
MOV AH,4CH
INT 21H
CSEG ENDS
END START
;TEST PGM TO INPUT A SENTENCE & FIND THE LENGTH OF THE STRING
#MAKE_EXE#
DSEG SEGMENT
MS1 db 0DH,0AH,"ENTER THE SENTENCE",0AH,0DH,"$"
MS2 DB 25,?,25 DUP('$')
MS3 DB 0DH,0AH,"THE LENGTH OF THE STRING IS$"
L DB ?,'$'
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG, S:DSEG,
START:
MOV AX, DSEG
MOV DS, AX
MOV AH,09H
MOV DX,OFFSET MS1
INT 21H
MOV DX,OFFSET MS2
MOV AH,0AH
INT 21H
MOV AH,09H
LEA DX,MS3
INT 21H
MOV BL,MS2+1
ADD BL,30H
MOV L,BL
LEA DX,L
INT 21H
MOV AH,4CH
INT 21H
CSEG ENDS
2. 2
END START
;block exchange using string instruction
#MAKE_EXE#
DSEG SEGMENT
AR1 DB 10,12,13,14,15
AR2 DB 21,22,23,24,25
AR3 DB 05 DUP(?)
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG, ES:DSEG
START: MOV AX,DSEG
MOV DS,AX
MOV ES,AX
LEA SI,AR1
LEA DI,AR3
CLD
MOV CX,0005H
REP MOVSB
MOV CX,0005H
LEA DI,AR1
LEA SI,AR2
REP MOVSB
MOV CX,0005H
LEA DI,AR2
LEA SI,AR3
REP MOVSB
MOV AH,4CH
INT 21H
CSEG ENDS
END START
;STRING COMPARISON THROUGH KEYBOARD & MACRO (LAB)
#MAKE_EXE#
PRINT MACRO MES
MOV AH, 09H
LEA DX,MES
INT 21H
ENDM
DSEG SEGMENT
MS1 db 0AH,0DH,"Enter the first string$"
MS2 db 0AH,0DH,"Enter the second string$"
MS3 DB 0AH,0DH,"Equal strings$"
MS4 DB 0AH,0DH,"NOT EQUAL$"
BUFF DB 25,?,25 DUP('$')
BUFF1 DB 25,?,25 DUP('$')
DSEG ENDS
4. 4
INC BX
LOOP BACK
MOV R,'Y'
JMP EN
UNEQ: MOV R,'N'
EN: MOV AH,4CH
INT 21H
CSEG ENDS
END START
;PALINDROME
#MAKE_EXE#
DSEG SEGMENT
STR1 db 'abcdefg'
str_len db 07
RES DB ?
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG, S:DSEG, ES:DSEG
START:
MOV AX, DSEG
MOV DS, AX
MOV ES, AX
LEA SI, STR1
LEA DI, STR1+str_len
DEC DI
MOV CX, 07
SAR CX,01
NEXT: MOV AL,[SI]
MOV BL,[DI]
CMP AL,BL
JNZ NOTEQ
INC SI
DEC DI
LOOP NEXT
MOV RES,'Y'
JMP EN1
NOTEQ: MOV RES,'N'
EN1:INT 3
CSEG ENDS
END START
5. 5
; TO DISPLAY STRING IN REVERSE ORDER (LAB)
#MAKE_EXE#
PRINT MACRO MES
MOV AH, 09H
LEA DX,MES
INT 21H
ENDM
DSEG SEGMENT
MS1 db 0AH,0DH,"Enter the string$"
MS2 db 0AH,0DH,"Enter the second string$"
MS3 DB 0AH,0DH,"REVERSE IS$"
BUFF DB 25,?,25 DUP('$')
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG, S:DSEG, ES:DSEG
START:
MOV AX, DSEG
MOV DS, AX
MOV ES, AX
PRINT MS1
MOV AH,0AH
LEA DX,BUFF
INT 21H
MOV CH,00
MOV CL,BUFF+1
MOV DI,CX
LEA BX,BUFF+1
PRINT MS3
BACK: MOV AH,02H
MOV DL,[BX+DI]
INT 21H
DEC DI
JNZ BACK
MOV AH,4CH
INT 21H
CSEG ENDS
END START
; TO DISPLAY STRING IN REVERSE ORDER (LAB)
#MAKE_EXE#
PRINT MACRO MES
MOV AH, 09H
LEA DX,MES
INT 21H
6. 6
ENDM
DSEG SEGMENT
MS1 db 0AH,0DH,"Enter the string$"
MS2 DB 0AH,0DH,"REVERSE IS$"
BUFF DB 25,?,25 DUP('$')
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG, S:DSEG, ES:DSEG
START:
MOV AX, DSEG
MOV DS, AX
MOV ES, AX
PRINT MS1
MOV AH,0AH
LEA DX,BUFF
INT 21H
MOV CH,00
MOV CL,BUFF+1
MOV DI,CX
LEA BX,BUFF+1
PRINT MS2
BACK: MOV AH,02H
MOV DL,[BX+DI]
INT 21H
DEC DI
JNZ BACK
MOV AH,4CH
INT 21H
CSEG ENDS
END START