Вопрос № 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
и якобы должен загораться светодиод Scroll Lock на клаве, но увы...
проверял на debuger'е байт по адрессу 40:17h как был
(допустим) ноль так и остался ноль после этой операции
mov es:[17h],al.
В чём тут дело и существует ли такой способ????
Отвечает: Евгений Иванов
Здравствуйте, Петров Максим Викторович!
приделай реле к 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. Там найдешь и примеры.
--------- Удачи!