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

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


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

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

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

Выпуск № 81
от 11.03.2005, 17:30

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


Вопрос № 17872: Раньше из программы мы выходили с помощью прерывания 29h. Сейчас в рассылке я увидел, что в DOS выходили с помощью ret. В чем разница, есть ли преимущества....
Вопрос № 17880: Существует очень много руководств (в основной массе - советских) по работе с COM (реже с LPT) портами. А как работать с портами PS/2 и USB (примеры желательно под MS-DOS). ..
Вопрос № 17894: Здравствуйте уважаемые эксперты. Помогите разобраться с кодом (код выдран из DeDe):...

Вопрос № 17872
Раньше из программы мы выходили с помощью прерывания 29h. Сейчас в рассылке я увидел, что в DOS выходили с помощью ret. В чем разница, есть ли преимущества.
Отправлен: 05.03.2005, 18:18
Вопрос задал: psevdo (статус: 1-ый класс)
Всего ответов отправлено: 8

Отвечает: John Freeman
Здравствуйте, psevdo!
Вообще то это break , а для многих программ можно оставить и обработать код выхода (AL по-моему в момент выхода) в bat файлах после работы программы, но он сохраняется только после выхода функцией DOS через int21h
Ответ отправил: John Freeman (статус: Специалист)
Отправлен: 05.03.2005, 19:33

Отвечает: AxMAD
Здравствуйте, psevdo!
Выход из программы может быть разным всё зависит от формата файла:
для файла COM ->RET (из-за))
для EXE -> .....
Ответ отправил: AxMAD (статус: Студент)
Отправлен: 05.03.2005, 20:51

Отвечает: Bob Johnson
Здравствуйте, psevdo!
Выходить по ret можно только из com файла. если у тебя ехе файл, то выходить надо прерыванием.

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

Ответ отправил: Bob Johnson (статус: Академик)
Отправлен: 06.03.2005, 01:23

Отвечает: Стас
Здравствуйте, psevdo!
Если ты хочешь выйти из COM программы RETом, нужно привести в порядок стек(ничего там не оставить). Отсюда - единственное преимущество - правильно пишу программу, помну что я положил в стек и что вытащил. :)
Если ah=4ch,Int21h то в al можно передать код завершения "родителю". А о стеке можно не заботится (аж передергивает всего). :)
Кстати, еще есть Int20h.
Ответ отправил: Стас (статус: Практикант)
Отправлен: 06.03.2005, 02:42

Отвечает: _vt
Здравствуйте, psevdo!
С помощью 29h можно вывести символ на экран, а выйти из дос-программ можно с помощью int 20h. ;-)
В случае инструкции ret подразумевается (а так и есть во всех MS-DOS совместимых осях), что в стеке лежит адрес, по которому прописана инструкция int 20h. Посмотри под отладчиком и увидишь, что именно она вызывается, если стоит ret. Преимущества? Программа короче на один байт! =) Других преимуществ нету. Ну а в случае exe - используется функция 4ch прерывания 21h - помимо всего прочего выполняются работы по закрытию незакрытых файлов и прочего сбора мусора.
--

* In Gates we trust! :)

Ответ отправил: _vt (статус: Академик)
Отправлен: 07.03.2005, 03:51

Отвечает: Boriss
Здравствуйте, psevdo!
Одно отмечу, что все заметили, но никто не отметил ;)) - int 29h - это не выход ( правильно int 20h) - а вывод символа в AL на текстовый экран в позицию курсора
Ответ отправил: Boriss (статус: Профессор)
Отправлен: 07.03.2005, 09:33

Отвечает: Shizuku Tsukishima
Здравствуйте, psevdo!
Программа, использующая ret будет короче на один байт. Но истинное преназначение ret - возвращение управления в точку вызова при выходе из процедур. Также будет весьма проблематично применить эту команду для выхода в программах, использующих больше одного сегмента. Вообщем, мр. Калашников показывает нам при помощи ret образец оптимизации кода, про такое говорят "использовать как есть, в случае чего - пенять на себя".
Ответ отправила: Shizuku Tsukishima (статус: 3-ий класс)
Отправлен: 07.03.2005, 14:31

Отвечает: Voituk Alexander
Здравствуйте, psevdo!
Вообще-то выход из программы другой. (Имеется ввиду ДОС конечно).
Самый корректный - mov ax,4C00h
int 21h
и в регистре Al ты возвращаешь код возврата, который извне можно проанализировать.
Это штука работает и для ехе и для сом файлов. А ret-ом ты выходишь только из сом программ.
Можно еще из сом программ выходить int 20h. собственно это то же, что и ret.
Ответ отправил: Voituk Alexander (статус: 3-ий класс)
Отправлен: 09.03.2005, 15:39


Вопрос № 17880
Существует очень много руководств (в основной массе - советских) по работе с COM (реже с LPT) портами.
А как работать с портами PS/2 и USB (примеры желательно под MS-DOS).
Отправлен: 05.03.2005, 20:47
Вопрос задал: __grey__ (статус: 2-ой класс)
Всего ответов отправлено: 2

Отвечает: John Freeman
Здравствуйте, __grey__!
ГДЕ???
В WindowsNT/2k/xp НИЧЕГО кроме драйверов и CreateFile не катит,
в 9x/DOS одинаково - in/out + IRQ handler , но можно и без него
Всё это есть в любом учебнике про asm, мало того в примерах почти ко всем ассемблерам!!!
WASM : wasmlibserial*.asm
TASM : не замечено
MASM : в examples, в аддоне
Вот примеры из WASM:

Прикреплённый файл: Загрузить >>
Срок хранения файла на сервере RusFAQ.ru составляет 14 суток с момента отправки ответа.

Ответ отправил: John Freeman (статус: Специалист)
Отправлен: 05.03.2005, 21:39
Оценка за ответ: 4
Комментарий оценки:
За исходники конечно спасибо. Но я умею работать с COM портом. И команды in/out мне знакомы. И что такое IRQ, я тоже знаю.
Меня интересует, как работать с устройствами, подключаемыми к PS/2 и USB.
В чём-то тут моя вина. Не уточнил, что хотел. Хотя я бы такой вопрос понял.

Отвечает: _vt
Здравствуйте, __grey__!
http://www.usb.org/developers/docs/usb_20_02212005.zip - это спецификация протокола USB 2.0. Примеры программного доступа - тоже есть на этом сайте-первоисточнике. Спецификацию PS/2 читай на http://developer.intel.com/
--

* In Gates we trust! :)

Ответ отправил: _vt (статус: Академик)
Отправлен: 07.03.2005, 03:51
Оценка за ответ: 5


Вопрос № 17894
Здравствуйте уважаемые эксперты. Помогите разобраться с кодом (код выдран из DeDe):

Приложение:

Отправлен: 06.03.2005, 08:50
Вопрос задал: apmpc (статус: Посетитель)
Всего ответов отправлено: 1

Отвечает: Boriss
Здравствуйте, apmpc!
А в чем именно вопрос? Прокомментировать каждую строчку? Вряд ли...
Что именно делает "call 00409DB0"? в комментарии перед командой написано ...
Наверно, от несясности вопроса нет и ответов
Ответ отправил: Boriss (статус: Профессор)
Отправлен: 09.03.2005, 10:50


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

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

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

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала 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
Отписаться

В избранное