当前位置: 首页 > 图文教程 > 开发语言 > 汇编语言 > 汇编语言实现字符串的拷贝

汇编语言
汇编语言的"多"层结构与理解

汇编语言实现字符串的拷贝


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 430 ::
收藏到网摘: n/a

今天写了一个小程序,实现了把字符串从存储器的一个单元拷贝到存储器的另一个单元,程序中主要用到了字符串操作指令MOVSB,这个指令比较特殊可以对两个存储单元直接操作,用SI指向源字符串地址,DI指向符加段的目地字符串地址,用这条指令就可以很轻松的将字符串进行拷贝,如果你想循环操作,很简单,在指令前面加上REP伪指令便可实现指定次数的循环,但是要求你把你想要循环的次数送到CX,这样就可以复制字符串了.示例代码如下:
 

   DATAS SEGMENT
    BUF1 DB 'HELLO,WORLD!$'
    COUNT EQU $-BUF1
    BUF2 DB COUNT DUP(?)
    MSG DB 'COPY COMPLETED!$'
    MSGB DB 'COPY A STRING',13,10
      DB 'PRESS ANY KEY TO START...'
      DB 13,10,'$'
DATAS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,ES:DATAS
START:
    MOV AX,DATAS
    MOV DS,AX
    MOV ES,AX

   
    MOV AH,9
    MOV DX,OFFSET MSGB
    INT 21H
    MOV AH,1
    INT 21H
   
 CALL COPY ;CALL COPY PROC
 
    MOV AH,9
    MOV DX,OFFSET MSG
    INT 21H
    MOV AH,1
    INT 21H  
    MOV AH,4CH
    INT 21H
    ;---------------------
    ;PROC NAMD : COPY
    ;FEATURE : COPY A STRING FORM ONE PLACE TO ANOTHER
    ;INPUT PARAMTER : BUF1,BUF2,COUNT
    ;OUTPUT PARAMETER : NONE
    COPY PROC

    MOV SI,OFFSET BUF1
    MOV DI,OFFSET BUF2
    MOV CX,COUNT
    CLD   
    REP MOVSB 
    RET
    COPY ENDP
      
CODES ENDS
    END START