0
我想在彙編語言x86中編寫代碼,但由於某種原因我的程序崩潰了。這是任務。 編寫一個彙編語言函數,該函數將接收用戶輸入的10個16位值的列表(數組)和一個編號爲N的N(1到10)的用戶輸入的列表(數組)。 AL函數應按以下方式將第N個值移動到列表的前面 : 將所有值從元素1推送到堆棧中的元素N-1。在N元素重新定位價值元素1. 彈出堆棧,並恢復它的元素融入到地址N,N-1,...,2實現數組元素程序集
這裏是我的代碼
void __declspec (naked) asmSwitch(short[], int)
{
__asm
{
push ebp
push eax
push ebx
push ecx
push edx
push ebx
mov ebp, esp
mov ecx, [ebp + 12] ; the element
dec ecx ;
mov ebx, [ebp + 8] ; est ptr to array
TOP: push [ebx] ;
inc ebx ;
inc ebx
loop TOP
mov ax, [ebx]
mov ebx, [ebp + 8]
mov [ebx], ax
mov ecx, [ebp + 12]
dec ecx
mov eax, ecx
add eax, eax
add ebx, eax
TOP1: pop [ebx]
dec ebx
dec ebx
loop TOP1
pop esi
pop edx
pop ecx
pop ebx
pop eax
pop ebp
ret
}
}
而且我正在讀違規上的錯誤
TOP: push [ebx] ;
而我的程序在編譯後崩潰。
這解決了我的問題。非常感謝! –