我正在编写一个程序,它将对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