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