String 如何使用两个单独的字节数组反转字符串?
如何使用两个单独的字节数组反转字符串? 使用带有间接寻址的循环指令编写一个程序,将字符串从源复制到目标,在过程中颠倒字符顺序 使用以下变量:String 如何使用两个单独的字节数组反转字符串?,string,assembly,x86,reverse,masm,String,Assembly,X86,Reverse,Masm,如何使用两个单独的字节数组反转字符串? 使用带有间接寻址的循环指令编写一个程序,将字符串从源复制到目标,在过程中颠倒字符顺序 使用以下变量: source BYTE "This is the source string",0 target BYTE SIZEOF source DUP ('#') 问题很简单。使用间接寻址(换句话说,不要直接使用内存地址,而是通过寄存器引用它们)并反转字符串。例如,以下是一些假设您已经定义了源和目标的基本情况: MOV SI, source ; Get s
source BYTE "This is the source string",0
target BYTE SIZEOF source DUP ('#')
问题很简单。使用间接寻址(换句话说,不要直接使用内存地址,而是通过寄存器引用它们)并反转字符串。例如,以下是一些假设您已经定义了源和目标的基本情况:
MOV SI, source ; Get source address
MOV DI, (target + SIZEOF source) ; Get the ending address for target
LOOP:
MOV AL, [SI] ; Get a byte
MOV [DI], AL ; Store a byte
INC SI ; Move forward one in source
DEC DI ; Move back one in target
CMP AL, 0 ; Have we reached the zero termination?
JNZ LOOP
RET
这绝不意味着是完整的或功能性的。例如,您可能需要找到一种更好的方法来动态计算源的长度。:)然而,我不想从你身上带走学习的乐趣。这至少应该是一个很好的起点。我们不是在为您做功课。可能的重复我同意这接近于如何反转字符串,但它有点不同,因为它是如何复制它(到新位置),而不是如何向后输出字符串。“
target+SIZEOF source
”。那么,您是否需要在循环中预减量DI
?可能。。。正如我所说,我并不是真的想为他解决这个问题,让他开始吧。你们能给我答案吗please@sinan:这是一个答案。如果你不明白,那么你需要从你的教授/助教/教科书/在线教程那里得到更多帮助。