我正在編寫一個程序,它將對Bubble排序一個字符串數組。零長度字符串終止數組。我通過聲明一個DWORD數組來處理這個問題,其中應該存儲字節大小的字符串var。我的主要問題不是冒泡排序本身,而是存儲在數組中的字符串沒有完全輸出。打印存儲在一個DWORDS數組中的字符串
懷着希望說清楚,這裏是我的代碼:
.586
.MODEL FLAT
INCLUDE io.h ; header file for input/output
space equ 0
cr equ 0dh
.STACK 4096
.DATA
myStrings byte "Delts",0
byte "Abs",0
byte "Biceps",0
byte 0
labelStrOut byte "Output is: ", 0
stringOut dword 11 dup (?)
stringNum dword 0
stringArray dword 20 dup (?)
.CODE
_MainProc PROC
mov edi, offset myStrings
mov esi, offset stringArray
popltLp:
cmp BYTE PTR [edi], 0
jz popltDone
mov ebx, [edi]
mov DWORD PTR [esi], ebx
add esi, 4
inc stringNum
xor ecx, ecx
not ecx
xor al, al
repne scasb
jmp popltLp
popltDone:
xor edx, edx
lea esi, stringArray
mov ebx, DWORD PTR [esi]
mov stringOut, ebx
output labelStrOut, stringOut
add esi, 4
mov ebx, DWORD PTR [esi]
mov stringOut, ebx
output labelStrOut, stringOut
add esi, 4
mov ebx, DWORD PTR [esi]
mov stringOut, ebx
output labelStrOut, stringOut
outptDone:
mov eax, 0 ; exit with return code 0
ret
_MainProc ENDP
END ; end of source code
可以看出,沒有冒泡排序正在沒有完成......
低於「popltDone」的線就是我亂搞,看看這些字符串是否傳遞給數組就好了。但是,當在屏幕上打印出來時,只有4個字符顯示出來!整個字符串行只是沒有打印出來,這是目前讓我瘋狂。有人可以告訴我我做錯了什麼嗎?
感謝有人花時間閱讀本文。
這功課嗎?你可以添加你看到的輸出嗎? – wallyk 2012-04-06 03:00:52
在屏幕中,輸出非常多:分別是「Delt」,「Abs」和「Bice」。總是4個字符......不知道爲什麼,必須使用錯誤的指令將字符串存儲到數組中。 – 2012-04-06 03:02:33