所以我的任务是在汇编代码中编写一个程序,该程序可以发出语句,接收用户输入的字符串。打印该字符串,然后使用cpu堆栈将其反转并再次打印。这是我到目前为止。如何在汇编语言中反转和打印字符串
INCLUDE Irvine32.inc
.data
buffer byte 20 DUP(0)
byteCount DWORD ?
Question byte "Please enter your name." ,0
Greeting byte "Hello " ,0
Statement byte " Here is your name backwards"
.code
main proc
mov edx , OFFSET Question
call WriteString
call CRLF
Call CRLF
mov edx, OFFSET buffer
mov Ecx, SIZEOF buffer
call ReadString
push edx
mov EDX ,OFFSET greeting
Call WriteString
pop edx
call WriteString
Call CRLF
Call CRLF
正如你可以看到这成功地接受了用户输入的输入并显示它,但我真的很努力地试图扭转它。
我在这里试过这些,我从书中从关于反转字符串的章节复制而来。
; Push the name on the stack.
mov ecx,nameSize
mov esi,0
L1: movzx eax,aName[esi] ; get character
push eax ; push on stack
inc esi
loop L1
; Pop the name from the stack in reverse
; and store it in the aName array.
mov ecx,nameSize
mov esi,0
L2: pop eax ; get character
mov aName[esi],al ; store in string
inc esi
loop L2
Invoke ExitProcess,0
main endp
end main
但我没有得到输出。
它说:“喂,(提供yourname这里)”
它说:“这是倒退你的名字”
香港专业教育学院尝试过这种每个不同的化身,我可想而之无济于事。在我的“字符串”在这里结束
好的倒转字符串将是你任务的主要部分。你可以向我们展示/告诉我们你尝试过的不成功的事情吗? –
您添加的代码甚至不使用相同的变量名称。你是否真的试图将这些代码集成到你的程序中? –
是的,我改变了所有的参考,以便它会网格化。 –