32位汇编的问题,目的是实现冒泡排序,为什么同样的代码,把数组的类型从dword换成byte就不行了
放代码
先放原始代码
INCLUDE irvine32.inc
.data
array dword 587,-632,777,234, -34
count = lengthof array
.code
main PROC
mov ecx,count
dec ecx
outlp:
mov edx,ecx
mov ebx,offset array
inlp:
mov eax,[ebx]
cmp eax,[ebx+4];如果小于就交换
jng next
xchg eax,[ebx+4]
mov [ebx],eax
next:
add ebx,4
dec edx
jnz inlp
loop outlp
main endp
end main
这个可以实现排序
再把array数组的数据类型从双字换成byte
如下:
INCLUDE irvine32.inc
.data
array byte 7,32,17,23,3
count = lengthof array
.code
main PROC
mov ecx,count
dec ecx
outlp:
mov edx,ecx
mov ebx,offset array
inlp:
mov eax,[ebx]
cmp eax,[ebx+1];如果小于就交换
jng next
xchg eax,[ebx+1]
mov [ebx],eax
next:
add ebx,1
dec edx
jnz inlp
loop outlp
main endp
end main
就无法实现排序了。
为什么呢?
请各位朋友指教