Ввести с клавиатуры строку в несколько точек и преобразовать её так, чтобы после каждой точки был пробел - 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

Объяснение кода листинга программы

В этом коде:

  1. Переменная BUF используется для хранения вводимой строки. Её объём 100 байт, что достаточно для строки, содержащей 99 символов и завершающей её символа новой строки.
  2. Цикл CYCLE с использованием команды lodsb читает по одному символу из строки, помещая его в регистр AL.
  3. Если символ равен точке, выполняется переход к подциклу, в противном случае — продолжается основной цикл.
  4. В подцикле после каждой точки вводиться пробел при помощи команды mov al,' '.
  5. После окончания подцикла выполняется переход к основной части цикла.
  6. Если в регистре SI осталось больше нуля, то это означает, что в строке ещё остались символы, и цикл продолжается.
  7. Если в регистре SI осталось нулевое значение, то все символы в строке были обработаны, и выполняется переход к операционной системе для завершения работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5
Похожие ответы