![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Листинг 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!