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

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


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

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

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

Выпуск № 285
от 12.11.2005, 18:36

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


Вопрос № 29031: Здраствуйте участники проекта RusFAQ! Я начал изучать assembler не так давно, помогите разобратся в следующей проблеме. Следуя рекомендациям с сайта WASM.ru (если сосвсем точно рекомендации которым я следовал взяты из статьи assembler.ru...
Вопрос № 29039: На нескольких форумах видел подобное явление: .model tiny .code org 100h _start: ... mov ax,40h mov es,ax mov al,00010000b ;Scroll Lock mov es:[17h],al ... end _start и якобы д...
Вопрос № 29055: Известно, что для использования портов ввода-вывода и прерываний в виндовозах NT, 2000, XP нужно использовать драйвер уровня ядра. Дайте ссылку на статью или напишите пример такого драйвера (хотя бы с портами ввода-вывода) и программы, работающей с т...

Вопрос № 29.031

Здраствуйте участники проекта RusFAQ!
Я начал изучать assembler не так давно, помогите разобратся в следующей проблеме.
Следуя рекомендациям с сайта WASM.ru (если сосвсем точно рекомендации которым я следовал взяты из статьи assembler.ru
ms devstudio - среда разработки asm скачанной с WASM) сделал всё как описано ниже:

Инсталлируйте, если не сделали этого до сих пор, MS Developer Studio в варианте Visual C++. Никаких особенностей здесь нет - все должно быть так же, как для программирования на C++.
Найдите где-нибудь MASM 6.11с или более поздний. Чистый 6.11 (без "c") лучше не использовать: есть у него кое-какие проблемы. По минимуму из всего пакета потребуется один лишь модуль ml.exe размером около 400 Кбайт.
Поместите ml.exe в папку исполняемых модулей пакета MS DevStudio (по умолчанию - C:Program FilesDevStudioVCBIN
Получите файл includes.zip
Распакуйте его и поместите файлы @struct.inc и windows.inc в папку включаемых файлов пакета MS DevStudio (по умолчанию - C:Program FilesDevStudioVCINCLUDE).
К сожалннию я использовал ml.exe именно из MASM 6.11 т.к другого не нашел.
Также произвел настройки в Visual Studio

* В окне Workspace на вкладке FileView щелкните правой кнопкой мыши по имени файла
* В появившемся контекстном меню выберите пункт Settings. Появится диалог Project Settings в режиме установок для файла
* В диалоге выберите вкладку Custom Build
* В списке Settings for выберите пункт Win32 Debug
* В текстовом поле Build command(s) введите новую команду:
ml.exe /c /coff /nologo /Zi /DDEBUG $(InputPath)
* В текстовом поле Output file(s) введите текст:
.$(InputName).obj
* В списке Settings for выберите пункт Win32 Release
* В поле Build command(s) введите новую команду:
ml.exe /c /coff /nologo $(InputPath)
* В поле Output file(s) введите текст:
.$(InputName).obj
И решил попробовать собрать это простое 32-разядное приложение написанное на asm используя Microsoft Visual C++ версии 6.0.
При компилировании файла в VC++ вылетела ошибка:
C:Program FilesMicrosoft Visual StudioVC98BINML.exe не является приложением Win32.
Подскажите в чем тут дело. И ещё хотелось бы узнать где можно в Internete подробнее узнать о включении asm-программ
в VC++. Заранее спасибо fill2.

Приложение:

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

Отвечает: Стас
Здравствуйте, Fill!
ML.exe действительно не приложение Win32!
Другие DOS программы работают?
Обычно такое бывает если autoexec.nt и config.nt битые.
(винды какие?)
Можно попробовать запускать ml.exe из под какой либо DOS оболочки.
Ответ отправил: Стас (статус: Специалист)
Отправлен: 07.11.2005, 01:24

Отвечает: Юра Устинов
Здравствуйте, Fill!
К сожалению после твоего сообщения эксперт Юра скончался от болевого шока....
Шутка блин, но всё же Ж=0.
Нормальный masm находится по адресу: http://wasm.ru/tools/7/masm32v7.zip
Его нужно скачать на всю жизнь...
Чтобы не перечислять, что из него нужно взять пока, скачай уже собранный пакет для работы (он маленький) http://cyberdrive.ru/download/masm.zip
Теперь слушай внимательно, если ты хочешь откомпилить свой проект он у тебя должен быть в папке облегчённого варианта на cyberdrive, теперь пишешь в фаре(потом батник создай)
ml /c /coff <имя файла>.asm <enter>
появился обжект файл
пиши
link /subsystem:windows <имя файла>.obj
Ну всё пока!
З.Ы.
Посмотри как устроен privetik.asm, не пугайся что нет invoke я просто народ обучаю.
---------
Спасём Россию!!!
Ответ отправил: Юра Устинов (статус: 5-ый класс)
Отправлен: 07.11.2005, 06:10


Вопрос № 29.039
На нескольких форумах видел подобное явление:

.model tiny
code
org 100h
_start:
...
mov ax,40h
mov es,ax

mov al,00010000b ;Scroll Lock
mov es:[17h],al

...
end _start

и якобы должен загораться светодиод Scroll Lock на клаве, но увы...
проверял на debuger'е байт по адрессу 40:17h как был
(допустим) ноль так и остался ноль после этой операции
mov es:[17h],al.
В чём тут дело и существует ли такой способ????
Отправлен: 06.11.2005, 22:56
Вопрос задал: Петров Максим Викторович (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Евгений Иванов
Здравствуйте, Петров Максим Викторович!
приделай реле к LPT-порту и контакт к клавише NumLock - намного интереснее.

а если честно, то работать нужно с портами. 64h и 60h порты.

---------
Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 06.11.2005, 23:16

Отвечает: Стас
Здравствуйте, Петров Максим Викторович!
На самом деле ячейка с адресом 40:17 лишь отражает текущее состояние клавиатуры. Но не изменяет его. (Вероятно винда постоянно обновляет эти данные, либо вообще запрещает писать в эту область).

Для того что бы засветить индикатор ScrollLock теоритически нужно:
MOV AL,0EDh ; команда контроллеру клавы
OUT 64h,AL
MOV AL,01 ; 1- ScrollLock
OUT 64h,AL
НО НЕ ПОД XP!! винды опять не дадут этого сделать. (прийдется писать драйвер)
Ответ отправил: Стас (статус: Специалист)
Отправлен: 07.11.2005, 01:08

Отвечает: Юра Устинов
Здравствуйте, Петров Максим Викторович!
Запусти под дос и лучше пользуйся портами. Винда запрещает тебе эти манипуляции.
.model tiny
.code
org 100h
start:
in al,64h
test al,0010b
jnz start
mov al,0edh
out 60h,al
mov al,1
out 60h,al
ret
end start
---------
Спасём Россию!!!
Ответ отправил: Юра Устинов (статус: 5-ый класс)
Отправлен: 07.11.2005, 06:10


Вопрос № 29.055
Известно, что для использования портов ввода-вывода и прерываний в виндовозах NT, 2000, XP нужно использовать драйвер уровня ядра. Дайте ссылку на статью или напишите пример такого драйвера (хотя бы с портами ввода-вывода) и программы, работающей с таким драйвером.
Отправлен: 07.11.2005, 07:26
Вопрос задал: GearHead (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Лысков Игорь Витальевич
Здравствуйте, GearHead!
Как минимум, тебе нужен NTDDK. Там найдешь и примеры.
---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: 8-ой класс)
Отправлен: 07.11.2005, 10:44

Отвечает: Sager
Здравствуйте, GearHead!
На сайте wasm.ru подробно описывается процесс создания драйвера+скачай/возьми NTDKK
Ответ отправил: Sager (статус: Студент)
Отправлен: 07.11.2005, 17:43


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

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

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

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

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


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


© 2001-2005, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Яндекс Rambler's Top100 hotlog_js="1.0"; hotlog_r=""+Math.random()+"&s=314124&im=101&r="+escape(document.referrer)+"&pg="+ escape(window.location.href); document.cookie="hotlog=1; path=/"; hotlog_r+="&c="+(document.cookie?"Y":"N"); hotlog_js="1.1";hotlog_r+="&j="+(navigator.javaEnabled()?"Y":"N") hotlog_js="1.2"; hotlog_r+="&wh="+screen.width+'x'+screen.height+"&px="+ (((navigator.appName.substring(0,3)=="Mic"))? screen.colorDepth:screen.pixelDepth) hotlog_js="1.3" hotlog_r+="&js="+hotlog_js; document.write("HotLog")

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.faq
Архив рассылки
Отписаться
Вспомнить пароль

В избранное