我一直非常惱火以完成這個.asm代碼。 必須使用Insertion_Sort按順序打印此結果。x86彙編:作爲初學者編程Insertion_sort
我實際上嘗試了Bubble_Sort,以防算法的邏輯可能出錯。我想請您閱讀這些代碼。任何建議將是非常受歡迎的。我真的很想知道我錯過了什麼。
這是我到目前爲止的結果:(Bubble排序的rlt也很奇怪,因爲我不知道如何在asm中調試,所以我不禁一遍又一遍讀代碼。 。絕望在幫助)
%include "asm_io.inc"
section .data
array dd 3,1,5,7,2,8,4,9,6,10
size dd 10
segment .bss
next resw 1
segment .text
global main
main:
enter 0,0
pusha
; Insertion Sort Start from here
mov eax,[array+4*ecx]
mov [next], eax
; j = i-1
mov ebx, ecx
dec ebx
while2:
cmp ebx,0
jl EndLoop2
mov eax, [next]
cmp [array+4*ebx],eax
jle EndLoop2
;array[j+1] = array[j]
mov eax, [array+4*ebx]
mov [array+4*(ebx+1)], eax
; j--
dec ebx
; Go back to the top of this loop
jp while2
EndLoop2:
mov eax, [next]
mov [array+4*(ebx+1)],eax
inc ecx
jmp while1
EndLoop1:
mov ecx,0
nextInt:
mov eax, [array+4*ecx]
call print_int
call print_nl
inc ecx
cmp [size], ecx
jne nextInt
popa
mov eax, 0
leave
ret
你應該學習如何在asm中調試。它應該比調試高級語言更容易,因爲每個asm指令只做一件事。 (當你這樣做時,你可能會注意到'jp'上的一些有趣的東西。) –
給自己一個調試器!有很多可用的。當程序逐步執行時,可以更容易地理解程序的功能。我注意到你忘了問一個問題。你有什麼問題? –