MASM PROGRAM FOR STRING REVERSAL (WITH ALGORITHM)
AIM : TO REVERSE A STRING
ALGORITHM :
STEP 1 : WRITE THE DATA SEGMENT
STEP 2 : MOVE DATA TO AX
STEP 3 : MOVE AX TO DS
STEP 4 : LOAD EFFECTIVE ADDRESS OF MSG1 TO DX
STEP 5 : PRINT MESSAGE
STEP 6 : MOVE 0DH TO DL
STEP 7 : LOAD EFFECTIVE ADDRESS OF ST1 TO S1
STEP 8 : MOVE 00H TO CL
STEP 9 : INPUT A CHARACTER
STEP 10 : COMPARE IF IT IS A LINE FEED
STEP 11 : JUMP IF ZERO TO STEP 18
STEP 12 : INCREMENT CL
STEP 13 : INCREMENT SI
STEP 14 : MOVE AL TO THE CONTENT OF SI
STEP 15 : INCREMENT SI
STEP 16 : INCREMENT CL
STEP 17 : JUMP TO STEP 9
STEP 18 : MOVE 0AH TO DL
STEP 19 : MOVE 0DH TO DL
STEP 20 : LOAD EFFECTIVE ADDRESS OF MSG2 TO DX
STEP 21 : PRINT THE MESSAGE
STEP 22 : MOVE THE CONTENT OF SI TO DL
STEP 23 : PRINT THE CHARACTER WHERE VALUE IN DL
STEP 24 : DECREMENT SI
STEP 25 : DECREMENT CL
STEP 26 : COMPARE 00H TO CL
STEP 27 : JUMP IF NOT ZERO TO STEP 21
STEP 28 : TERMINATE THE PROGRAM
STEP 29 : STOP
PROGRAM :
DATA SEGMENT
ST1 DB 100 DUP(?)
MSG1 DB "ENTER THE STRING $"
MSG2 DB "REVERSED STRING $"
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE
START:
MOV AX,DATA
MOV DS,AX
LEA DX,MSG1
MOV AH,09H
INT 21H
LEA SI,ST1
MOV CL,00H
L1:
MOV AH,01H
INT 21H
CMP AL,0DH
JZ L2
INC CL
INC SI
MOV [SI],AL
INC SI
INC CL
JMP L1
L2:
MOV DL,0AH
INT 21H
MOV DL,0DH
INT 21H
LEA DX,MSG2
MOV AH,09H
INT 21H
L3:
MOV DL,[SI]
MOV AH,02H
INT 21H
DEC SI
DEC CL
CMP CL,00H
JNZ L3
MOV AH,4CH
INT 21H
CODE ENDS
END START
OUTPUT :
ENTER THE STRING : CAT
REVERSED STRING : TAC
AIM : TO REVERSE A STRING
ALGORITHM :
STEP 1 : WRITE THE DATA SEGMENT
STEP 2 : MOVE DATA TO AX
STEP 3 : MOVE AX TO DS
STEP 4 : LOAD EFFECTIVE ADDRESS OF MSG1 TO DX
STEP 5 : PRINT MESSAGE
STEP 6 : MOVE 0DH TO DL
STEP 7 : LOAD EFFECTIVE ADDRESS OF ST1 TO S1
STEP 8 : MOVE 00H TO CL
STEP 9 : INPUT A CHARACTER
STEP 10 : COMPARE IF IT IS A LINE FEED
STEP 11 : JUMP IF ZERO TO STEP 18
STEP 12 : INCREMENT CL
STEP 13 : INCREMENT SI
STEP 14 : MOVE AL TO THE CONTENT OF SI
STEP 15 : INCREMENT SI
STEP 16 : INCREMENT CL
STEP 17 : JUMP TO STEP 9
STEP 18 : MOVE 0AH TO DL
STEP 19 : MOVE 0DH TO DL
STEP 20 : LOAD EFFECTIVE ADDRESS OF MSG2 TO DX
STEP 21 : PRINT THE MESSAGE
STEP 22 : MOVE THE CONTENT OF SI TO DL
STEP 23 : PRINT THE CHARACTER WHERE VALUE IN DL
STEP 24 : DECREMENT SI
STEP 25 : DECREMENT CL
STEP 26 : COMPARE 00H TO CL
STEP 27 : JUMP IF NOT ZERO TO STEP 21
STEP 28 : TERMINATE THE PROGRAM
STEP 29 : STOP
PROGRAM :
DATA SEGMENT
ST1 DB 100 DUP(?)
MSG1 DB "ENTER THE STRING $"
MSG2 DB "REVERSED STRING $"
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE
START:
MOV AX,DATA
MOV DS,AX
LEA DX,MSG1
MOV AH,09H
INT 21H
LEA SI,ST1
MOV CL,00H
L1:
MOV AH,01H
INT 21H
CMP AL,0DH
JZ L2
INC CL
INC SI
MOV [SI],AL
INC SI
INC CL
JMP L1
L2:
MOV DL,0AH
INT 21H
MOV DL,0DH
INT 21H
LEA DX,MSG2
MOV AH,09H
INT 21H
L3:
MOV DL,[SI]
MOV AH,02H
INT 21H
DEC SI
DEC CL
CMP CL,00H
JNZ L3
MOV AH,4CH
INT 21H
CODE ENDS
END START
OUTPUT :
ENTER THE STRING : CAT
REVERSED STRING : TAC
No comments:
Post a Comment