Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Текст решения представлен в листинге 6.3



Листинг 6.3. Решение задачи.

Data segment

MESS1 db 0dh,0ah, "Введите строку:", 0dh,0ah, "$"

MESS2 db 0dh,0ah, "Введите позицию:", 0dh,0ah, "$"

MESS3 db 0dh,0ah, "Введите число удаляемых символов:", 0dh, 0ah, "$"

MESS4 db 0dh,0ah, "Строка после удаления:", 0dh,0ah, "$"

S_BUFLEN db 80; Максимальная длина строки

S_FACTLEN db?; Фактическая длина строки

S_INPBUF db 80 dup(?); Введённая строка

N_BUFLEN db 3; Максимальная длина числа при вводе

N_FACTLEN db?; Фактическая длина числа

N_INPBUF db 3 dup(?); Введённое число

POSDEL dw?; Позиция начала удаления

LENDEL dw?; Число удаляемых символов

Data ends

Code segment

assume cs:code, ds:data

START: mov ax, data

Mov ds,ax

; Ввод строки

LOP: lea DX, MESS1

Mov ah, 09h

Int 21h;приглашение к вводу строки

Lea DX, S_BUFLEN

Mov ah, 0Ah

Int 21h; ввод строки

Mov AL, S_FACTLEN

cmp al, 0; строка пустая?

Ja LLL0; нет продолжать

Jmp quit; закончить работу

LLL0: lea bx, S_INPBUF; получить адрес начала строки

Cbw; получить длину в слове

Add bx, ax; адрес конца строки

mov byte ptr [bx], "$"; записать признак конца строки

; Ввод позиции удаления

LLL1: lea dx, MESS2

Mov ah, 09h

Int 21h;Приглашение к вводу позиции удаления

Lea dx, N_BUFLEN

Mov ah, 0Ah

Int 21h; ввод позиции удаления

Call VAL; вызов процедуры перевода в число

Jc LLL1; ошибка, повторить ввод

cmp al, 0; ноль?





Дата публикования: 2014-11-28; Прочитано: 296 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...