我正在编写一个程序,它不是“1bc”,而是“ONEbc”。然而,我很难将一个字符串插入另一个字符串中。我设法做到了,程序改变了每个字符,但我需要插入整个字符串,而不是逐个符号地插入,同时我的程序也不打印其余的文本(只是“ONE”)。这是将1变为ONE的段。
.DATA
one db "ONE" ; I want to include this into my code somehow
**************************************************
MOV cx, ax
MOV si, offset firstBuf ; (firstBuf db "1bc")
MOV di, offset newBuf ; (should be "ONEbc" after this)
work:
MOV dl, [si]
CMP dl, '1'
JNE continue
ADD ax, 3
MOV cx, ax
MOV [di], 'O'
INC si
INC di
MOV [di], 'N'
INC si
INC di
MOV [di], 'E'
JMP next
continue:
MOV [di], dl
next:
INC si
INC di
LOOP work
正如你所看到的,我试过一个符号接一个符号地输入字符串,但是我认为有一个更好的方法来做到这一点。我是一个初学者,我使用emu8086,如果这有帮助的话。
1条答案
按热度按时间f5emj3cl1#
输出没有显示“bc”,因为SI寄存器上有2个额外的增量!并且在循环中间更改CX会导致阅读超过源字符串,因此也不要这样做。
我试过一个符号接一个符号地写字符串,但我认为有更好的方法。
您可以同时输出2个字符:
你也可以从其他地方检索“ONE”字符串。如果要插入的文本有点长,这尤其有趣。