Найти наибольшее количество цифр, идущих в ней подряд. Не могу найти ошибку - Assembler

Узнай цену своей работы

Формулировка задачи:

Добрый день. Есть задание "Дана символьная строка. Найти наибольшее количество цифр, идущих в ней подряд.". Написал код, но он отказывается работать, кто-нибудь может подсказать в чем ошибка?
Extrn OutInt:Far        
data segment
     string db 100 dup ('$')
     string2 db 'Input the string!', 0dh,0ah, '$'
     string3 db 'Count -    $'
data ends 
code segment
assume cs:code,ds:data
start:
    mov ax, data
    mov ds, ax
    mov ah,9
    lea dx,string2
    int 21h         
    mov ah,0ah
    lea dx,string
    int 21h     
    mov ah,9
    lea dx,string3
    int 21h
 
mov si,offset A
mov BX,0
mov DX,0
mov CX,100
looperunda:
lodsb
test AL,10000000b
je nosigno
cmp BX,DX
jnb neatral
mov BX,DX
xor DX,DX
jmp neatral
nosigno:
inc DX
neatral:
loop looperunda

    mov ax, 16
    Call OutInt 
 
code ends
end start
OutInt
Title OutInt 
CodeSg  Segment PARA 'Code'
OutInt  Proc FAR
Assume CS:CodeSg
Public OutInt   
    aam 
    add ax,3030h 
    mov dl,ah 
    mov dh,al 
    mov ah,02 
    int 21h 
    mov dl,dh 
    int 21h
 
    mov ah, 10h
    int 16h 
    mov ax, 4c00h
    int 21h
OutInt endp 
CodeSg ENDS
END OutInt
В чем ошибка? уже голову сломал. Спасибо за помощь.

Решение задачи: «Найти наибольшее количество цифр, идущих в ней подряд. Не могу найти ошибку»

textual
Листинг программы
test AL,10000000b
je nosigno

Объяснение кода листинга программы

  1. Переменная test содержит значение 10000000b (10 миллионов).
  2. Команда je nosigno проверяет, является ли значение переменной test отрицательным числом. Если это так, то выполняется блок кода, начиная с метки nosigno.
  3. Если значение переменной test не является отрицательным числом, то программа продолжает работу без выполнения блока кода, начиная с метки nosigno.

Оцени полезность:

12   голосов , оценка 3.917 из 5
Похожие ответы