My question is why isn't cmp comparing my bits properly or the data from array in the right way?
I am open too comparing the data from the array with the limits a different way such as cmpsd or repe cmpsd any help is appreciated.?
Can anyone show me what I am doing wrong here within my code?
;Sum Array Integers within Limits
Include Irvine32.inc
.386
.model flat,stdcall
.stack 4096
ExitProcess PROTO, dwExitCode:DWORD
.data
lowerLimit dword 20
upperLimit dword 40
array_1 sdword 10,30,25,15,17,19,40,41,43
array_2 sdword 10,-30,25,15,-17,55,40,41,43
.code
main Proc
;Array
    mov edi, 0                          ;clear register
    mov ebx, 0                          ;clear register
    mov ecx, 0                          ;clear register
    mov esi, 0                          ;clear register
    mov esi, OFFSET array_1             ;set buffer in array_1
    mov ecx, LENGTHOF array_1           ;set ecx register to length of array for counter
    mov edi, lowerLimit                 ;set buffer to lower limit for comparison
    L1:
        cmp esi, esi                            ;compare bytes
        jge lower                       ;jump to lower label if greater or equal to 
        jmp next                        ;jump to next label
    lower:
            
            mov edi, 0                  ;clear register
            mov edi, upperLimit         ;set edi to upperlimit
            cmp edi, esi                ;compare bits in register 
            jle addele                  ;jump if less than equal to upper limit
            jmp next                    ;jump to next label if not less than or equal to
    addele:                             
            add ebx, [esi]              ;add element to ebx sum register from esi
            jmp next                    ;go to next label
    next:
            add esi, TYPE array_1       ;increment esi by 4 
    loop L1                             ;loop
;Array_two
    mov eax, 0
    mov ecx, 0 
    mov esi, 0
    mov esi, OFFSET array_2
    mov ecx, LENGTHOF array_2
    mov edi, lowerLimit
    L2:
        cmp edi, esi
        jge lo2
        jmp next2
    lo2: 
            mov edi,0
            mov edi,  upperLimit
            cmp edi, esi
            jle addele2
            jmp next2
    addele2:
            add eax, [esi]
            jmp next2
    next2:
            add esi, TYPE array_2
    loop L2
    call Crlf                               ;move to next line
    call WriteInt
    call Crlf
    mov eax,0
    mov eax,ebx
    call WriteInt
    
            
    INVOKE ExitProcess,0
main ENDP
END main
Above is my code.
