; Loops over every character.
; Multiplies current by 10
; Adds [bx] - 0x30
; add bx, 1
parse_int:
    pusha

    ; Contains the actual result
    mov ax, 0
    
    .loop:
        mov cl, [bx]
        
        cmp cl, 0x0 ; End on null
        je .end
        
        ; If the character is invalid, stop here.
        cmp cl, 0x30
        jl .end
        cmp cl, 0x39
        jg .end
        
        ; Multiply by 10
        mov cx, 10 ; NOT 0x10
        mul cx
        ; Note: Has to be cx and not cl, otherwise it will be limited to 8-bits only
        
        mov cl, [bx]
        sub cl, 0x30
        mov ch, 0x0
        add ax, cx ; Use 16-bit addition
        
        add bx, 1 ; Next char
         
        jmp .loop
    .end:
    
    mov [result], ax
    
    popa
    ret

result: dw 0