Программирование на Ассемблере для персональных компьютеров. Садовой Н.Н - 55 стр.

UptoLike

Составители: 

55
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 ; получить длину в слове
    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                ; получить длину в слове
                                                                                  55