如何理解下面的代码片段

How to understand the snippet of code below

对于上下文:由于在线 类,一些印度大学的计算机 类 已经沦为老师只给我们代码并期望我们死记硬背。

该程序是计算给定数组中 +ve 和 -ve 数字的数量。 The entire code is here.

我的问题来自第 45 行到第 59 行(如下所示)

mov    esi, arr
mov    ecx,arr_size         ;Array counter i.e. 6 
mov    ebx,0;                   ;counter for     +ve nos
mov    edx,0;                   ;counter for    -ve nos.

next_num:
    mov    eax,[esi]         ; take no. in RAX
    rcl    eax,1             ; rotate left 1 bit to check for sign bit
    jc    negative
positive:
    inc    ebx            ; no carry, so no. is +ve
    jmp    next
negative:
    inc    edx            ; carry, so no. is -ve
next:
    add  esi,4                ; 32 bit nos i.e. 4 bytes
    loop next_num

在上面的代码中,据我所知,我将数组的起始位置存储在 ESI 寄存器中并扫描每个元素并检查它是否为正数

但是,我如何知道何时到达数组末尾?

该代码正在维护 ECX 寄存器但未使用它。为什么这 运行 不是无穷无尽呢?

难道不应该有某种带有 DEC ECX 和 JE 0 指令的循环吗?

Shouldn't some sort of loop with a DEC ECX and JE 0 instructions be there as well?

这几乎就是 loop instruction 所做的。