汇编题目:在字符串中第N个字符前插入一个字符。。。程序不知为什么一直循环,跳不出,求解答!!

2025-12-18 04:33:15
推荐回答(3个)
回答1:

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

可以了。

回答2:

你的LOP2里面没有对CX的操作是导致死循环的原因

回答3:

这个有点复杂呀