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

Assembler - Просто и Эффективно.

  Все выпуски  

Assembler - Просто и Эффективно. Ответы на вопросы.


Assembler

Вопросы и Ответы

Выпуск содержит вопросы читателей рассылки, с подробными ответами. Присылайте свои вопросы и предложения по адресу: asm32@nm.ru .

>Если команды процессора - это данные, значит ли это, что можно работать с ними, как с данными (считывать, копировать и т.д)?
Да. Пример:
sub esp,6;выделим 6 байт в стэке
mov byte ptr [esp],0B8h;код команды mov eax
mov dword ptr [esp+1],12345678h32 битное число - часть команды mov eax
mov byte ptr [esp+5],0C3hкод команды ret
mov eax,espпо адресу esp - процедура, которую мы только что создали
call eaxвызовем ее
add esp,6освободим область стэка
Этот пример может не работать на современных процессорах. Посмотрите его работу под отладчиком.

>Хотелось бы побольше узнать о WinAPI функциях, их использовании и форматах.
Для получения справки по функциям Windows желательно приобрести MSDN (несколько CD). Смотрите также на сайте Microsoft.
Глава #6 содержит общую информацию об API функциях, способе их вызова и передачи параметров.
В рассылке будет рассмотренно использование основных API, COM client/server и т.д.

>Зачем использовать функции Windows, когда программа на Ассэмблере может напрямую обращаться к устройствам компьютера?
  • Пользовательским программам запрещен прямой доступ к устройствам компьютера.
  • Использование функций ОС значительно упрощает программу.
  • Программа, использующая API, меньше зависит от типа оборудования.
  • ОС сама разрешает проблему общего доступа к устройствам.
Для работы с оборудованием компьютера нужно писать драйвер (vxd для Win 9x и sys для NT). Написание драйверов будет рассмотрено позже.

>Как на одном компьютере может исполнятся несколько программ, ведь другие программы в любой момент могут изменить значения регистров?
В один момент времени выполняется только одна задача. По истечении небольшого промежутка времени, ОС сохраняет значение регистров в памяти и передает управление другой задаче, восстановив ее значения регистров из памяти. Таким образом, каждая программа не знает о существовании других. Кроме того, многие программы "одновременно" загружены по одному и томуже адресу: 400000h. Это возможно благодаря механизму страничной переадресации памяти.
Защищенный режим работы процессора- одна из самых сложных тем в программировании на Assembler'е, поэтому его использование будет изложено позже.

>Зачем для компиляции нужно две программы (tasm32.exe tlink32.exe)?
Аналогично устроены почти все языки программирования.
tasm32 - это компилятор. Создает из .asm исходника .obj файл.
tlink32 - линкер. Собирает из нескольких файлов один.

>Каким образом программы под дос используют функции Windows (Например отображают сообщение как при вызове MessageBox)?
Это консольные программы под Windows. Они используют консоль для взаимодействия с пользователем, т.к иногда это удобней. Пример: tasm32.exe
   -------------------------------

 Содержание дальнейших выпусков зависит от вас. Будут разъясняться те темы, которые непонятны большинству читателей. Сайт рассылки: asm32.nm.ru. Присылайте свои вопросы и предложения по адресу: asm32@nm.ru .
   -------------------------------


Автор рассылки Владимир Пронин. Любое коммерческое использование материалов рассылки без ведома и прямого согласия автора запрещено.
Письма присланные автору рассылки могут быть опубликованы целиком или частично без предварительного уведомления. Если вы не хотите, чтобы ваше письмо было опубликовано укажите это в начале письма.
Перепечатка материалов разрешена только с непосредственной ссылкой на asm32.nm.ru


В избранное