Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何使用两个单独的字节数组反转字符串?_String_Assembly_X86_Reverse_Masm - Fatal编程技术网

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:这是一个答案。如果你不明白,那么你需要从你的教授/助教/教科书/在线教程那里得到更多帮助。