.将第一个字符串的内容按相反的顺序复制到第二个字符串中.(使用循环)



问题:创建两个大小为12的字符串。使用用户输入加载其中一个字符串字符(使用循环(。第二个字符串应为空。。按相反的顺序将第一个字符串的内容复制到第二个字符串中。(使用循环(//这是我的代码。但是我的字符串也按相同的顺序存储输入,而不是按相反的顺序。问题出在哪里?包括EMU8086.INC-

.MODEL小型

.STACK 100H.DATA

S1 DB 3 DUP(?),  '$'
S2 DB 3 DUP(?),  '$' 

.CODE

MOV AX,@DATA 
MOV DS,AX
MOV AH,1
MOV SI,0
MOV CX,3

_IN: 
INT 21H
MOV S1[SI],AL
INC SI
LOOP _IN  
PRINTN
MOV SI,0  
MOV DI, 2 
MOV CX, 3
_COPY:
MOV AL,S1[SI] 
MOV S2[DI],AL
INC SI
DEC DI
LOOP _COPY    
LEA BP,S2

MOV AH,9
INT 21H  


EXIT:
MOV AH,4CH
INT 21H

结束

就像@Peter Cordes在评论中告诉你的那样,输入和复制都很好。

然而,显示结果有一个错误:

LEA BP,S2
MOV AH,9
INT 21H  

这个DOS函数期望指针在DX寄存器中,而您意外地使用了BP,在这种情况下它将包含垃圾!

LEA DX, S2
MOV AH, 09h
INT 21h

最新更新