好吧,我正在解决这个问题,这可能是一个非常复杂的解决方案,但它首先出现在我的脑海中。
我需要编写一个汇编语言程序来反转“源”字符串,而不使用“目标”字符串(临时变量)..这是我的尝试。
INCLUDE Irvine32.inc
.data
source BYTE "This is the source string", 0
count DWORD ?
.code
main PROC
mov ecx, LENGTHOF source
L1:
mov count, ecx ; save our outer loop count
mov al,[source+0] ; get the first character in the string
mov ecx,LENGTHOF source ; set out inner loop count
mov esi, OFFSET source
inc esi
L2:
mov bl,[esi]
dec esi
mov [esi],bl
add esi, 2
loop L2
mov ecx, count
loop L1
mov edx,OFFSET source
call WriteString
exit
main ENDP
END main
现在..这个“算法”基本上是这样的:从字符串中取出第一个字符,在字符数组中将所有其他字符向下移动一个空格,将你第一次取出的字符放在数组的后面。现在,我到了这太复杂的地步了。事实上,我如何到达数组的后面。我想我需要另一个循环?我当然不需要三个循环,甚至不想处理它。
也许我在正确的轨道上,甚至不知道。任何建议、提示、代码或不同的算法都会有所帮助!