问题:创建两个大小为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