0
我正在小NASM功能,使存儲在與佈置等BGRBGRBGR顏色的字節一個維向量像素表的垂直反射鏡產生段錯誤...NASM MOV取決於地方
我製成的原型,其做它首先(最後,它是BMP)線。現在我有一個問題,爲什麼是那個版本正確,並沒有產生段錯誤:
global asm_vert
section .text
asm_vert:
push ebp
mov ebp, esp
push ecx
push esi
push ebx
push edx
push edi
mov edx, [ebp+8] ; table width
mov ecx, [ebp+12] ; table height
mov esi, [ebp+16] ; input table adress
mov edi, [ebp+20] ; output table adress
mov eax, edx
mov ecx, edx
mov ebx, 3
mul ebx
add edi, eax
sub edi, 3
x_loop:
mov bl, byte[esi]
mov byte[edi], bl
inc esi
inc edi
mov bl, byte[esi]
mov byte[edi], bl
inc esi
inc edi
mov bl, byte[esi]
mov byte[edi], bl
inc esi
sub edi, 5
loop x_loop
pop edi
pop edx
pop ebx
pop esi
pop ecx
pop ebp
ret
如果我只是編輯該節:
mov eax, edx
mov ecx, edx
mov ebx, 3
mul ebx
add edi, eax
sub edi, 3
要的是:
mov eax, edx
mov ebx, 3
mul ebx
mov ecx, edx
add edi, eax
sub edi, 3
這是無效。我認爲這在邏輯上是一回事,但如果第一個版本是正確的,而第二個版本是不正確的話。你會爲此推薦哪種具有圖形界面(Linux)的調試器?
我會感謝任何意見。