嘿傢伙,所以我在課堂上遇到了這個問題。所以問題是添加一個範圍內的數組的總和。我遇到的問題是我無法獲得第二個條件語句的工作,跳到L4。我相信編碼還有其他問題,所以我完全開放以瞭解這些問題。先謝謝你們。第二個條件陳述不能在彙編中工作
; Program template
Include Irvine32.inc
.data
list DWORD 10, 20, 30, 40
ptrA SDWORD list
varj DWORD 25
vark DWORD 100
.code
main proc
mov esi, ptrA
mov ecx, LENGTHOF list
call ArraySum
call WriteDec
invoke ExitProcess,0
main endp
ArraySum Proc
push esi
push ecx
mov eax, 0
mov ebx, varj
mov edx, vark
top:
cmp [esi], ebx ; if esi > ebx
jg L2 ; jump to L2
jl L4 ; else jump to L4
L2:
cmp [esi], edx ;if esi < edx
jl L3 ; jump to L3
jg L4 ; else jump to L4
L3:
add eax, [esi] ;add the value in array into eax
add esi, TYPE DWORD ; move to next array index
loop top ; loop to top
L4:
add esi, TYPE DWORD ; move ot next array index
loop top ; loop to top
pop ecx
pop esi
ret
ArraySum endp
end main
對不起。我使用的是微軟(MASM),所以我認爲它與cmp相反。另外,對不起,讓我更新代碼。謝謝 – Bryan
從我收集的cmp A,B被翻譯成A - B,例如:http://stackoverflow.com/questions/9617877/assembly-jg-jnle-jl-jnge-after-cmp – Bryan
是的,對不起那。你對'cmp'說得對。儘管如此,仍然可以使用對不起作用的解釋。 – lurker