DATA SEGMENT
BUF1 DB 'ABCDEFG', '$'
LEN EQU $ - BUF1
BUF2 DB (LEN + 1) DUP('?')
N DW 3
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX
;输出BUF1
MOV DX, OFFSET BUF1
MOV AH, 09H
INT 21H
CALL CR_LF
LEA SI, BUF1
LEA DI, BUF2
MOV CX, N
LOP1:
CALL MOVE
LOOP LOP1
CHANGE:
MOV AH, 01H
INT 21H
MOV [DI], AL
INC DI
CALL CR_LF
MOV CX, LEN
SUB CX, N
LOP2:
CALL MOVE
LOOP LOP2
FINAL:
;输出BUF2
MOV DX, OFFSET BUF2
MOV AH, 09H
INT 21H
MOV AH, 4CH
INT 21H
;子程序 功能移动将BUF1的数移到BUF2中
MOVE PROC NEAR
MOV DL, [SI]
MOV [DI], DL
INC SI
INC DI
RET
MOVE ENDP
CR_LF:
MOV AH, 02H
MOV DL, 13
INT 21H
MOV DL, 10
INT 21H
RET
CODE ENDS
END START
可以了。
你的LOP2里面没有对CX的操作是导致死循环的原因
这个有点复杂呀