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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2018, 01:18   #1
fen_x
Новичок
Джуниор
 
Регистрация: 15.12.2018
Сообщений: 2
Восклицание Assembler TASM Зацикливается программа

Должны вводиться строка и слово. Программа проверяет состоит ли это слово из символов строки, а также есть ли введенное слово в словаре, однако она почему-то зацикливается
Код:

.model small
.stack 100h
.data

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

.code        
begin:

    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 
    
    jmp q
    
string_word_warning:

    mov dx, offset warning_string
    mov ah, 9
    int 21h
    
q: 
    mov dx, offset string_word_request
    mov ah, 9
    int 21h     

    mov ah, 0Ah
    mov dx, offset string_word
    int 21h    

    mov di, 2              ; string
    mov si, 2              ; string_word 
    mov bp, 2
 
x:  
    cmp string_word[si], 0dh
    je begin
    mov bl, string_word[si]         
    cmp string[di], bl
    jnz bad_symbol
     
good_symbol:
    mov di, 2
    inc si
    cmp string_word[si],0dh 
    je start
    jmp x

bad_symbol:
    inc di
    cmp string[di], 0dh
    je string_word_warning
    jmp x
    
start:
    mov si, 2   
    cmp library[bp],' '
    jne y
    inc bp
    jmp start
        
y:   
    mov bh, library[bp]         
    cmp string_word[si], bh
    jnz bad
     
good:    
    inc bp
    inc si
    cmp string_word[si],0dh
    je final
    jmp y

bad:
    inc si
    cmp string_word[si], 0dh
    je string_word_warning
    mov si, 2
b:
    inc bp
    cmp library[bp], 0dh
    je string_word_warning
    cmp library[bp],' '
    je start
    jmp b
    
final:
         
    cmp library[bp],' '
    je win
    cmp library[bp], 0dh
    je win
    jmp string_word_warning

win:  
mov ax,4c00h   
int 21h   
end begin

Последний раз редактировалось fen_x; 16.12.2018 в 01:39.
fen_x вне форума Ответить с цитированием
Старый 16.12.2018, 04:08   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

В комплекте tasm есть отладчик td. Пройдите по шагам - и всё станет ясно
Black Fregat вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти ошибки Яна Котова Помощь студентам 3 17.10.2016 00:48
Помогите найти ошибки Яна Котова Общие вопросы C/C++ 1 16.10.2016 23:02
Помогите найти ошибки orandzheviyman Паскаль, Turbo Pascal, PascalABC.NET 11 23.11.2013 16:16
Помогите найти ошибки temnot Паскаль, Turbo Pascal, PascalABC.NET 4 04.10.2013 21:31
Помогите найти ошибки Qwoort Общие вопросы C/C++ 1 26.04.2009 12:50