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

汇编语言
汇编语言的"多"层结构与理解
汇编语言上机指导及例示
汇编语言与Qbasic语言的接口技术
DEBUG命令详解
用汇编编写DOS下的内存驻留程序(1)
用汇编编写DOS下的内存驻留程序(2)
教你如何分析未文档化的数据结构
汇编语言实现字符串的拷贝
汇编实现字节数组相加
汇编多模块编译,连接
808x汇编指令
关于汇编语言和IL的异同点
汇编语言的优缺点
汇编语言概述
GCC内嵌汇编语言
Linux 汇编语言开发
汇编语言与C语言的混合使用
怎么才能把汇编学好呢?
ARM汇编伪指令介绍
Win32汇编语言教程

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 429 ::
收藏到网摘: 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