0
我正在寫一個yasm中的泡沫排序的開始,作爲一個練習。但是,我在下面的最後一條指令中每次都會暫停,我不明白爲什麼。x86 yasm,segfault on cmpsb;正確使用cmpsb?
segment .data
arr db 5,6,2,3,8,1
segment .text
global main
main:
xor ecx, ecx ; counter
mov rdx, 6 ; sizeof(arr)
cld
_Do: xor eax, eax ; set swapped = false
for:
movzx esi, byte [arr+ecx]
movzx edi, byte [arr+ecx+1]
cmpsb ; is a[i]>a[i+1]? <--- segfault here every time
;jump to swap next, if I could get there
我的理解是cmpsb比較si和di中的字節。爲什麼它應該是段錯誤?這一定是非常簡單的錯誤,但我看不到它。通常cmpsb用在repe的上下文中,但我認爲它也可以在這裏工作。謝謝你的幫助!
謝謝你,修復它! – user2022444 2013-02-10 17:38:00