Программа, которая удаляет определённый символ из заданной строки. Возвращает обновлённую строку.
В данном примере мы будем удалять символ 'o'.
- title Автор: Довгополов Евгений Сергеевич
- .model small
- .stack 100h
- data segment public
- ____string db _"Microsoft Macro Assembler"
- ____strlen equ ($-string) ; Вычисляем длину массива string
- ____newstr db _strlen dup(24h)
- data ends
- code segment public _____________; Начало сегмента кода
- ____assume ds:data, cs:code
- ____main proc ___________________; Начало процедуры main
- ________mov ____ax, seg data_____; Получаем адрес сегмента памяти данных и сохраняем его в ax
- ________mov ____ds, ax___________; Передаём адрес сегмента памяти данных из регистра ax в ds
- ________mov ____es, ax___________; Передаём адрес сегмента памяти данных из регистра ax в es
- ________mov ____cx, strlen_______; Копируем значение переменной strlen в регистр cx
- ________lea ____di, es:[newstr]__; Загружаем адрес переменной newstr в регистр-приёмник es:di
- ________lea ____si, ds:[string]__; Загружаем адрес переменной string в регистр-источник ds:si
- ____MainLoop:
- ________lodsb____________________; Загружаем байт из регистра-источника si в регистр al
- ________cmp ____al, 6Fh__________; Выполняем сравнение значения в регистре al c символом 'o'
- ________je _____Skip_____________; Если ZF=1, то прыгаем на метку Skip
- ________stosb____________________; Сохраняем байт из регистра al в регистре-приёмнике di
- ____Skip:
- ________loop ___MainLoop_________; Выполняем цикл пока CX≠0
- ________mov ____ah, 09h__________; Копируем значение функции вывода строки в регистр ah
- ________lea ____dx, ds:[newstr]__; Загружаем адрес переменной newstr в регистр ds:dx
- ________int ____21h______________; Вызываем прерывание DOS
- ________mov ____ax, 4C00h________; Копируем значение функции завершения в ah а значение в al
- ________int ____21h______________; Вызываем прерывание DOS
- ____main endp ___________________; Конец процедуры main
- code ends _______________________; Конец сегмента кода
- end main ________________________; Конец файла. Точкой входа указывается процедура main