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

Ассемблер? Это просто! Учимся программировать


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

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler (Ассемблер)

Выпуск № 547
от 16.09.2006, 17:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 353, Экспертов: 33
В номере:Вопросов: 4, Ответов: 5


Вопрос № 54936: Добрый день!Подскажите пожалуйста как под управлением отладчика AFDPRO открыть прогамму типа com. Заранее благодарен!...
Вопрос № 55047: Здравствуйте! Пишу лабораторную по теме "Драйвер клавиатуры" (полный код приведен ниже) и столкнулся с некоторыми трудностями: 1. Линковщик отказывается генерить COM-файл, выдаёт сообщение "Fatal:Cannot generate COM-file:se...
Вопрос № 55050: Доброго времени суток уважаемые эксперты-ассемблерщики. Может кто знает. Вот в текстовых редакторах, поле куда там текст пишется – это эдит или просто клиентская часть. А в экселе ячейки это API функция Rectange да или нет ???????? Спаси...
Вопрос № 55054: Здраствуйте!!! Подскажите где можно найти, или мож у кого есть хороший справочник по прерываниям BIOS . Лучше на русском, но можно и на Английском. +с какими нибудь примерами. +программирование на уровне BIOS`a графической среды!...

Вопрос № 54.936
Добрый день!Подскажите пожалуйста как под управлением отладчика AFDPRO открыть прогамму типа com.
Заранее благодарен!
Отправлен: 10.09.2006, 18:13
Вопрос задал: Maksim,V,I/max (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Gluck3D
Здравствуйте, Maksim,V,I/max!
Можно на прямую через командную строку. К примеру если у вас есть файл asm.com и он лежит в каталоге AFDPRO, то пишем строку: afdpro asm.com и жмем Enter.
Можно через сам AFDPRO: в командной строке пишем L asm.com (!!!! ЕСЛИ asm.com лежит в каталоге с AFD).
Если AFD или ваша программа лежит в другом каталоге, то пишем полный путь (На пример для командной строки AFD: L C:PROCasm.com
Ответ отправил: Gluck3D (статус: 1-ый класс)
Ответ отправлен: 10.09.2006, 20:02
Оценка за ответ: 5


Вопрос № 55.047
Здравствуйте!
Пишу лабораторную по теме "Драйвер клавиатуры" (полный код приведен ниже) и столкнулся с некоторыми трудностями:
1. Линковщик отказывается генерить COM-файл, выдаёт сообщение
"Fatal:Cannot generate COM-file:segment-relocatable items present" - в чём причина? вроде все данные описаны в сегменте кода, других сегментов нет...
2. обработчик прерывания (9h) на клавиатуру - требуется работа с портами, чего раньше никогда не делал. У Зубкова изложено только в теории, что помогает мало. Считал что-то там из порта и... что с этим делать? Да и неохота изобретать велосипед честно говоря... Может кто-нибудь поделится кусочком кода?

В общем вроде установил вектора на свои обработчики, а что дальше делать - ума не приложу :( Асм только изучаю, примеров катастрофически не хватает - как дальше реализовывать обработчики? Нужно ли в их начале вызывать старые обработчики и зачем эта мера вообще?
Немножко сумбурно получилось, но точнее не получается. Заранее спасибо.

Приложение:

Отправлен: 11.09.2006, 16:36
Вопрос задал: Дмитрий Валковой (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: ADSota
Здравствуйте, Дмитрий Валковой!

Вместо "seg k_int", "seg v_int" используйте cs - ведь все процедуры в одном сегменте (cs)...
В перывании из 60-го порта получил код нажатой(отжатой) клавиши, теперь осталось - по скан-коду определить код нажатой клавиши, создать в памяти буфер клавиатуры и добавить в него символ, соотвествующий этому коду (не забывая про shift, Caps, etc.)...
---------
Открыть глаза навстречу солнцу
Ответ отправил: ADSota (статус: Специалист)
Ответ отправлен: 11.09.2006, 16:58
Оценка за ответ: 4
Комментарий оценки:
В перывании из 60-го порта получил код нажатой(отжатой) клавиши, теперь осталось - по скан-коду определить код нажатой клавиши, создать в памяти буфер клавиатуры и добавить в него символ, соотвествующий этому коду (не забывая про shift, Caps, etc.)... - вот это место пожалуйста поподробнее. что значит "создать буфер" ? ни одного примера не нашёл. и очень интересует отлов Shift, Caps. Спасибо.

Отвечает: Sergijj
Здравствуйте, Дмитрий Валковой!

Читать напрямую буфер клавиатуры (csan-code) Вы можете через порт 60h (scan-code 1 = Клавиша <ESC>; scan-code 2 = Клавиша F1 и т.д.), а управлять контроллером клавиатуры - через порт 64h.

Указатели на начало и конец буфера клавиатуры лежат по адресам 041Ah и 041Ch соответственно.

Если нужен "облагороженный" scan-code клавиши (с флагами Alt, Ctrl, Shift) - можно вызвать int 16h (ax = 01).

Статус флаги клавиатуры лежат здесь: 0040:0017 и 0040:0018 (это - слово) и имеют следующие значения:
bit| mask| value
0: 0001H alpha-shift (правая сторона) нажат
1: 0002H alpha-shift (левая сторона) нажат
2: 0004H Ctrl-shift (either side) нажат
3: 0008H Alt-shift (either side) нажат
4: 0010H ScrollLock состояние: включен
5: 0020H NumLock состояние: включен
6: 0040H CapsLock состояние: включен
7: 0080H Insert состояние: включен
8: 0100H Ctrl-shift (левая сторона) нажат
9: 0200H Alt-shift (левая сторона) нажат
10: 0400H Ctrl-shift (правая сторона) нажат
11: 0800H Alt-shift (правая сторона) нажат
12: 1000H ScrollLock нажат
13: 2000H NumLock нажат
14: 4000H CapsLock нажат
15: 8000H SysReq нажат

Получить в AX эти флаги можно через int 16h (ax = 12h).

Удачи!
---------
Стучитесь! И Вас откопают...
Ответ отправил: Sergijj (статус: 5-ый класс)
Ответ отправлен: 12.09.2006, 10:21


Вопрос № 55.050
Доброго времени суток уважаемые эксперты-ассемблерщики.
Может кто знает. Вот в текстовых редакторах, поле куда там текст пишется – это эдит или просто клиентская часть.
А в экселе ячейки это API функция Rectange да или нет ????????
Спасибо.
Отправлен: 11.09.2006, 16:52
Вопрос задал: ENS (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Xaud
Здравствуйте, ENS!

Все зависит от текстовых редакторов. Для простых (notepad, akelpad и иже с ними) используется большой EDIT-контрол. Для серьезных или более основательных - конечно же клиентская часть, вот только не обязательно главного окна. Обычно создается свой контрол (как то MySuperEditClass), который отрабатывает сообщения от клавиатуры, сам опеделяет что отображать, подсвечивать, шрифты и пр.; и помещается на главное окно как дочернее (CHILD).

В excel'e - может и Rectangle, может LineTo, а может и еще чего-нибудь. Суть в том чтобы красиво и понятно для пользователя отобразить содержимое, для этого можно использовать любые графические функции и даже другие дочерние контролы (например Header, Button, ListBox и пр.) поверх текущего контрола.
Ответ отправил: Xaud (статус: 1-ый класс)
Ответ отправлен: 11.09.2006, 21:33


Вопрос № 55.054
Здраствуйте!!!
Подскажите где можно найти, или мож у кого есть хороший справочник по прерываниям BIOS . Лучше на русском, но можно и на Английском. +с какими нибудь примерами. +программирование на уровне BIOS`a графической среды!
Отправлен: 11.09.2006, 17:19
Вопрос задал: chikanok (статус: 2-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Волков Павел Юрьевич
Здравствуйте, chikanok!
залил на фтпшник справочник по функциям и структурам BIOS,DOS
/books/program/assembler/tech60.rar
о подключении к фтпшнику:
http://rusfaq.ru/forum/Opinions/68/3

лучшим справочником по прирываниям считается подборка Ральфа Брауна ("Ralf Brown's Interrupt List")
http://www.cs.cmu.edu/~ralf/files.html

конечно на русском нечего путнего не найдете, если только отдельные статьи.

ИМХО в подборке "Ralf Brown's Interrupt List" есть все, что надо.
---------
Век живи, век учись.
Ответ отправил: Волков Павел Юрьевич (статус: 7-ой класс)
Ответ отправлен: 11.09.2006, 20:50


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

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

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

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

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


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


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.36 от 06.09.2006
Яндекс Rambler's Top100

В избранное