Удалить все пробелы из строки - Assembler
Формулировка задачи:
Написать и протестировать, которые «сжимают» строку. удаление из него всех пробелов
Решение задачи: «Удалить все пробелы из строки»
textual
Листинг программы
@stack segment para stack db 1024 dup(?) @stack ends @data segment CrLf db 0Dh, 0Ah, '$' String db 50, 0, 50 dup(?) Prompt db 'Enter a string:', 0Dh, 0Ah, '$' Message db 'Result:', 0Dh, 0Ah, '$' @data ends @code segment assume cs:@code, ds:@data, ss:@stack ;Процедура удаляет из переданной строки все пробелы ;на входе: ; ds:dx - строка Pascal типа ;на выходе: ; ds:dx - указывает на ту же строку, но в строке удалены пробелы RemoveSpaces proc push ax push bx push cx push dx push si push di mov bx, dx mov si, dx ;смещение считываемого символа inc si mov di, si ;смещение записываемого символа mov cx, 0 mov cl, [bx] jcxz @@Break mov dx, 0 ;количество символов в новой строке @@For: mov al, [si] cmp al, ' ' je @@Skip mov [di], al inc di inc dl @@Skip: inc si loop @@For mov [bx], dl @@Break: pop di pop si pop dx pop cx pop bx pop ax ret RemoveSpaces endp main proc ;инициализация сегментного регистра данных mov ax, @data mov ds, ax mov ah, 09h lea dx, [Prompt] int 21h mov ah, 0Ah lea dx, [String] int 21h mov ah, 09h lea dx, [CrLf] int 21h mov cl, [String+1] mov ch, 0 lea si, [String+2] add si, cx mov [si], byte ptr '$' inc byte ptr [String+1] lea dx, [String+1] call RemoveSpaces mov ah, 09h lea dx, [Message] int 21h mov ah, 09h lea dx, [String+2] int 21h ;завершение программы mov ax, 4C00h int 21h main endp @code ends end main
Объяснение кода листинга программы
- Удаление пробелов из строки
- Входные данные: ds:dx - строка Pascal типа
- Выходные данные: ds:dx - указывает на ту же строку, но в строке удалены пробелы
- Процедура использует регистры bx, si, di, cx, dx для выполнения своей работы
- Переменные String, Prompt, Message, CrLf объявлены в сегменте @data
- Переменная String имеет размер 50 символов и заполняется пользователем при вызове процедуры
- Процедура main вызывает функцию RemoveSpaces после ввода строки пользователем
- После удаления пробелов из строки, результат выводится на экран с помощью функции int 21h
- Программа завершается с кодом 4C00h после вывода результата на экран
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д