Эй, ребята, поэтому у меня проблемы с этой проблемой для класса. Поэтому задача состоит в том, чтобы добавить сумму массива в диапазоне. Проблема, с которой я сталкиваюсь, заключается в том, что я не могу заставить второе условное заявление работать, прыгая на 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
К сожалению. Я использую Microsoft (MASM), поэтому я считаю, что это противоположно для cmp. Кроме того, извините, позвольте мне обновить код. Спасибо – Bryan
Из того, что я собрал cmp A, B переведен на A-B, Ex: http: //stackoverflow.com/questions/9617877/assembly-jg-jnle-jl-jnge-after-cmp – Bryan
Да, извините что. Вы правы в 'cmp'. Однако можно использовать объяснение того, что не работает. – lurker