Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 78
от 08.03.2005, 00:30

Администратор:Калашников О.А.
В номере:Вопросов: 3, Ответов: 7


Вопрос № 17684: Уважаемые эксперты ! Правильно ли я понимаю, что любую программу, написанную на любом языке высокого уровня, можно дизасемблировать и попытаться понять как она работает ? Я одну загрузил в AFDPRO, а там первые же строки ....... mov ah,9h...
Вопрос № 17722: Где достать нормальное пособие по Assebler'у под win32 (для чайников :) )?...
Вопрос № 17727: Помогите понять как запрограммировать контроллер прерываний под I8086...

Вопрос № 17684
Уважаемые эксперты ! Правильно ли я понимаю, что любую программу, написанную на любом языке высокого уровня, можно дизасемблировать и попытаться понять как она работает ?
Я одну загрузил в AFDPRO, а там первые же строки
.......
mov ah,9h
mov dx,offset string
int 21h
.........
string db 'Нужна Windows$'
Отправлен: 02.03.2005, 06:06
Вопрос задал: Slava_ (статус: Посетитель)
Всего ответов отправлено: 4

Отвечает: AxMAD
Здравствуйте, Slava_!
Теоретически можно, но как на практике не легко, а тем более если под windows.
Можно конечно использовать IDA Pro , он на мой взгляд всех лучше это делает.
Ответ отправил: AxMAD (статус: Студент)
Отправлен: 02.03.2005, 09:13
Оценка за ответ: 4

Отвечает: Dark_Lord
Здравствуйте, Slava_!
В принципе, то что программу, написанную на любом языке програмирования (не скрипте), можно дизассемблировать и, даже, теоретически, понять как она работает. В данном случае проблемма в том, что AFDPRO дизассемблер досовских програм, а загруженная програма является Windows-приложением, а каждой Windows-приложение содержит програму-заглушку, которая выполняется если програма была запущена из доса. Именно эту програму-заглушку и получает AFDPRO. Дизассемблировать Windows-приложения можно, например, используя W32Dasm (любой поисковик выдаст кучу ссылок). Удачи...
Ответ отправил: Dark_Lord (статус: Профессионал)
Отправлен: 02.03.2005, 12:02
Оценка за ответ: 5

Отвечает: Котиев Зураб
Здравствуйте, Slava_!
Ну это зависит от языка и уровня его "высокости" например дельфячные проги вывалят на тебя кучу прмежуточного кода , а также бесконечные джампы,большинстово компиляторов форта генерят шитый код который тоже фиг поймешь,basic генерит байт-код.
Хорошо понимается структура программы написанной на turbo pascal и c.
а В СОВРЕМЕННЫХ ПРОГРАММАХ МОЖНО лишь понять отдельные участки кода , да и то когда занимаешься краком.
Ответ отправил: Котиев Зураб (статус: 2-ой класс)
Отправлен: 02.03.2005, 18:00
Оценка за ответ: 4

Отвечает: Bob Johnson
Здравствуйте, Slava_!
> Правильно ли я понимаю, что любую программу, на...
Правильно
> а там первые же строки
И это правильно - ведь увидишь ты ее не в том виде, как она была написана, а в машинных кодах, в которые ее перевел компилятор. Но понять принцип ее работы из этого можно :)

* EMan2.0: ---===*** Debug mode ***===---

Ответ отправил: Bob Johnson (статус: Академик)
Отправлен: 03.03.2005, 00:35
Оценка за ответ: 5


Вопрос № 17722
Где достать нормальное пособие по Assebler'у под win32 (для чайников :) )?
Отправлен: 02.03.2005, 19:39
Вопрос задал: Перов Виталий Георгиевич (статус: Посетитель)
Всего ответов отправлено: 2

Отвечает: AxMAD
Здравствуйте, Перов Виталий Георгиевич!
Можно тут http://www.win32asm.cjb.net/ или тут http://www.wasm.ru

Дополнение от Иванова Евгения:
Нормальное пособие - это практика, практика и только она!
Изучайте, читайте книги, но главное - применяйте это на практике, создавайте программы, которые были бы полезны и работали.
Ответ отправил: AxMAD (статус: Студент)
Отправлен: 02.03.2005, 19:53

Отвечает: Boriss
Здравствуйте, Перов Виталий Георгиевич!
По-моему, для чайников (и не только) очень хорошо пишет Калашников:
http://www.Kalashnikoff.ru
(пусть не воспринимает как подлизывание...)
Ассемблер для DOS
http://www.Kalashnikoff.ru/Assembler/
Ассемблер для Windows
http://www.wasm.zite.ru/
Ответ отправил: Boriss (статус: Профессионал)
Отправлен: 03.03.2005, 09:49
Оценка за ответ: 5


Вопрос № 17727
Помогите понять как запрограммировать контроллер прерываний под I8086
Отправлен: 02.03.2005, 20:56
Вопрос задал: Герасимов Виталий Витальевич (статус: Посетитель)
Всего ответов отправлено: 1

Отвечает: Котиев Зураб
Здравствуйте, Герасимов Виталий Витальевич!
как я понял тебе нужно запрограммировать 8259a.
у него есть 4 слова инициализации.
с начала маскируешь хардверные прерывания
mov al,0ffh
out 21h,al
out 0a1h,al
1)потом загоняешь в порт 20h и A0h значение 11h,что означает что это первое слово инициализации ,используются два контроллера (master и slave для 16 линий прерываний),а также туда будет входить и 4-е слово.
mov al,11h
out 20h,al
jmp $+2
out 0A0h,al
jmp $+2
jmp для небольшой задержки.
2)потом второе слово ,которое отвечает на какие вектора ты повесишь IRQ(запросы на прерывание)
допустим на 40-4F.в порты 21h и 0A1h
mov al,40h
out 21h,al
jmp $+2

add al,8 ; т.е 48h-4Fh
out 0A1h,al;
jmp $+2
3)дальше в первый контроллер ты шлешь 04h, т.е , что используется master/slave режим, а во второй конроллер его номер т.е 2.
все это в порты 21h и 0A1h
mov al,04Р
out 21h,al
jmp $+2
shr al,1
out 0A1h,al
jmp $+2
4)ну и наконец 4-е. шлешь в 21h и 0A1h единицу.
это значит режим 8086,небуферизованный,обработчик прерывания сам должен посылать EOI(end of interrupt )
mov al,1
out 21h,al
jmp $+2
out 0A1h,al
jmp $+2
EOI реализуется просто:
mov al,20h
out 20h,al ;для первого контроллера
или
mov al,20h
out 0A0h,al;для второго

Ответ отправил: Котиев Зураб (статус: 2-ой класс)
Отправлен: 05.03.2005, 15:46


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.faq
Отписаться

В избранное