Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
Jevil
-1 / 0 / 0
Регистрация: 11.12.2014
Сообщений: 6
1

Вывести все слова, состоящие только из цифр

11.12.2014, 18:02. Просмотров 547. Ответов 12
Метки нет (Все метки)

Задание: ввести строку, конец ввода обозначен символом $
Вывести все цифровые слова, т.е. если слово между пробелами состоит только из цифр, вывести.
Недавно начал изучить TASM, программа зацикливается, дебагер так же циклится, не могу понять почему
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
%nolist
include mac.lib
%list
        .model  tiny            ; модель памяти, используемая для
        .code
        org 100h
    
 
    
start:  
        lea ax,str1     ;Поместить в AX смещение строки
        lea bx,len  ;Поместить в BX смещение длины строки
        call readln     ;Вызов процедуры ввода строки
        crlf            ;Перенос строки
        
        
        push    offset str1
        push    offset str2
        call    scan
        
        
        
        crlf
        mov dx,offset str2  ;Вывод
        mov ah,09h
        int 21h
        ret 
;-------------------------------        
readln  proc    near    ;Процедура ввода строки, где конец это символ $
        mov di,ax       ;В регистр адреса приёмника заносится адрес строки
        xor cx,cx       ;Сброс счётчика длины строки
        cld             ;Сброс флага направления(инкремент или декремент di,si)
        mov ah,01h      ;Функция ввода символа
nextch: int 21h         ;Выполнить функцию
        stosb           ;Цепочечная операция сохранения строки(источник регистр ax, приёмник строка по адресу di)
        cmp al,'$'      ;Сравнения символа конца строки с обрабатываемым символом
        je  stop        ;Если конец строки, выход и процедуры
        inc cx          ;Увеличиваем счётчик дины строки на единицу
        jmp nextch      ;Иначе, чтение следующего символа
stop:   mov [bx],cx     ;Присвоение длине строки значения из счётчика
        ret             ;Возврат из процедуры
readln  endp    
;-------------------------------
scan    proc    near
        push    bp
        mov     bp,sp
        cld
        ;;;;mov si,[bp+6]   ;Получение из стека параметра str2 (смещение выходной строки заносится в )
        mov cx,[len]    ;Получение из стека значения длины строки
        mov di,[bp+6]   ;Получение из стека параметра str1 (смещение входной строки заносится в BX)
        
                ;Замена всех точек строки пробелами
        mov al,'.'
next:   repne scasb
        jcxz    skip
        mov byte ptr[di-1],' '
        jmp next
skip:   
        
        
        
        mov si,[bp+6]
        mov di,[bp+4]
        
        ;Ищем пробелы, если не пробел, то рассматриваем символ на принадлежность к цифрам,инче ищем следующее слово
        cld
        mov al,' '
nextw:  mov [len],0d
nextc:  repne scasb
        
        
        
        
        cmp byte ptr[si],39h
        jg  notnum
        cmp byte ptr[si],30h
        jl  notnum
        
        
        
        inc [len]
        cmp byte ptr[si+1],20h
        je  writew
        
        jmp nextc
notnum: repe scasb
        jmp nextw
        
writew: 
        
        mov dx,offset str1  ;Вывод
        mov ah,09h
        int 21h
        
        mov cx,[len]
        sub si,[len]
        rep movsb
        
        
        
        
        ;jmp nextw
        
        
        
endloop:    
        pop bp
        ret 4
scan    endp    
;-------------------------------
        .data
has_num db  0
str1    db  32  dup('$')
len     dw  0   
str2    db  32  dup('$')
        end start
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2014, 18:02
Ответы с готовыми решениями:

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

Найти и вывести все симметричные слова
Кто знает Ассемблер помогите очень прошу. №1 Задано текст, слова в котором...

Вывести из строки все слова с заданным символом (Tasm)
Помогите, пожалуйста, отредактировать код. Условие задачи: ввести строку,...

Удалить из текста слова-перевертыши, состоящие более чем из 5 букв
Здравствуйте, требуется помощь по написанию кода, задача гласит так:Удалить из...

Заданы два массива X[10] и Y[12], состоящие из целых чисел со знаком в формате слова. Выполнить над массивами действия согласно индивидуальному задани
Общая часть. Заданы два массива X и Y, состоящие из целых чисел со...

