Jg LLL1 ; ошибка, повторить ввод
Cbw ; расширить до слова
Mov POSDEL, AX ; запомнить позицию удаления
; Ввод длины удаляемой части
LLL2: lea dx, MESS3
Mov AH, 09h ; приглашение к вводу числа
Int 21h ; удаляемых символов
Lea dx, N_BUFLEN
Mov ah, 0ah
Int 21h ; ввод числа удаляемых символов
Call VAL ; вызов процедуры перевода в число
Jc LLL2 ; ошибка, повторить ввод
Cbw ; расширить до слова
Mov LENDEL, AX ; запомнить число удаляемых символов
;Занести в стек параметры и вызвать подпрограмму удаления
Lea bx, S_INPBUF
Mov al, S_FACTLEN ; дополняем до слова
Cbw
Push ax ; 4-й параметр длина строки
Push LENDEL ; 3й параметр число удаляемых симв.
Push POSDEL ; 2-й параметр позиция удаления
Push bx ; 1й параметр адрес строки
Call DELSUB ; вызов подпрограммы
; Вывод результата
Lea dx, MESS4
Mov ah, 09h
Int 21h ; вывод заголовка вывода
Lea bx, S_FACTLEN
Xor cx, cx
Mov cl, S_FACTLEN
LLL3: inc bx
cmp byte ptr [bx], 0
Loopne LLL3 ; повторять до конца строки или первого нуля
LLL4: mov byte ptr [bx], "$"
Lea DX, S_INPBUF
Mov ah, 09h
Int 21h
Jmp LOP
QUIT: mov ax, 4c00h
Int 21h
; Функция получения числа из его строкового представления
; Схема преобразования десятичного числа а2а1а0 в 16-ричную СС по ;схеме Горнера - N16=(a2*A+a1)*A+a0 , где A десятичное основание
VAL proc near
Push bx ; сохранение
Push cx ; регистров
Push dx ; в стеке
Lea bx, N_INPBUF ; адрес начала числа