Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Assembler Перевод из десятичного формата в шестнадцатеричный (оконное приложение) https://www.cyberforum.ru/ asm-beginners/ thread2144747.html
Перевести число, введенное в десятичном формате в шестнадцатеричное. Программирование оконных приложений, нужно сделать графическое приложение на языке Assembler. Вводишь число в десятичном виде,...
Asm вставка Assembler
Пишу в первый раз в жизни на ассемблере если что: После ввода значений переменных vicual c++ 2008 вырубается. Возможно в шоке от моего кода первобытного, но все же в чем проблема? #include...
Assembler Скопировать элементы двухбайтового массива, у которых младший байт имеет значение в диапазоне от 5 до 10
Здравствуйте , в вузе задали задачку не могу сделать ,помогите пожалуйста В кодовом сегменте размещён массив из 20ти двухбайтных кодов Переписать в сегмент данных те из них у которых младший байт...
Assembler Макрокоманды в Assembler Помогите, пожалуйста, разобраться с задачей! ) Условие: Программа должна состоять из главного модуля и двух подключаемых. Входными данными для главного модуля являются переменные у1 и у2. Переменная... https://www.cyberforum.ru/ asm-beginners/ thread2144365.html
Assembler Написать программу, которая по введенному номеру месяца выводит время года https://www.cyberforum.ru/ asm-beginners/ thread2144336.html
data segment mes1 db 10, 13, 'January$' mes1_e db 10, 13, 'Neverno$' mes2 db 10, 13, 'February$' mes3 db 10, 13, 'March$' mes4 db 10, 13, 'April$' mes5 db 10, 13, 'May$' mes6 db 10, 13,...
Assembler Перевести из CIL в ASSEMBLER
Как перевести, вообще не могу, помогите.
С клавиатуры вводятся два числа задающие отрезок [a, b]. Определить, попадает ли третье число c в заданный отрезок Assembler
Tasm 1.4, DosBox
Assembler [masm32] В массиве найти максимальный элемент среди отрицательных Найти максимальный элемент среди отрицательных https://www.cyberforum.ru/ asm-beginners/ thread2143977.html
Assembler Вычислить выражение по формуле https://www.cyberforum.ru/ asm-beginners/ thread2143955.html
Всем привет! Требуется вычислить арифметическое выражение на asm Результат выведите в шестнадцатеричном и двоичном виде. Требуется алгоритм Помогите разобраться очень хочу понять !!!!))) ...
Assembler Найти наибольшее отрицательное число. Массив слов Найти наибольшее отрицательное число. Массив слов. https://www.cyberforum.ru/ asm-beginners/ thread2143476.html
Модератор
Эксперт по электронике
7492 / 3691 / 1445
Регистрация: 01.02.2015
Сообщений: 11,486
Записей в блоге: 2
27.11.2017, 23:25 0

Удалить в тексте лишние пробелы, оставив между словами не больше двух пробелов

27.11.2017, 23:25. Просмотров 2036. Ответов 7
Метки (Все метки)

Ответ


Без цепочечных команд.

1. Настроить ds:si и es:di на начало строки
2. Считать в al значение [si]. si=si+1 (можно lodsb)
3. Если в al пробел - увеличить счетчик пробелов на 1, иначе счётчик пробелов равен 0.
3. Проверить счётчик последовательных пробелов на превышение 2. Если не превышает, то записать значение al в [di] и di=di+1 (можно stosb)
И так до конца строки.

Добавлено через 34 минуты
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
.model small
.8086
 
.data
        ;строка которую копируют
        str1    db      'Для    чего  они    нужны и как их использовать$'
        ;строка в которую копируют
        str2    db      50 dup (?)
        ;перевод строки
        CrLf    db      0Dh, 0Ah, '$'
        TERMINATOR      equ     '$'
 
.stack 256
 
.code
start:
 
        mov     ax,     @data
        mov     ds,     ax
        mov     es,     ax
 
        ;вывод исходной строки
        mov     ah,     09h
        lea     dx,     [str1]
        int     21h
        mov     ah,     09h
        lea     dx,     [CrLf]
        int     21h
        ;обработка строки с размещением результата в новой строке
        ;пусть признаком конца строки является символ '$'
        cld                     ;обработка от начала к концу
        lea     si,     [str1]  ;цепочка-источник
        lea     di,     [str2]  ;цепочка-приемник
        mov     bx,     0       ;счётчик пробелов
        @@Repeat:
                lodsb           ;считать в al очередной символ
                cmp     al,     ' '
                jne     @@NoSpace
                inc     bx      ;увеличить счетчик пробелов на 1
                jmp     @@IsAboveTwoSpaces
        @@NoSpace:
                mov     bx,     0       ;счётчику пробелов присвоить 0
        @@IsAboveTwoSpaces:
                cmp     bx,     2       ;если количество пробелов не превышает 2
                ja      @@SkipCharCopy
                stosb           ;сохранить символ в результирующей строке
        @@SkipCharCopy:
        @@Until:
                ;это символ - признак конца строки?
                cmp     al,     TERMINATOR
        jne     @@Repeat
        ;вывод результирующей строки
        mov     ah,     09h
        lea     dx,     [str2]
        int     21h
        mov     ah,     09h
        lea     dx,     [CrLf]
        int     21h
 
        mov     ax,     4c00h ;перессылка функции выхода из программы
        int     21h
 
end start


Вернуться к обсуждению:
Удалить в тексте лишние пробелы, оставив между словами не больше двух пробелов
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.11.2017, 23:25

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Удалить из файла лишние пробелы, оставив по одному между словами
Добрый день. Помогите с программой. Заранее спасибо. Дан файл, содержащий некоторый текст....

Удалить все лишние пробелы, оставив по одному между словами
Задание "Написать программу, в которой вводится строка из слов с некоторым количеством пробелов...

Удалить в строке лишние пробелы, оставив между словами ровно по одному
Дана строка состоящая из слов, между которыми есть некое количество пробелов. Требуется удалить...

Удалить из файла все лишние пробелы, оставив между словами не более одного пробела
Доброго времени суток. Помогите пожалуйста решить задачу: Дан текстовый файл. Удалить из него все...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.