Среда, 16.07.2025, 14:01
Приветствую Вас Гость | RSS
Главная | Каталог статей | Регистрация | Вход
.:: Меню ::.
.:: Категории каталога ::.
Разное [5]
Различные темы по программированию
Пакет SWT [4]
Практикуемся в написании оконных приложений на Java
Среды разработки, компиляторы и т.п [3]
Сравнения, описания, плюсы и минусы сред разработки. Сравнение компиляторов.
Java [8]
Объектно-ориентированные соображения.
Си++ [19]
Коротко и ясно
Ассемблер [6]
Машинные коды, побитно :)
Форма входа
.:: Поиск ::.
.:: Дополнительно ::.
    Хостинг от Loqo.ru
             .:: Коментируем ::.
Главная » Статьи » Текстовый материал » Ассемблер

Простейшее приложение Win32
Code

.386
.model flat, stdcall
option casemap:none

;Следующие две строчки можно написать если включаемых процедур немного, иначе лучше включить файл с описаниями названий и параметрами
;ExitProcess PROTO:DWORD
;MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD

include user32.inc
include kernel32.inc

includelib user32.lib
includelib kernel32.lib

.data
MsgCaption db "Небольшая модификация примера IceZelion'а №2",0
MsgBoxText db "Ассемблирование круто!", 0

.code
start:
  comment + Вариант без invoke
  push 0
  mov eax, offset MsgCaption
  push eax
  mov eax, offset MsgBoxText
  push eax
  push 0
  call MessageBoxA
  push eax
  call ExitProcess
  +++++++++++++++++++++++++++
   
  invoke MessageBoxA ,0, addr MsgBoxText, addr MsgCaption, 0
  invoke ExitProcess, eax
   
end start

Имеется данный код.
Здесь два варианта в одном, упрощённый и как оно было раньше.
С введением Invoke (является макросом, а не операцией ассемблера), код стал гораздо читабельнее.
Как видно из текста, Invoke производит заталкивание переменных в стек и вызов функции.
Заталкивание происходит с лева на право.
Нужно отметить, что команда Call тоже заталкивает одну переменную в стек, это адрес возврата в вызывающую функцию.

Сразу отмечу блочные комментарии, пишется comment, а за ним указывается символ который будет закрывать блок. В данном случае я выбрал символ плюс.

В файлах с расширением .inc находятся описания прототипов функций, константы и т.п.

.lib - библиотеки импорта.

Размер собранного файла равен 2560 байт.
О размерах я ещё напишу как-нибудь, когда будем разбираться с форматом исполняемого файла Windows.

Ну в общем то пока всё, для начала.

Категория: Ассемблер | Добавил: C0demaker (06.03.2009)
Просмотров: 2018 | Комментарии: 1 | Рейтинг: 0.0/0
Всего комментариев: 1
0  
1 erusyneteBusy   (23.12.2011 08:34) [Материал]
перечитал весь блог, довольно неплохо


Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Ant1 © 2025