Logo 
Search:

Assembly Language Articles

Submit Article
Home » Articles » Assembly Language » GeneralRSS Feeds

Program that will copy a string STRING_1 into another string STRING_2 using the instruction MOVSB and REP.....

Posted By: Easy Tutor     Category: Assembly Language     Views: 4691

An AL Program that will copy a string STRING_1 into another string STRING_2 using the instruction MOVSB and REP, and also display it.

Code for Program that will copy a string STRING_1 into another string STRING_2 using the instruction MOVSB and REP..... in Assembly Language

 .MODEL SMALL
 .STACK 100H

 .DATA
   PROMPT_1  DB  0DH,0AH,'STRING_1 : $'
   PROMPT_2  DB  0DH,0AH,'STRING_2 : $'
   BEFORE    DB  ' * * * * *  Before Copying  * * * * *$' 
   AFTER     DB  0DH,0AH,0AH,' * * * * *  After Copying  * * * * *$'

   STRING_1  DB  ' Please visit : http://www.mts-home.cjb.net  '
   STRING_2  DB  45 DUP(?)

 .CODE
   MAIN PROC
     MOV AX, @DATA                ; initialize DS and ES
     MOV DS, AX
     MOV ES, AX

     MOV BX, 45                   ; set BX=45
     MOV AH, 9                    ; set string output function

     LEA DX, BEFORE               ; load and print the string BEFORE
     INT 21H

     LEA DX, PROMPT_1             ; load and print the string PROMPT_1
     INT 21H

     LEA SI, STRING_1             ; set SI=offset address of variable STRING_1

     CALL DISP_STR                ; call the procedure DISP_STR

     LEA DX, PROMPT_2             ; load and print the string PROMPT_2
     INT 21H

     LEA SI, STRING_2             ; set SI=offset address of variable STRING_2

     CALL DISP_STR                ; call the procedure DISP_STR

     LEA SI, STRING_1             ; set SI=offset address of variable STRING_1
     LEA DI, STRING_2             ; set DI=offset address of variable STRING_2

     CALL COPY_STR                ; call the procedure COPY_STR

     LEA DX, AFTER                ; load and print the string AFTER 
     INT 21H

     LEA DX, PROMPT_1             ; load and print the string PROMPT_1
     INT 21H

     LEA SI, STRING_1             ; set SI=offset address of variable STRING_1

     CALL DISP_STR                ; call the procedure DISP_STR

     LEA DX, PROMPT_2             ; load and print the string PROMPT_2
     INT 21H

     LEA SI, STRING_2             ; set SI=offset address of variable STRING_2

     CALL DISP_STR                ; call the procedure DISP_STR

     MOV AH, 4CH                  ; return control to DOS
     INT 21H
   MAIN ENDP

 ;**************************************************************************;
 ;**************************************************************************;
 ;-------------------------  Procedure Definitions  ------------------------;
 ;**************************************************************************;
 ;**************************************************************************;

 ;**************************************************************************;
 ;-------------------------------  COPY_STR  -------------------------------;
 ;**************************************************************************;

  COPY_STR PROC
    ; this procedure will copy the string2 into string1
    ; input : SI=offset address of the string1
    ;       : DI=offset address of the string2
    ;       : BX=number of characters in the string
    ; output : SI=offset address of the string1
    ;        : DI=offset address of the string2

    PUSH CX                       ; push CX onto the STACK
    PUSH SI                       ; push SI onto the STACK
    PUSH DI                       ; push DI onto the STACK

    CLD                           ; clear direction flag
    MOV CX, BX                    ; set CX=BX
    REP MOVSB                     ; set ES:[DI]=DS:[SI]

    POP DI                        ; pop a value from STACK into DI
    POP SI                        ; pop a value from STACK into SI
    POP CX                        ; pop a value from STACK into CX
 
    RET
  COPY_STR ENDP

 ;**************************************************************************;
 ;-------------------------------  DISP_STR  -------------------------------;
 ;**************************************************************************;

  DISP_STR PROC
    ; this procedure will display the given string 
    ; input : SI=offset address of the string
    ;       : BX=number of characters in the string
    ; output : none

    PUSH AX                       ; push AX onto the STACK
    PUSH BX                       ; push BX onto the STACK
    PUSH CX                       ; push CX onto the STACK
    PUSH DX                       ; push DX onto the STACK
    PUSH SI                       ; push SI onto the STACK

    CLD                           ; clear direction flag
    MOV CX, BX                    ; set CX=BX
    MOV AH, 2                     ; set output function

    JCXZ @SKIP_OUTPUT             ; jump to label @SKIP_OUTPUT if CX=0  

    @OUTPUT_LOOP:                 ; loop label
      LODSB                       ; set AL=DS:[SI]
      MOV DL, AL                  ; set DL=AL
      INT 21H                     ; print a character
    LOOP @OUTPUT_LOOP             ; jump to label @OUTPUT_LOOP while CX!=0

    @SKIP_OUTPUT:                 ; jump label 

    POP SI                        ; pop a value from STACK into SI
    POP DX                        ; pop a value from STACK into DX
    POP CX                        ; pop a value from STACK into CX
    POP BX                        ; pop a value from STACK into BX
    POP AX                        ; pop a value from STACK into AX
 
    RET
  DISP_STR ENDP

 ;**************************************************************************;
 ;--------------------------------------------------------------------------;
 ;**************************************************************************;

 END MAIN

  
Share: 



Easy Tutor
Easy Tutor author of Program that will copy a string STRING_1 into another string STRING_2 using the instruction MOVSB and REP..... is from United States. Easy Tutor says

Hello Friends,

I am Free Lance Tutor, who helped student in completing their homework.

I have 4 Years of hands on experience on helping student in completing their homework. I also guide them in doing their final year projects.

I have share many programs on this website for everyone to use freely, if you need further assistance, than please contact me on easytutor.2ya [at the rate] gmail [dot] com

I have special discount scheme for providing tutor services. I am providing tutor service to students from various contries, currently most of my students are from United States, India, Australia, Pakistan, Germany, UK and Canada.

I am also here to expand my technical network to receive more opportunity in my career, make friends to help them in resolving their technical problem, learn and share my knowledge, If you like to be my friend, Please send me friend request.

Thanks,
Happy Programming :)

 
View All Articles

Related Articles and Code:


 

Other Interesting Articles in Assembly Language:


 
Please enter your Comment

  • Comment should be atleast 30 Characters.
  • Please put code inside [Code] your code [/Code].

 
No Comment Found, Be the First to post comment!