所以我的任務是在彙編代碼中編寫一個程序,該程序可以發出語句,接收用戶輸入的字符串。打印該字符串,然後使用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這裏)」
它說:「這是倒退你的名字」
香港專業教育學院嘗試過這種每個不同的化身,我可想而之無濟於事。在我的「字符串」在這裏結束
好的倒轉字符串將是你任務的主要部分。你可以向我們展示/告訴我們你嘗試過的不成功的事情嗎? –
您添加的代碼甚至不使用相同的變量名稱。你是否真的試圖將這些代碼集成到你的程序中? –
是的,我改變了所有的參考,以便它會網格化。 –