С Новым годом! Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
zidan671
1

Получить новую строку удалением пробелов и знаков табуляции

09.04.2012, 19:03. Показов 1691. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здраствуйте!Прошу помочь с заданием)Заранее спасибо)Если можно то с кратуими комментариями

1.Ввести с клавиатуры строку. Получить новую строку удалением пробелов и знаков табуляции. Вывести полученную строку на экран.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2012, 19:03
Ответы с готовыми решениями:

Посчитать количество пробелов и символов табуляции в строке
Условие: Задана символьная строка, посчитать количество пробелов(020h), символов табуляция(09h)....

Записать строку с удалением пробелов и символов табуляции с использованием функций
Не работает функция delspace. #include <stdio.h> #define LIM 1000 // предел длины строки ...

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

Удаление лишних пробелов и знаков табуляции
Помогите решить проблему, удаляет лишние пробелы, а знаки табуляции нет, нужно чтобы удаляло знаки...

3
650 / 337 / 37
Регистрация: 04.04.2012
Сообщений: 886
10.04.2012, 16:04 2
В ДОС, ТАСМ, СОМ файл
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
.model tiny
.code
.386
ORG 100h
START:
;
    lea si,buf1 ;буфер для введенных с клавы символов
m:          ;начало цикла
    mov ah,1    ;считать символ с эхом
    int 21h
    cmp al,0Dh  ;нажат Ввод
    jz short exit   ;если да то выход из цикла
    cmp al,09h  ;нажата табуляция
    jz short m  ;если да то на начало цикла
    cmp al,20h  ;нажат пробел
    jz short m  ;если да то на начало цикла
    mov [si],al ;все другие символы записать в буфер
    inc si      ;готовим буыер для записи следующего символа
    jmp short m ;и переход на начало цикла
exit:           ;выход из цикла
                ;для правильного вывода полученной строки
    mov byte ptr [si],'$' ;в конец буфера записываем символ $
    lea dx,buf  ;для начала переведем строку (10,13-перевод строки)
    mov ah,9    ;вывод на экран до символа $
    int 21h
;
    ret     ;возврат в ДОС
;
buf db  10,13   ;10,13-перевод строки
buf1    db  ?   ;буфер для символов
    end start
0
R0mR0
27.04.2014, 10:00 3
Прошу подсказать где ошибка в коде.
Задание такое же как у ТС. Решение нужно в exe.
Код изменил вот так:
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
TITLE t6              
.MODEL small            
.STACK 100h         
.DATA               
buf db  10,13           
buf1    db ?            
.CODE               
MOV AX, @data           
MOV DS, AX          
START:
;
    lea si,buf1 ;буфер для введенных с клавиатуры символов
m:              ;начало цикла
    mov ah,1    ;считать символ с эхом
    int 21h
    cmp al,0Dh  ;нажат Ввод
    jz short exit   ;если да то выход из цикла
    cmp al,09h  ;нажата табуляция
    jz short m  ;если да то на начало цикла
    cmp al,20h  ;нажат пробел
    jz short m  ;если да то на начало цикла
    mov [si],al ;все другие символы записать в буфер
    inc si      ;готовим буыер для записи следующего символа
    jmp short m ;и переход на начало цикла
exit:           ;выход из цикла
                ;для правильного вывода полученной строки
    mov byte ptr [si],'$' 
        ;в конец буфера записываем символ $
    lea dx,buf  ;для начала переведем строку (10,13-перевод строки)
    mov ah,9    ;вывод на экран до символа $
    int 21h
;
   ret      ;возврат в ДОС  
;
 end start
Делал под ТАСМ. Запускаю в режиме эмуляции DOC под Windows XP
Компилятор ошибок и предупреждений не выдаёт.
Но программа на этапе вывода результата ведёт себя не предсказуемо.
То после вывода результата не завершается и выйти не возможно.
То завершится не выводя результат.
То вместе с результатом вывалит кучу рандомных символов.
То вызовет вот такую ошибку
Миниатюры
Получить новую строку удалением пробелов и знаков табуляции  
Ушел с форума
Автор FAQ
16339 / 7659 / 1076
Регистрация: 11.11.2010
Сообщений: 13,705
28.04.2014, 04:33 4
R0mR0,
метку START: поставь сразу после строки .CODE
0
28.04.2014, 04:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.04.2014, 04:33
Помогаю со студенческими работами здесь

Подсчет количества знаков табуляции, пробелов и символов новой строки
Программа для подсчета количества знаков табуляции, пробелов и символов новой строки. Помогите...

Программа не подсчитывает количество знаков табуляции, пробелов и символов новой строки
#include "stdafx.h" #include <iostream> using std::cout; using std::cin; using std::endl; ...

Получить новую матрицу (N-1)x(N-1) удалением строки и столбца
Составить программу обработки матрицы размерности NxM. Выполнить программу для N=3, M=4. В...

Реализовать функцию UnSpace(s), возвращающую строку, полученную удалением из исходной всех лишних пробелов
Реализовать функцию UnSpace(s), возвращающую строку, полученную удалением из исходной всех лишних...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru