|
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 82
|
|
Разбор программы "Архиватор"06.07.2013, 14:54. Показов 7638. Ответов 66
Метки нет (Все метки)
Всем доброго времени суток, ребят мне нужна помощь в программе, точнее прога есть, но не понимаю в ней(сижу в книгах разбираюсь, но получается долго).
Кто-нить помогите прокомментировать программу, так что бы было понятно(малость глуп)... Спасибо!
0
|
|
| 06.07.2013, 14:54 | |
|
Ответы с готовыми решениями:
66
Разбор программы Разбор программы Архиватор данных - возможна ли оптимизация программы? |
|
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
|
|
| 08.07.2013, 12:05 | |
|
sh2ezo, ну не знаю... перед асмом у меня был паскаль (на мой вгляд тупейший язык) и СИ++. вроде норм асм понимал...
1
|
|
| 08.07.2013, 14:20 | |
|
1
|
|
|
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 82
|
|||||||||||
| 11.07.2013, 21:00 [ТС] | |||||||||||
|
сижу разбираюсь в данной проге: поймал исключение, точнее понял где оно происходит - в процедуре, но не понял где именно:
Добавлено через 4 часа 42 минуты я понял прикол, это не исключение, у меня кажись память не так выделяется, в связи с чем TD стирает некоторые строки кода, стек данных стирает код как я понимаю... всё дело в шапке программы:
0
|
|||||||||||
|
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
|
|
| 12.07.2013, 08:12 | |
|
1
|
|
|
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 82
|
|
| 12.07.2013, 08:18 [ТС] | |
|
не совсем понял вопрос(
0
|
|
|
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
|
|
| 12.07.2013, 08:30 | |
|
может я что-то не так понял. после выхода из процедуры он поподает "в никуда"? вроде со стеком все в порядке, но попробуйте проследить за изменениями в стеке, чтобы все, что засунуто в стек было высуното.
1
|
|
|
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 82
|
|
| 12.07.2013, 08:50 [ТС] | |
|
со стеком всё в порядке, да, но почему-то данные стека стирают код в TD:
0
|
|
|
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 82
|
||||||||||||||||||
| 12.07.2013, 14:06 [ТС] | ||||||||||||||||||
|
закомментил строку:
;CALL FindNextParam 96 по счёту строка и вроде программа отрабатывается норм в TD, но попрежнему не работает сама прога, так как она должна вывести на экран : Huffman Encoder 1.0 Usage : huffman.com a <source.ext> [dest.huf] - add to archive, huffman.com e <source.huf> - extract from archive. а потом мы должны водить... .. но выдает пустую строку, вернее ничего не выдает... Добавлено через 26 минут выдает ошибку в конце отрабатываем проги
беда со мной, че то не пашет... или я не понимаю...
0
|
||||||||||||||||||
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
||
| 12.07.2013, 18:13 | ||
|
Блин, да ты-же эту программу как EXE компилируешь. А она-же написана как COM !
Добавлено через 10 минут Добавлено через 1 час 11 минут P.S. Посмотрел в учебник Юрова ASSEMBLER 2-е издание и ... действительно не написано. Короче, компиляция COM-программы : tasm /m/l proga.asm tlink /t proga.obj
1
|
||
|
Ушел с форума
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
|
||
| 12.07.2013, 18:37 | ||
|
1
|
||
|
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 82
|
||||||
| 12.07.2013, 20:48 [ТС] | ||||||
|
Ethereal, Большое спасибо
, спрашивал у многих, все смотрели в код, но никто не понимал что компилить надо было com)))всё сделал, программа работает, но появилась маленькая ошибка, точнее неправильно написано функция вызыва(как я понимаю):
Mikl___, теперь мне всё понятно, спасибо)
0
|
||||||
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
||||||
| 13.07.2013, 07:51 | ||||||
|
В чем неправильность по твоему мнению ?
У автора программы функция FindFirstParam возвращает результат во флаге Z слова состояния процессора. Команда ret этих флагов не меняет, поэтому можно выставить или сбросить какой-нибедь флажок в подпрограмме, тут-же выйти из подпрограммы по ret, тогда во флажке окажется признак успешности или не успешности отработки подпрограммы. Процессор в твоей программе последовательно исполнит инструкции :
1
|
||||||
| 13.07.2013, 08:49 | |
|
1
|
|
|
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 82
|
||||||||||||||||||
| 13.07.2013, 22:48 [ТС] | ||||||||||||||||||
|
Ethereal, спасибо
за пояснение(лучше понял работу этой команды) , но ошибка маленько в другом месте, сейчас конкретнее поясню)
но вот беда, программа выводит строчки:
ведь после
(у вас программа идёт нормально???) (у меня заканчивает работу после вывода строк с инф.)
0
|
||||||||||||||||||
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
|||||||
| 14.07.2013, 10:25 | |||||||
|
Если ты не задал программе параметры командной строки, то
JZ ShowUsage сработает, управление улетит на метку ShowUsage, а там код, который завершается INT 20h <-----и наконец выходит из проги Если ты задал программе корректные параметры командной строки, то JZ ShowUsage не сработает и тогда и только тогда выполнится
И какое еще меню ? Если ты не задал программе параметры командной строки, то она тебе показывает Usage (ShowUsage) - как ее использовать и завершается. Так и должно быть ! Если пользователь неправильно использует программу надо ему сказать как это делать правильно и завершиться. Разве не так ? Добавлено через 4 минуты Внимательно читай эти строки Usage : huffman.com a <source.ext> [dest.huf] - add to archive, huffman.com e <source.huf> - extract from archive. пока не дойдет.
1
|
|||||||
|
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 82
|
|
| 14.07.2013, 10:58 [ТС] | |
|
Спасибо!!!!!!!!!!!
С вашей помощью до меня дошло!!!!! Программа работает на ура!!!!!!!!!!!!! ![]() ![]() ![]()
0
|
|
|
programmer
2391 / 525 / 69
Регистрация: 01.06.2011
Сообщений: 3,639
|
|
| 20.07.2013, 08:18 | |
|
помотрел код,но не пойму почему автор не использовал структуры для узлов?
По мне так это не самая лучшая реализация Хаффмана как по стилю,так и по коду. Как он адаптивный реализовывал бы вобще не понятно.
0
|
|
|
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
|
|
| 20.07.2013, 12:19 | |
|
0
|
|
|
programmer
2391 / 525 / 69
Регистрация: 01.06.2011
Сообщений: 3,639
|
||||||
| 20.07.2013, 17:20 | ||||||
|
Теорию информацию не первый год изучаю.Реализовывал Хаффмана,адаптивный ренж кодер,JPEG2000,ENUC и еще куча всяких кодировщиков типа Хемминга и т.д.
Но увы на С/C++,не припомню чтобы на асме.Конкретно с деревьями работал по шахматной задаче,найти максимальное поражение фигур ходом коня за n шагов.Поэтому представление как работать с деревьями имею. Второй момент,на асме пишу 7 лет. этого достаточно,что бы понимать как должен выглядеть код для метода сжатия по Хаффману на асме? Теперь вам вопрос.Что я не так сказал по поводу кода?Ваши аргументы. Задача была своеобразной,но код расчитываеться префиксный с построением дерева. Над оптимизацией кода сильно не заморачивался.
0
|
||||||
|
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
|
||
| 20.07.2013, 18:43 | ||
|
0
|
||
| 20.07.2013, 18:43 | |
|
Помогаю со студенческими работами здесь
40
После попытки скачать архиватор, не удаляются программы Как из программы Java вызвать архиватор и заархивировать файл ? разбор программы Разбор программы 2 Разбор программы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
[golang] Алгоритм «Хак Госпера»
alhaos 17.05.2026
Алгоритм «Хак Госпера»
Хак Госпера (Gosper's Hack) — алгоритм нахождения следующего по величине числа с тем же количеством установленных бит.
Придуман Биллом Госпером в 1970-х, опубликован в. . .
|
Рисование бинарного древа до 6-го колена на js, svg.
russiannick 17.05.2026
<svg width="335" height="240" viewBox="0 0 335 240" fill="#e5e1bb">
<style>
<!]>
</ style>
<g id="bush">
</ g>
</ svg>
function fn(){
let rost;/ / высота древа
let xx=165,yy=210,w=256;
|
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов,
содержащихся в реализации модуля. По-умолчанию все члены модуля доступны:
module Foo
let x = 10
let boo () = printfn "boo"
. . .
|
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible". . .
|
|
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов.
import "math"
func angleClock(hour int, minutes int) float64 {
. . .
|
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo
https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html
и его же старой инструкции по установке Lazarus с gtk2. . .
|
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер.
Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|