Найти наибольшее количество цифр, идущих в ней подряд. Не могу найти ошибку - Assembler
Формулировка задачи:
Добрый день. Есть задание "Дана символьная строка. Найти наибольшее количество цифр, идущих в ней подряд.". Написал код, но он отказывается работать, кто-нибудь может подсказать в чем ошибка?
OutInt
В чем ошибка? уже голову сломал. Спасибо за помощь.
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 startTitle 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
Объяснение кода листинга программы
- Переменная
testсодержит значение 10000000b (10 миллионов). - Команда
je nosignoпроверяет, является ли значение переменнойtestотрицательным числом. Если это так, то выполняется блок кода, начиная с меткиnosigno. - Если значение переменной
testне является отрицательным числом, то программа продолжает работу без выполнения блока кода, начиная с меткиnosigno.