Примеры программ на ассемблере

CW
Posts: 21
Joined: Sat Jan 28, 2006 18:58

Примеры программ на ассемблере

Postby CW » Fri Oct 20, 2006 07:58

Где можно скачать примеры прог на асме для полусои? Самые легкие потипо Hello World и т.п.?
А есть русские доки по LX формату? Поиск не помог

User avatar
/Serg/
Posts: 57
Joined: Thu Sep 01, 2005 22:34
Contact:

Postby /Serg/ » Sun Oct 22, 2006 21:54

Описание формата LX было в EDM/2: http://www.edm2.com/zips/index.html

Насчет Ассемблера... вот пример, где вызывается "DosQuerySysInfo()":
; Добавляем в стек параметры для "DosQuerySysInfo()"
PUSH sizeof BootDrive ; 4: размер области памяти
LEA EAX, BootDrive
PUSH EAX ; 3: адрес области памяти
PUSH QSV_BOOT_DRIVE ; 2: второе запрашиваемое значение - "до"
PUSH QSV_BOOT_DRIVE ; 1: первое запрашиваемое значение - "от"

; Вызываем функцию (точка возврата также запоминается в стеке)
CALL DosQuerySysInfo
; Приводим стек в исходное состояние (в i386 он растет вниз, поэтому "поднимаем" его)
ADD ESP, DWORD * 4

; Проверяем возвращаемое значение
CMP EAX, NO_ERROR
JNZ ExceptionHandler
...

О том, как работает команда "CALL", разработчик не задумывается. Я долго изучал бинарники с помощью Hiew, но так ничего и не понял :)

User avatar
valerius
Posts: 16
Joined: Fri Jul 15, 2005 05:58
Location: Elizovo, Kamchatka
Contact:

Postby valerius » Sun Oct 29, 2006 04:18

2CodeWorld: превед! /me тоже открыл для себя программирование на ассемблере, пишу загрузчик/bootmanager для OS/2 ;)

2/Serg/: и чего конкретно непонятно?

-- Команда CALL работает очень просто. DosQuerySysInfo -- это просто локальная метка в программе. Программа линкуется с API DLL, при загрузке программы грузится DLL и адрес в команде CALL заменяется динамическим линковщиком на адрес функции в DLL. То есть, это простой вызов процедуры.
don't use windows, try doors

User avatar
/Serg/
Posts: 57
Joined: Thu Sep 01, 2005 22:34
Contact:

Postby /Serg/ » Sun Oct 29, 2006 21:28

А точки дальнего перехода установлены загрузчиком (т.е. ядром ОС) как разрешенные адреса. Тогда понятно.

CW
Posts: 21
Joined: Sat Jan 28, 2006 18:58

Postby CW » Tue Oct 31, 2006 22:07

valerius wrote:2CodeWorld: превед! /me тоже открыл для себя программирование на ассемблере, пишу загрузчик/bootmanager для OS/2 ;)

Превед! Напиши туториал для сусбина по программированию под полуось, а? ;)

User avatar
valerius
Posts: 16
Joined: Fri Jul 15, 2005 05:58
Location: Elizovo, Kamchatka
Contact:

Postby valerius » Thu Nov 02, 2006 03:16

2CW: да я чего -- я программер уевый -- у меня опыта маловато. Вот /Serg/ книгу пишет - - советую почитать, как раз по программированию под полуось (точнее, про API). (Ищи на Hobbes: http://hobbes.nmsu.edu/cgi-bin/h-search ... pe&dir=%2F )
don't use windows, try doors

User avatar
/Serg/
Posts: 57
Joined: Thu Sep 01, 2005 22:34
Contact:

Postby /Serg/ » Thu Nov 02, 2006 03:37

Валерий, я CodeWorld'у её лично присылал :) Книга здесь не поможет, она не об этом. Надо не перечисление вызовов API, а обзорную статью по разработке программного обеспечения. О том, что связки «PHP + MySQL» вполне достаточно, в других случаях — C, Pascal, Modula 2, Java 1.4.

Тут важен стиль изложения. Попробуй написать, у тебя же хорошая статья по сканерам.

И никогда не говори о себе слова вроде «у меня опыта маловато», «я не умею водить машину HUMMER», «я не нравлюсь девушкам» и так далее. ЭТО НЕПРАВДА. :D

adina728
Posts: 1
Joined: Fri Jul 27, 2012 12:20

Re: Примеры программ на ассемблере

Postby adina728 » Fri Jul 27, 2012 12:23

Nice Post…Thanks For sharing the info.


Return to “Developers / Разработчики”

Who is online

Users browsing this forum: No registered users and 1 guest