(1)CONVERT INTO REVRSE STRING
(2)STRING LENGTH
(3)STRING CONCATATION
(4)PALINDROME CHECK
(5)STRING COMPARISION
(6)STRING ENCRYPTION
(7)COUNT OCCURANCE OF A WORD
(8)FIND FIRST AND LAST CHARACTER OF THE STRING
(9)SWAP THE CASE OF STRING
(1)CONVERT INTO REVRSE STRING
(2)STRING LENGTH
(3)STRING CONCATATION
(4)PALINDROME CHECK
(5)STRING COMPARISION
(6)STRING ENCRYPTION
(7)COUNT OCCURANCE OF A WORD
(8)FIND FIRST AND LAST CHARACTER OF THE STRING
(9)SWAP THE CASE OF STRING
(1)CONVERT INTO REVRSE STRING
(2)STRING LENGTH
(3)STRING CONCATATION
(4)PALINDROME CHECK
(5)STRING COMPARISION
(6)STRING ENCRYPTION
(7)COUNT OCCURANCE OF A WORD
(8)FIND FIRST AND LAST CHARACTER OF THE STRING
(9)SWAP THE CASE OF STRING
SUBMITED BY: Parth Khatwani SUBMITTED TO: Sandeep Sir
DHARAMSINH DESAI UNIVERSITY FACULTY OF TECHNOLOGY
Department of Information Technology Faculty of Technology, Dharamsinh Desai University College Road, Nadiad-387001 Year 2010-2011
DHARAMSINH DESAI UNIVERSITY FACULTY OF TECHNOLOGY
DEPARTMENT OF INFORMATION TECHNOLOGY
CERTIFICATE This is to certify that Parth Khatwani(it_40) student of B.E. I.T. Semester V of DHARAMSINH DESAI UNIVERSITY, NADIAD have successfully completed his term project in subject ADVANCED MICROPROCESSOR ARCHITECTURE during the academic year 2010-11. During the whole term he was found sincere, hardworking and punctual. He made String Manipulation Functions
Staff in Charge Head Of Department
Date :
Date :
INDEX Introduction Acknowledgement Source code Program output Bios Function Bibliography
INTRODUCTION 0F PROJECT THIS PROJECT HAS NINE FUNCTIONALITIES (1)CONVERT INTO REVRSE STRING (2)STRING LENGTH (3)STRING CONCATATION (4)PALINDROME CHECK (5)STRING COMPARISION (6)STRING ENCRYPTION (7)COUNT OCCURANCE OF A WORD (8)FIND FIRST AND LAST CHARACTER OF THE STRING (9)SWAP THE CASE OF STRING ACKNOWLEDGEMENT
It is really a great pleasure for us to transform an entire concept into a reality project. This Project has indeed helped us to grasp the theory aspects from practical perspective and know clearly the difference existing between them. It has also increased out trouble shooting skills. It was, though a firsthand experience in project building, it inculcated in us a great awareness in all the stages of project building right from building the algorithms until implementation in programming language which could never have been accomplished in class rooms. I would like sincerely express our gratitude to all faculty members who directly or indirectly guided us through the project and without whom this project would never have been turned into a reality. I would specially like to thank our term project faculty, Sandeep Sir for meeting all out technical requirements and providing her valuable time apart from lab hours. Last but not the least I am also thankful to our department head of department for keeping such a term project as a part of our academic curriculum. SOURCE CODE MENU MODULE: ;######## STRING OPERATIONS ######## prnstr macro msg mov ah,09h lea dx,msg int 21h endm procedures SEGMENT PUBLIC EXTRN SREV:far extrn ccat:far EXTRN len:far EXTRN UTL:far EXTRN unp:far extrn coo:far extrn fnl:far EXTRN cCMP:FAR extrn en1:far procedures ends
data segment
msg1 db 0DH,0AH,'Enter choice::$' msg2 db 0DH,0AH,'0)REV::::$' msg3 db 0DH,0AH,'1)str_leN::$' MSG4 DB 0DH,0AH,'2)UTL::::$' msg5 db 0DH,0AH,'3)FNL::::$' msg6 db 0DH,0AH,'4)concat::::$' msg7 db 0DH,0AH,'5)COMPARE::::$' msg8 db 0DH,0AH,'6)ENCRYPT::::$' MSG9 DB 0DH,0AH,'7)COUNTAO::::$' MSG10 DB 0DH,0AH,'8)PDL::::$' msg12 db 0DH,0AH,'thnk uu$' nwl db 10,13,'$'
stop_program: mov dx,offset msg6 mov ah,09 int 21h
int 3h
code ends end start CONCAT MODULE:
data segment STR1 DB 50 DUP(0) MSG22 db,0ah,0dh," ENTER ONE STRING :$" MSG222 db,0ah,0dh," ENTER SECOND STRING:$" MSG2222 db,0ah,0dh," CONCATATION IS:$" STR2 DB 50 DUP(0) data ends
CODE SEGMENT ASSUME CS: CODE,DS:DATA start: MOV AX,DATA MOV DS,AX MOV ES,AX MOV AH,09 MOV DX,OFFSET MSG22 INT 21H mov [STR1],50 MOV DX,offset STR1 MOV Ah,0ah INT 21H MOV AH,09 MOV DX,OFFSET MSG222 INT 21H mov [STR2],50 MOV DX,offset STR2 MOV Ah,0ah INT 21H LEA DI,STR1 INC DI MOV CL,[DI] INC DI SUB CH,CH ADD DI,CX LEA SI,STR2 INC SI MOV CL,[SI] INC SI SUB CH,CH CLD REP MOVSB LEA SI,STR2 INC SI MOV CL,[SI] LEA SI,STR1 INC SI MOV CH,[SI] ADD CL,CH MOV [SI],CL INC SI SUB CH,CH ADD SI,CX MOV [SI],'$' MOV AH,09 MOV DX,OFFSET MSG2222 INT 21H MOV AH,09H MOV DX,OFFSET STR1 ADD DX,2 INT 21H code ends end start REVRSE MODULE: prnstr macro msg mov ah, 09h lea dx, msg int 21h endm data segment buf1 db "Enter a string : $" buf2 db 0ah, "Reversed String : $"
buf3 db 41 db 0 db 41 dup(' ') data ends
stack_str segment stack db 40 dup(0) stack_top label word stack_str ends
mov si, offset buf3 + 2 mov cl, byte ptr [si-1] mov ch, 00h mov ah, 00h again : mov al, byte ptr [si] push ax inc si loop again
mov si, offset buf3 + 2 mov cl, byte ptr [si-1] mov ah, 00h next : pop ax mov byte ptr [si], al inc si loop next
mov byte ptr [si], '$' prnstr buf2 prnstr buf3+2 mov ax, 4c00h int 21h code ends end start COMPARE MODULE: DATA SEGMENT STR1 DB "ENTER FIRST STRING HERE ->$" STR2 DB "ENTER SECOND STRING HERE ->$" STR11 DB "FIRST STRING : ->$" STR22 DB "SECOND STRING: ->$"
INSTR1 DB 20 DUP("$") INSTR2 DB 20 DUP("$") NEWLINE DB 10,13,"$" N DB ? S DB ? MSG1 DB "BOTH STRING ARE SAME$" MSG2 DB "BOTH STRING ARE DIFFERENT$"
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE START:
MOV AX,DATA MOV DS,AX
LEA SI,INSTR1 LEA DI,INSTR2
;GET STRING MOV AH,09H LEA DX,STR1 INT 21H
MOV AH,0AH MOV DX,SI INT 21H
MOV AH,09H LEA DX,NEWLINE INT 21H
MOV AH,09H LEA DX,STR2 INT 21H
MOV AH,0AH MOV DX,DI INT 21H
MOV AH,09H LEA DX,NEWLINE INT 21H
;PRINT THE STRING
MOV AH,09H LEA DX,STR11 INT 21H
MOV AH,09H LEA DX,INSTR1+2 INT 21H
MOV AH,09H LEA DX,NEWLINE INT 21H
MOV AH,09H LEA DX,STR22 INT 21H
MOV AH,09H LEA DX,INSTR2+2 INT 21H
MOV AH,09H LEA DX,NEWLINE INT 21H
;STRING COMPARISION MOV BX,00
MOV BL,INSTR1+1 MOV BH,INSTR2+1
CMP BL,BH JNE L1
ADD SI,2 ADD DI,2
L2:MOV BL,BYTE PTR[SI] CMP BYTE PTR[DI],BL JNE L1 INC SI INC DI CMP BYTE PTR[DI],"$" JNE L2
MOV AH,09H LEA DX,MSG1 INT 21H
JMP L5
L1:MOV AH,09H LEA DX,MSG2 INT 21H
L5: MOV AH,09H LEA DX,NEWLINE INT 21H
MOV AH,4CH INT 21H
CODE ENDS END START LENGTH MODULE: DATA SEGMENT STR1 DB "ENTER YOUR STRING HERE ->$" STR2 DB "YOUR STRING IS ->$" STR3 DB "LENGTH OF STRING IS(DIRECT) ->$" STR4 DB "LENGTH OF STRING IS(COUNT) ->$" INSTR1 DB 20 DUP("$") NEWLINE DB 10,13,"$" LN DB 5 DUP("$") N DB "$" S DB ?
DATA ENDS
CODE SEGMENT ASSUME DS:DATA,CS:CODE START:
MOV AX,DATA MOV DS,AX
LEA SI,INSTR1
;GET STRING MOV AH,09H LEA DX,STR1 INT 21H
MOV AH,0AH MOV DX,SI INT 21H
MOV AH,09H LEA DX,NEWLINE INT 21H
;PRINT THE STRING
MOV AH,09H LEA DX,STR2 INT 21H
MOV AH,09H LEA DX,INSTR1+2 INT 21H
MOV AH,09H LEA DX,NEWLINE INT 21H
;PRINT LENGTH OF STRING (DIRECT) MOV AH,09H LEA DX,STR3 INT 21H
MOV BL,INSTR1+1
ADD BL,30H MOV AH,02H MOV DL,BL INT 21H
MOV AH,09H LEA DX,NEWLINE INT 21H
;PRINT LENGTH OF STRING ANOTHER WAY
MOV AH,09H LEA DX,STR4 INT 21H
ADD SI,1 MOV AX,00
L2:CMP BYTE PTR[SI],"$" JE L1 INC SI ADD AL,1 JMP L2
L1:;SUB AL,1 ADD AL,30H
MOV AH,02H MOV DL,AL INT 21H
MOV AH,4CH INT 21H
CODE ENDS END START PALINDROME CHECK MODULE: prnstr macro msg mov ah, 09h lea dx, msg int 21h endm data segment buf1 db "Enter a string : $" buf2 db 0ah, "Reversed String : $" buf3 db 41 db 0 db 41 dup(' ') buf4 db 41 msg1 db "is palindrome :$" msg2 db "not a palindromre:$"
newline db 10,13,'$' data ends
stack_str segment stack db 40 dup(0) stack_top label word stack_str ends
LEA SI,buf3 INC SI MOV AL,[SI] MOV AH,00H MOV BX,SI ADD BX,AX MOV CL,02 DIV CL MOV CL,AL MOV CH,00H INC SI NEXT1: MOV DL,[BX] CMP DL,[SI] JNZ NOTPAL1 INC SI DEC BX LOOP NEXT1 MOV AH,09 LEA DX,MSG1 INT 21H jmp o NOTPAL1: MOV AH,09 LEA DX,MSG2 INT 21H
o: prnstr newline
mov ax, 4c00h int 21h code ends end start ENCRYPT MODULE: prnstr macro msg mov ah, 09h lea dx, msg int 21h endm data segment msg1 db "Enter a string which you want to encrypt ->$" INSTR1 DB 20 DUP("$") key db 5 dup("$") msg2 db "you have entered ->$" msg3 db "encrypted string is ->$" msg4 db "decrypted string is ->$" msg5 db "enter the encrypt foctor ->$" ;value db 'sanjay', '$' NEWLINE DB 10,13,"$" db 9 dup (?) encrypt db 7 dup (?) db 9 dup (?) decrypt db 7 dup (?) data ends
counter2: mov ah, 0000h mov al, [si] sub al,key mov [di], al inc di inc si cmp byte ptr[si],"$" jne counter2
mov [di], '$' prnstr newline prnstr msg4 prnstr decrypt ; mov ah, 09h ; lea dx, decrypt ; int 21h int 03h code ends end begin SWAP THE CASE MODULE: DATA SEGMENT
MSG DB 0DH,0AH, ' ENTER THE STRING :-----> : $' MSG2 DB 0DH,0AH,' YOUR STRING IS :-----> : $' STR1 DB 255 DUP(?) ONE DB ? TWO DB ?
procedures ENDS END BEGIN COUNT THE OCCURANCE MODULE prnstr LE:macro msg mov ah, 09h lea dx, msg int 21h endm DATA SEGMENT MSG1 DB "ENTER THE STRING : $" msg2 db "enter the char to find:$"
MSG3 DB "NO OF OCCURANCES OF entered char is : $" NEWLINE DB 10,13,'$' STR1 DB 150 DUP('$') CNT DB 0 DATA ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE START : MOV AX,DATA MOV DS,AX
MOV AH,4CH INT 21H CODE ENDS END START FIRST AND LAST CHAR MODULE: DATA SEGMENT STR1 DB "ENTER YOUR STRING HERE ->$" STR2 DB "YOUR STRING IS ->$" STR3 DB "FIRST CHARACTER IS ->$" STR4 DB "LAST CHARACTER IS ->$" INSTR1 DB 20 DUP("$") NEWLINE DB 10,13,"$" N DB "$" S DB ?
DATA ENDS
CODE SEGMENT ASSUME DS:DATA,CS:CODE START:
MOV AX,DATA MOV DS,AX
LEA SI,INSTR1
;GET STRING MOV AH,09H LEA DX,STR1 INT 21H
MOV AH,0AH MOV DX,SI INT 21H
MOV AH,09H LEA DX,NEWLINE INT 21H
;PRINT THE STRING
MOV AH,09H LEA DX,STR2 INT 21H
MOV AH,09H LEA DX,INSTR1+2 INT 21H
MOV AH,09H LEA DX,NEWLINE INT 21H
;PRINT FIRST CHARACTER OF STRING
MOV AH,09H LEA DX,STR3 INT 21H
MOV AH,02H MOV DL,INSTR1+2 INT 21H
MOV AH,09H LEA DX,NEWLINE INT 21H
;PRINT LAST CHARACTER OF STRING
MOV AH,09H LEA DX,STR4 INT 21H
ADD SI,3
L1: DEC SI MOV BL,BYTE PTR[SI]
; MOV AH,09H ; LEA DX,NEWLINE ; INT 21H
; MOV AH,02H ; MOV DL,BL ; INT 21H
; ADD SI,2 CMP BYTE PTR[SI],"$" JNE L1
MOV AH,02H MOV DL,BL INT 21H
MOV AH,4CH INT 21H
CODE ENDS END START SCREEN SHOTS menu:
reverse:
concat:
compare:
len:
BIOS FUNCTIONS
INT 21h / AH=1 Read character from standard input, with echo, result is stored in AL. if there is no character in the keyboard buffer, the function waits until any key is pressed.
Example:
MOV AH, 1 INT 21H
INT 21h / AH=2 Write character to standard output. DL = character to write, after execution AL = DL.
Example:
MOV AH, 2 MOV DL, 'A' INT 21H
INT 21h / AH=9 Output of a string at DS: DX. String must be terminated by '$'.
Example:
ORG 100H MOV DX, OFFSET MSG MOV AH, 9 INT 21H RET MSG DB "HELLO WORLD $"
INT 21h / AH=0Ah Input of a string to DS: DX, fist byte is buffer size; second byte is number of chars actually read. This function does not add '$' in the end of string. To print using INT 21h / AH=9 you must set dollar character at the end of it and start printing from address DS: DX + 2.
Example:
ORG 100H MOV DX, OFFSET BUFFER MOV AH, 0AH INT 21H JMP PRINT BUFFER DB 10 ? 10 DUP (' ') PRINT: XOR BX, BX MOV BL, BUFFER[1] MOV BUFFER[BX+2], '$' MOV DX, OFFSET BUFFER + 2 MOV AH, 9 INT 21H RET The function does not allow to enter more characters than the specified buffer size.
BIBILOGRAPHY Reference books: 1) Microprocessors and Interfacing programming and hardware By: DOUGLAS V.HALL 2) Microprocessor and architecture of 8085 By: RAMESH S.GAONKAR
ChatGPT Millionaire 2024 - Bot-Driven Side Hustles, Prompt Engineering Shortcut Secrets, and Automated Income Streams that Print Money While You Sleep. The Ultimate Beginner’s Guide for AI Business
ChatGPT Side Hustles 2024 - Unlock the Digital Goldmine and Get AI Working for You Fast with More Than 85 Side Hustle Ideas to Boost Passive Income, Create New Cash Flow, and Get Ahead of the Curve
ChatGPT Money Machine 2024 - The Ultimate Chatbot Cheat Sheet to Go From Clueless Noob to Prompt Prodigy Fast! Complete AI Beginner’s Course to Catch the GPT Gold Rush Before It Leaves You Behind
Learn Python Programming for Beginners: Best Step-by-Step Guide for Coding with Python, Great for Kids and Adults. Includes Practical Exercises on Data Analysis, Machine Learning and More.