13.11.2008, 12:33
общий
это ответ
Здравствуйте, Ska89!
Приложение использует строковые операции.
Устанавливаем индексные регистры di на позицию с которой будут удалятся символы, а si на позицию до куда должны удалится символы. В регистр cx заносим количество символов которые должны остаться в конце строки после удаления. И применяем строковую операция копирования. Концевой символ в полученной строке будет символ '$', за ним останется «мусор», так как применяется буфер исходной строки.
Пояснения в приложении.
Удачи
Приложение:
code segment
assume cs:code,ds:code
org 100h
begin:
mov ah,09h ;вывод исходной строки
mov dx,offset stroka
mov di,dx ;di и si на начало строки
mov si,dx
int 21h
xor ax,ax
mov al,i
add di,ax ;di на начальную позицию удаления
add si,ax
mov al,n
add si,ax ;si на позицию продолжения строки
mov ah,i
add ah,n
mov al,str_len
sub al,ah
cbw
mov cx,ax ;cx кол-во байтов от продолжения строки до
;конца строки
rep movsb ;строковая операция копирования байтов
mov ah,09h ;вывод строки после удаления
int 21h
ret
;--------Данные-----
;исходная строка
stroka db 'wkdksnt3849kdsl11234-0983jd++wkd4',0ah,0dh,'$'
str_len =$-stroka ;кол-во символов
i db 13 ;начальная позиция (начинается с 0)
n db 10 ;кол-во удаляемых символов
code ends
end begin