Написать и протестировать функцию для замены символов ‘:’ на ‘.’ в заданной строке, начиная с указанной позиции - Assembler
Формулировка задачи:
Написать и протестировать функцию для замены символов ‘:’ на ‘.’ в заданной
строке, начиная с указанной позиции. Желательно использовать model tiny
Решение задачи: «Написать и протестировать функцию для замены символов ‘:’ на ‘.’ в заданной строке, начиная с указанной позиции»
textual
Листинг программы
.model tiny .code org 100h main proc jmp start ;Данные String db 'asd:jkl.::gh:' StrLen equ $-String CrLf db 0Dh, 0Ah, '$' start: ;программа mov ah, 09h lea dx, [String] int 21h mov cx, StrLen lea si, [String] mov bx, StrLen-1 call Replace mov ah, 09h lea dx, [String] int 21h int 20h main endp ; замена символов ':' на '.' ; на входе: ; ds:[si] - строка ; cx - длина строки ; bx - начальная позиция для замены (от 0) Replace proc push ax push bx push cx push dx jcxz @@Break dec cx sub cx, bx jb @@Break inc cx cld add si, bx mov di, si @@ForEachChar: lodsb cmp al, ':' jne @@Next mov al, '.' @@Next: stosb loop @@ForEachChar @@Break: pop dx pop cx pop bx pop ax ret Replace endp end main
Объяснение кода листинга программы
- Объявлены переменные:
— String, в которой содержится строка для обработки (длина строки вычисляется как разница между символом
$
и первым символом строки, и сохраняется в переменной StrLen). — StrLen, длина строки. — CrLf, символ конца строки (0Dh = CR, 0Ah = LF, 0Dh = CR). - Выполняется функция замены символов. На входе: — ds:[si] — строка. — cx — длина строки. — bx — начальная позиция для замены (от 0).
- Начинается выполнение функции Replace: — Начинается цикл, который выполняется до тех пор, пока не будут заменены все символы ':'. — В каждой итерации цикла выполняется следующее: — Загружается очередной символ из строки в al. — Если al не равен ':', то выполняется переход к следующей итерации цикла. — Если al равен ':', то выполняется замена на символ '.' и переход к следующей итерации цикла. — Выполняется вывод нового символа в строку.
- Выполняется выход из функции Replace.
- Выполняется возврат в основную программу.
- Выполняется вывод строки на экран (09h = DS:DX).
- Выполняется переход на следующую строку (0Dh = CR, 0Ah = LF).
- Выполняется возврат в основную программу.
- Выполняется переход на следующую строку (0Dh = CR, 0Ah = LF).
- Выполняется возврат в основную программу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д