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

今天写了一个小程序,实现了把字符串从存储器的一个单元拷贝到存储器的另一个单元,程序中主要用到了字符串操作指令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

你可能感兴趣的:(Assembly,Language)