12
zasranec
0 / 0 / 0
Регистрация: 03.04.2013
Сообщений: 15
11.12.2014, 18:42 2
это не TASM а MASM вот в чем проблема
0
Mikl___
Автор FAQ
13304 / 6377 / 629
Регистрация: 11.11.2010
Сообщений: 11,536
11.12.2014, 18:52 3
Цитата Сообщение от zasranec Посмотреть сообщение
это не TASM а MASM вот в чем проблема
zasranec,
обоснуй своё утверждение
0
Thread
programmer
1871 / 343 / 27
Регистрация: 01.06.2011
Сообщений: 3,047
Записей в блоге: 1
11.12.2014, 18:59 4
Цитата Сообщение от Jevil Посмотреть сообщение
программа зацикливается, дебагер так же циклится, не могу понять почему
в самом деле.очень даже странно как-то.
0
zasranec
0 / 0 / 0
Регистрация: 03.04.2013
Сообщений: 15
11.12.2014, 19:20 5
Директивы MASM ORG 100h в TASM записывается как .stack 100h
0
Charles Kludge
Клюг
7646 / 3161 / 383
Регистрация: 03.05.2011
Сообщений: 8,382
11.12.2014, 19:27 6
Цитата Сообщение от zasranec Посмотреть сообщение
Директивы MASM ORG 100h в TASM записывается как .stack 100h
OMG... В мемориз.
Для .com-файла директива .stack вообще не нужна - он растёт вниз с адреса cs:0FFFEh, то есть текущего сегмента кода.
0
Thread
programmer
1871 / 343 / 27
Регистрация: 01.06.2011
Сообщений: 3,047
Записей в блоге: 1
11.12.2014, 20:23 7
Jevil

этот код проверяеться для выхода? замени на '$'

Цитата Сообщение от Jevil Посмотреть сообщение
cmp byte ptr[si+1],20h ;????????????????
je writew
0
Mikl___
Автор FAQ
13304 / 6377 / 629
Регистрация: 11.11.2010
Сообщений: 11,536
12.12.2014, 03:23 8
TASM MASM 
.stack 100h.stack 100hвыделение под стек области памяти в 256 байтов
org 100horg 100hустановить счетчик адресов равным 100h
zasranec,
не суди о том, о чем не имеешь никакого представления
0
zasranec
0 / 0 / 0
Регистрация: 03.04.2013
Сообщений: 15
12.12.2014, 07:51 9
Извините,
0
Jevil
-1 / 0 / 0
Регистрация: 11.12.2014
Сообщений: 6
12.12.2014, 09:01  [ТС] 10
Цитата Сообщение от Thread Посмотреть сообщение
Jevil

этот код проверяеться для выхода? замени на '$'
И через ANCII пробовал и просто '$', не работает
0
Thread
programmer
1871 / 343 / 27
Регистрация: 01.06.2011
Сообщений: 3,047
Записей в блоге: 1
12.12.2014, 11:02 11
Цитата Сообщение от Jevil Посмотреть сообщение
не работает
не работает что?под отладчиком смотрел?
для завершения ввода строки программа требует символ $.в курсе?
0
Jevil
-1 / 0 / 0
Регистрация: 11.12.2014
Сообщений: 6
12.12.2014, 11:38  [ТС] 12
Цитата Сообщение от Thread Посмотреть сообщение
не работает что?под отладчиком смотрел?
для завершения ввода строки программа требует символ $.в курсе?
Наверное в курсе, я же эту программу писал.
Я же в начале написал что дебагер циклится, пошагово перестает работать.
И про символ $ я а начале писал, что ввод им останавливается, ты вообще читаешь в чем проблема или сразу комменты пишешь?
0
Thread
programmer
1871 / 343 / 27
Регистрация: 01.06.2011
Сообщений: 3,047
Записей в блоге: 1
12.12.2014, 14:33 13
Цитата Сообщение от Jevil Посмотреть сообщение
Я же в начале написал что дебагер циклится
а заход в свою процедуру делаешь?
0
12.12.2014, 14:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2014, 14:33

Напечатать все слова, состоящие только из цифр
напечатать все слова , состоящие только из цифр

Пользователь вводит строку: удалить все слова, состоящие только из цифр
Пользователь вводит строку с клавиатуры, слова отделяются пробелами . Нужно...

Дан текстовый файл вывести слова состоящие только из них цифр
вывести слова состоящие из цифр


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

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