反转然后在x86

时间:2016-11-15 05:19:36

标签: assembly x86 stack reverse irvine32

我试图找出如何将字符串反转到新位置然后打印它。

我知道我必须循环遍历字符串,将每个字符推入堆栈然后弹回到相同的字符串中,但在此之后,我有点困惑。

我提出了以下代码,但由于我在Visual Studio中了解注册窗口时遇到了问题,因此我决定尝试使用WriteString函数。但是,它似乎没有加载窗口。

我是否错误地调用了WriteString?

另外,对于它的价值,当我尝试“跳过”时,循环会循环适当的次数,虽然L2只在我观看时显示“d”,而L3仅显示“s”。

INCLUDE Irvine32.inc

.386
.stack 4096
ExitProcess proto,dwExitCode:dword

.data
str1 BYTE "dogs"
rStr BYTE 4 DUP(?)  ;reverse

.code
main proc

mov ecx, 4
mov esi,0

L1: mov al, str1[esi]
mov rStr[esi], al
inc esi
Loop L1 


L2: movzx eax, rStr[esi]
push eax
inc esi
Loop L2

mov ecx, 4
mov esi,0

L3: pop eax
mov rStr[esi],al
inc esi
Loop L3

mov edx,OFFSET rStr
call WriteString 

exit
main endp
end main

0 个答案:

没有答案