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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2013, 00:42   #1
Blind Guard
Форумчанин
 
Регистрация: 14.03.2012
Сообщений: 139
Стрелка Поиск слова в строке

Здраствуйте.

Программа следующая.
Пользователь вводит строку и слово из строки, но так как пользователи бывают пользователями, то "надо ж поэкспеременитровать"
В программе нужно проверить, есть ли в введённой строке введённое слово. При удачном исходе программа просто завершается, иначе выводит сообщение об ошибке. Уверен, что ошибка очень коварная, но всё же не могу её найти. Кто сможет найти буду благодарен.


Код:
.model small
.stack 100h
.data

    string_request db "Please, enter string:", 0Dh, 0Ah, '$'
    string_word_request db "Please, enter the word from string:", 0Dh, 0Ah, '$'
    warning_string db "Invalid Input! Try again:", 0Dh, 0Ah, '$'
    string db 200 dup('$')            
    string_word db 200 dup('$')      

.code        
start:

    mov ax, @data
    mov ds, ax
    
    mov dx, offset string_request
    mov ah, 9
    int 21h 
    
    mov ah, 0Ah
    mov dx, offset string
    int 21h 
    
    mov dx, offset string_word_request
    mov ah, 9
    int 21h     

    jmp q

string_word_warning:
    mov dx, offset warning_string
    mov ah, 9
    int 21h         
    
q: 
    mov ah, 0Ah
    mov dx, offset string_word
    int 21h    

    mov di, 2              ; string
    mov bp, 2              ; string_word 

    jmp start_check

probel_destroyer:    
    inc di

start_check:   
 
    cmp string[di], 031
    je probel_destroyer
        
x:   
    mov bl, string[di]         
    cmp string_word[bp], bl
    je good_symbol
    jmp bad_symbol
     
good_symbol:
    
    inc di
    inc bp
    cmp string_word[bp], 036
    je final_check
    jmp x

bad_symbol:
    cmp string_word[bp], 036
    je string_word_warning
    mov bp, 2
a:
    inc di
    cmp string[di], 031
    je probel_destroyer
    cmp string[di], 036
    je string_word_warning
    jmp a
    
final_check:
         
    cmp string[di], 031
    je win
    cmp string[di], 036
    je win
    jmp string_word_warning

win:     
int 20h   
end start
Blind Guard вне форума Ответить с цитированием
Старый 21.04.2013, 06:05   #2
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

Blind Guard, ошибка была далеко не одна.
Код:
.model small
.stack 100h
.data

    string_request db "Please, enter string:", 0Dh, 0Ah, '$'
    string_word_request db 0dh,0ah,"Please, enter the word from string:", 0Dh, 0Ah, '$'
    warning_string db 0dh,0ah,"Invalid Input! Try again:", 0Dh, 0Ah, '$'
    string db 254,256 dup (?)       
    string_word db 254,256 dup (?)        

.code        
start:

    mov ax, @data
    mov ds, ax
    
    mov dx, offset string_request
    mov ah, 9
    int 21h 
    
    mov ah, 0Ah
    mov dx, offset string
    int 21h 
    
    mov dx, offset string_word_request
    mov ah, 9
    int 21h     

    jmp q

string_word_warning:
    mov dx, offset warning_string
    mov ah, 9
    int 21h         
    
q: 
    mov ah, 0Ah
    mov dx, offset string_word
    int 21h    

    mov di, 2              ; string
    mov si, 2              ; string_word 


start_check:   
 
    cmp string[di],' '
    jne x
    inc di
    jmp start_check
        
x:   
    mov bl, string[di]         
    cmp string_word[si], bl
    jnz bad_symbol
     
good_symbol:
    
    inc di
    inc si
    cmp string_word[si],' '
    je final_check
    cmp string_word[si],0dh
    je final_check
    
    jmp x

bad_symbol:
    cmp string_word[si], 0dh
    je string_word_warning
    mov si, 2
a:
    inc di
    cmp string[di],' '
    je start_check
    cmp string[di], 0dh
    je string_word_warning
    jmp a
    
final_check:
         
    cmp string[di],' '
    je win
    cmp string[di], 0dh
    je win
    jmp string_word_warning

win:  
mov ax,4c00h   
int 21h   
end start
vadimych вне форума Ответить с цитированием
Старый 21.04.2013, 19:55   #3
Blind Guard
Форумчанин
 
Регистрация: 14.03.2012
Сообщений: 139
По умолчанию

Спасибо большое.
Не расчитывал на помощь
Blind Guard вне форума Ответить с цитированием
Старый 21.04.2013, 20:09   #4
Blind Guard
Форумчанин
 
Регистрация: 14.03.2012
Сообщений: 139
По умолчанию

Есть небольшой вопрос по вашему коду.
Зачем перед строками 0dh и 0ah?
Код:
    string_word_request db 0dh,0ah,"Please, enter the word from string:", 0Dh, 0Ah, '$'
    warning_string db 0dh,0ah,"Invalid Input! Try again:", 0Dh, 0Ah, '$'
Blind Guard вне форума Ответить с цитированием
Старый 21.04.2013, 20:25   #5
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

Чтобы вывод не затирал введённый текст, начинался с новой строки.
vadimych вне форума Ответить с цитированием
Старый 21.04.2013, 20:30   #6
Blind Guard
Форумчанин
 
Регистрация: 14.03.2012
Сообщений: 139
По умолчанию

Ясно, ещё раз спасибо.
Blind Guard вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск самого маленького слова в строке silers Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 03.12.2012 17:04
Поиск слова(символа) в строке. men232 Visual C++ 1 14.01.2012 03:31
Поиск слова в новой строке Dreps Помощь студентам 1 04.12.2011 11:22
Поиск слова в строке и редактирование этого слова Wasili4 Microsoft Office Excel 3 22.06.2011 21:06
поиск слова в строке. rust-02 Общие вопросы Delphi 2 26.09.2010 23:21