如何使用两个单独的字节数组反转字符串?

时间:2016-04-05 15:54:09

标签: string assembly x86 reverse masm

如何使用两个单独的字节数组反转字符串?

使用LOOP指令编写程序,使用间接寻址将字符串从源复制到目标,从而反转过程中的字符顺序。

使用以下变量:

source BYTE "This is the source string",0 
target BYTE SIZEOF source DUP ('#')

1 个答案:

答案 0 :(得分:2)

问题非常简单。使用间接寻址(换句话说,不要直接使用内存地址,但可以通过寄存器引用它们)并反转字符串。例如,假设您已经定义了源和目标,这里有一些准系统:

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

这绝不意味着完整或功能性。例如,您可能需要找出一种更好的方法来动态计算出SOURCE的长度。 :)但是,我不想带走远离你的快乐。这应该至少是一个很好的起点。