Ввести с клавиатуры строку в несколько точек и преобразовать её так, чтобы после каждой точки был пробел - Assembler
Формулировка задачи:
Задача заключается в том, чтобы ввести с клавиатуры строку, содержащую несколько точек и преобразовать её так, чтобы после каждой точки был пробел. Полученную строку вывести на экран.
Подсознательно понимаю, что проверять введенную строку желательно на отличные от точки символы, но это не главное. Не могу реализовать саму вставку пробелов. Уверена, что необходимо после точки вставить пробел и оставшиеся символы сдвинуть вправо. И конечно все это в цикл. Реализовать затрудняюсь. Помогите с реализацией, пожалуйста.
Решение задачи: «Ввести с клавиатуры строку в несколько точек и преобразовать её так, чтобы после каждой точки был пробел»
textual
Листинг программы
; masm dos exe # .286 .MODEL small .data BUF db 100 DUP (?) .CODE main: mov ax,@data mov ds,ax mov ah, 0Ah mov dx,offset BUF int 21h mov al,0Dh int 29h mov al,0Ah int 29h mov al,BUF+1 or al,al jz EXIT mov si,offset BUF+2 xor cx,cx mov cl,BUF+1 CYCLE: lodsb cmp al,'.' jnz _1 int 29h mov al,' ' _1: int 29h loop CYCLE mov ah,0 int 16h EXIT: mov ah,4Ch int 21h END main
Объяснение кода листинга программы
В этом коде:
- Переменная BUF используется для хранения вводимой строки. Её объём 100 байт, что достаточно для строки, содержащей 99 символов и завершающей её символа новой строки.
- Цикл CYCLE с использованием команды lodsb читает по одному символу из строки, помещая его в регистр AL.
- Если символ равен точке, выполняется переход к подциклу, в противном случае — продолжается основной цикл.
- В подцикле после каждой точки вводиться пробел при помощи команды mov al,' '.
- После окончания подцикла выполняется переход к основной части цикла.
- Если в регистре SI осталось больше нуля, то это означает, что в строке ещё остались символы, и цикл продолжается.
- Если в регистре SI осталось нулевое значение, то все символы в строке были обработаны, и выполняется переход к операционной системе для завершения работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д