Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2010, 21:42   #1
Sasha9307
Новичок
Джуниор
 
Регистрация: 15.12.2010
Сообщений: 1
По умолчанию Подсчет повторений символа в строке.

Всем привет. У меня задание написать програму на асемблере для подсчета повторений символа введеного з клавиатури в строке тоже введеней з клавиатури. Я ниписал код програмы и она какбы работает но когда выводит результат показивает нуль даже когда введений симлов повторяется много раз....... што ето такое и как ето исправить?????
Вот код програмы:
Заранее спасибо.
Код:
data segment
mess1 db 0dh,0ah,"Cvedit stroky:",0dh,0ah,"$"
mess2 db  0dh,0ah,"Vvedit sumvol",0dh,0ah,"$"
find  db  0ah,0dh,'Simbol find:  $'
count db  ?
str1 db 30, ?, 9 dup (?)
str2 db 2, ?, 9 dup (?)

data ends
code segment
assume cs:code, ds:data
START: mov ax, data
mov ds, ax ; Загрузить сегментный адрес данных
mov es,ax
;-------------------------------------------------------------------------------

lea dx, mess1
mov ah, 09h
int 21h ;приглашение к вводу строки 1

; Ввод первой строки
lea dx, str1
mov ah, 0ah
int 21h

lea dx, mess2
mov ah, 09h
int 21h ;приглашение к вводу символа

; Ввод символа
lea dx, str2
mov ah, 0ah
int 21h

call cikl
xor ax,ax
mov ah, 09h
int 21h
mov ax, 4C00h ; Код завершения 0
int 21h ; Выход в DOS
;---------------------------------------------------------------------------------
mov al, str1
mov ah, str2
cikl:
                    
        cmp  al,'$'               ; проверка на конец строки
        je   exit                 ; если да - на выход
        cmp  al,ah               ; символ для поиска 
        je   found                ; если равны - переход на обработку
        inc  al                   ; следующий символ
        jmp  cikl
found:                            ; совпали
        inc  bl                   ; счетчик совпадений
        inc  al                   ; следующий символ в строке
        jmp  cikl                 ; повторять до конца строки

exit: 
       mov count, bl
       mov ah, 09h
       lea dx, find 
       int  21h

       mov dl,count
       add dl, 30h                ; преобразуем число совпадений в ANSII-код для вывода на экран
       mov ah, 02h
       int 21h


        mov ah,10h                ; задержка выхода
        int 16h
        ret
        ;---------------------------------------------------------------------------------:
code ends
end start

Последний раз редактировалось Stilet; 16.12.2010 в 10:54.
Sasha9307 вне форума Ответить с цитированием
Старый 16.12.2010, 09:50   #2
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

Код:
mov dl,count
add dl, 30h ; преобразуем число совпадений в ANSII-код для вывода на экран
mov ah, 02h
int 21h
будет работать только если число от 0 до 9
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В строке удалить первые 3 символа ? newprog12 Помощь студентам 2 19.12.2010 01:17
Поиск символа и подсчет пробелов (С) spirit_trapper Помощь студентам 0 21.12.2009 14:15
Номер символа в строке Veroonya SQL, базы данных 4 24.08.2009 15:04
поиск в строке символа IvanM Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 02.06.2009 22:27
Удаление символа в строке Fantom Общие вопросы Delphi 2 23.06.2008 16:03