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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2011, 07:44   #1
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию Проблема либо в сравнении строк, либо в пееходах меток.

Здравствуй в очередной раз, люд добрый. Пишу прогу сравнения текст файлов. Косяк опубликован в заголовке темы. Вкладываю сырец и то, чем компилю. в 1. асм - исходный код, чтобы скомпилить, запустите батник.
Если кто поможет, буду признателен. Не знаю как проверить построчно выполнение проги, чтобы просмотреть, где она даёт сбой (прога циклится).
Вложения
Тип файла: rar cmp-two-files.rar (310.7 Кб, 14 просмотров)
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 03.12.2011, 15:05   #2
KeLuut
 
Регистрация: 30.11.2011
Сообщений: 3
По умолчанию

Полагаю, что никто не сможет разобраться в программе быстрее, чем сам автор. А потому для начала предлагаю воспользоваться отладчиками, которые обычно входят в комплект с ассемблерами (или их можно найти отдельно): CodeView (cv.exe в MASM), Watcom Debugger (wd.exe в Open Watcom, WASM), TurboDebugger (TASM). Если будут проблемы с отладкой - пишите!
KeLuut вне форума Ответить с цитированием
Старый 04.12.2011, 00:06   #3
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

KeLuut, благодарю. *пошёл трассировать*

Скачал CodeView. Как понял, он дизасемблирует исполняемые файлы. Так вот, при просмотре проги через CodeView прога зависает на таком действии -
0BFF:xxxx 0000 ADD BYTE PTR [BX+SI], AL
Таких строк более 1000 (только xxxx меняется), значит выделения памяти в 256 слов(f1_string db 256 dup ) не хватает , он не может выполнить арифметическую операцию,(правда в моём коде нет ни одного оператора ADD) и зацикливается, хотя видимых символов в каждом файле не более 20 , а невидимых (то есть конец строки, конец файла,перевод каретки) не более 10. Получается, что в 256 слов не может вместится 30 символов. 0_о.
Или что-то здесь ещё может быть?
Если помог, проси поставить минус. Будь оригинален!

Последний раз редактировалось Stilet; 04.12.2011 в 14:14.
Rin вне форума Ответить с цитированием
Старый 04.12.2011, 12:42   #4
Fedor666
Пользователь
 
Регистрация: 22.02.2010
Сообщений: 71
Подмигивание

Цитата:
Сообщение от Rin Посмотреть сообщение
0BFF:xxxx 0000 ADD BYTE PTR [BX+SI], AL
Это вылет за пределы программы
Fedor666 вне форума Ответить с цитированием
Старый 04.12.2011, 14:16   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Или что-то здесь ещё может быть?
CodeView отладчик? Если нет то возьми отладчик и протрассируй до оператора, который выводит в хвост программы за пределы задуманного исполняемого кода.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.12.2011, 15:02   #6
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

А кто нибудь программу вообще смотрел?
Там много загадочных моментов, например такой:

Цитата:
lea ax, length_string1
lea dx, length_string2
cmp ax, dx ; а что, они когда-то смогут быть равны?
jne write_file
вот это я совсем не понял, в чём смысл сего действа?
Цитата:
mov ax, 4406h ; проверка на достижение конца файла
mov bx, handlerIn2
or al,al
je EOF_f2 ; метка на достижение конца первого файла
В аттаче рабочий (почти как надо).
Вложения
Тип файла: rar 1.rar (1.8 Кб, 9 просмотров)
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 04.12.2011, 15:05   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А кто нибудь программу вообще смотрел?
Я когда посмотрел код, вникать не стал особо, понял что лучше всего через отладчик его пропустить
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.12.2011, 16:38   #8
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

На счёт dx и ax - я серьёзно не программировал на ассемблере, почти всю теорию,которую проходил в университете, я забыл. =(
Цитата:
В чём смысл сего действа?
ТУТ НА СЕРЕДИНЕ ПОВЕСТВОВАНИЯ написано, что это проверка на достижение конца файла. Вот и взял оттуда. Потом открыл книгу Юрова, и сделал , как у него. Программа у меня отрабатывала корректно, но в файл записывала все равно не то. Да это и понятно. Вы мне ответили, почему сравнение не такое, какое должно быть. Спасибо большое за исходник! Так же спасибо всем, кто помогал решить проблему.
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Надо написать программу блокировки клавиатуры на 15 секунд, либо в масме либо в эмуляторе Vikctor Помощь студентам 0 28.11.2010 17:26
надо написать тест по литеретатуре либо в делфи либо в паскале demon-34 Помощь студентам 1 21.11.2010 22:39
Можно ли использовать новую форму только дря хранения какого-либо(каких-либо) класса? TwiX Общие вопросы Delphi 8 03.10.2009 11:06
Задача на Vba либо C++ либо Паскале Fraerrrrr Помощь студентам 3 27.05.2009 15:30