45 lines
992 B
NASM
45 lines
992 B
NASM
; 实验七-1: 字符串复制程序 - 使用REP MOVSB
|
||
; 功能: 将源字符串复制到目标字符串
|
||
|
||
DATAS SEGMENT
|
||
SOURCE DB 'Hello, Assembly!', 0 ; 源字符串,以0结尾
|
||
DEST DB 20 DUP(?) ; 目标字符串缓冲区
|
||
DEST_END DB 0 ; 目标字符串结束标记
|
||
DATAS ENDS
|
||
|
||
STACKS SEGMENT
|
||
DB 64 DUP(?)
|
||
STACKS ENDS
|
||
|
||
CODES SEGMENT
|
||
ASSUME CS:CODES, DS:DATAS, SS:STACKS
|
||
|
||
START:
|
||
MOV AX, DATAS
|
||
MOV DS, AX
|
||
MOV ES, AX ; 设置ES为同一数据段
|
||
|
||
LEA SI, SOURCE ; SI指向源字符串
|
||
LEA DI, DEST ; DI指向目标字符串
|
||
|
||
; 计算源字符串长度
|
||
MOV CX, 0
|
||
COUNT_LOOP:
|
||
CMP BYTE PTR [SI + CX], 0
|
||
JE COPY_START
|
||
INC CX
|
||
JMP COUNT_LOOP
|
||
|
||
COPY_START:
|
||
; 使用REP MOVSB复制字符串
|
||
REP MOVSB
|
||
|
||
; 添加字符串结束符
|
||
MOV BYTE PTR [DI], 0
|
||
|
||
; 程序结束
|
||
MOV AH, 4CH
|
||
INT 21H
|
||
|
||
CODES ENDS
|
||
END START |