Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Пн авг 21, 2017 1:03 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 45 сообщений ]  На страницу 1 2 3 След.
Автор Сообщение
 Заголовок сообщения: помогите новичку FASM syntax
СообщениеДобавлено: Пт июл 30, 2010 5:29 am 
Не в сети

Зарегистрирован: Пн июл 12, 2010 7:03 am
Сообщения: 43
только начал изучать FASM,
посмотрел несколько статей, самоучителей и ничего не понял,
тут http://allasm.ru/lang.php написано что,
Цитата:
Единого стандарта для синтаксиса языков ассемблера не существует

в принципе на C++ тоже самое,
но всётаки хотелось бы узнать то что относится к FASM, ихний мануал очень мало чего даёт,
памогите пожалуйста найти хорошую доку,
если поточнее,
1) Основной синтаксис
2) Простые логические действия
3) Операторы(+, -, <<, ==, end, or)
4) Конструкции(if else elseif while do-while for)
5) Переменные
6) Функции
7) Объекты(если такое есть)


и если у кого есть, дайте пожалуйста исходники простого маленького графического редактора,
так чтоб только pixelmap и карандашик был с выботом цвета.


Вернуться к началу
 Заголовок сообщения: Re: помогите новичку FASM syntax
СообщениеДобавлено: Пт июл 30, 2010 7:04 am 
Здесь Руководство к FASM 1.64 - в моих постах.
Здесь Юров и Зубков.
Цитата:
и если у кого есть, дайте пожалуйста исходники простого маленького графического редактора,
так чтоб только pixelmap и карандашик был с выботом цвета.

Все исходники на SVN - Работа с SVN сервером kolibrios


Вернуться к началу
   
 Заголовок сообщения: Re: помогите новичку FASM syntax
СообщениеДобавлено: Пт июл 30, 2010 12:04 pm 
Не в сети

Зарегистрирован: Ср дек 26, 2007 5:09 am
Сообщения: 214
scuter

Судя по Вашему списку, Вы пока не поняли, что язык ассемблера -- язык _низкого_ уровня, в отличие от Паскаля/Си/(далее список можно продолжать чуть ли не до бесконечности). Никаких операторов (присваивание, цикл, ветвление), никаких процедур-функций в том смысле, как в языках высокого уровня, здесь нет и быть не может, а имеются лишь директивы транслятора (которые указывают ему, как транслировать программу, как распределять память под переменные и т.д.) и машинные инструкции (команды, которые будут выполняться процессором при запуске программы). Очень редко когда один оператор языка высокого уровня транслируется в одну машинную инструкцию, обычно их получается несколько (иногда -- несколько десятков; всё зависит от сложности исходного оператора). Так что читайте учебники для начинающих ассемблерщиков и не пытайтесь покуситься на что-то сложное -- даже пресловутый ХеллоВорлд на ассемблере выглядит не так-то уж и просто (хотя, если разобраться, ничего сложного в нём нет).


Вернуться к началу
 Заголовок сообщения: Re: помогите новичку FASM syntax
СообщениеДобавлено: Пт июл 30, 2010 2:08 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 740
scuter писал(а):
2) Простые логические действия
3) Операторы(+, -, <<, ==, end, or)
4) Конструкции(if else elseif while do-while for)
5) Переменные
6) Функции

Краткая подсказка, что надо знать для программирования названных тобою пунктов:
2)
or; and; not; xor
3)
+ : add
- : sub
<< : shl
== : cmp; je
or : or
4)
if : cmp; je; jne; jl; jg; jle; jge
else : jmp
while : cld; mov ecx,...; loop ...; loope ...
5)
db; dw; dd; dq; dt - переменные по 1,2,4,8,10 байт
6)
call ...; ret - это в самом простом случае, когда функция не принимает параметров и не использует локальных переменных


Вернуться к началу
 Заголовок сообщения: Re: помогите новичку FASM syntax
СообщениеДобавлено: Пт июл 30, 2010 4:16 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пт авг 14, 2009 1:46 am
Сообщения: 1291
scuter

Человеку, не овладевшему минимальным математическим аппаратом, строго противопоказано самостоятельно изучать квантовую механику.
Дело даже не в том, что он ничего не поймёт.
Гораздо хуже: у него возникнет стойкая идиосинкразия к точным наукам, - всю жизнь его будет мутить от этой бредятины.

Точно так же бесполезно (и вредно!) браться за ассемблер (любой) с нуля.
Для начала надо познакомиться с архитектурой ЦП - тогда и дело пойдет интересно и весело. Рекомендую найти книгу Григорьева:

Григорьев В.Л. - Микропроцессор i486. Архитектура и программирование // М.: Гранал 1993
(библиотечный индекс: ISBN 5-900676-01-3)

_________________
Узкий специалист подобен флюсу: полнота его - односторонняя.
Козьма Прутков


Вернуться к началу
 Заголовок сообщения: Re: помогите новичку FASM syntax
СообщениеДобавлено: Сб июл 31, 2010 3:57 am 
Не в сети

Зарегистрирован: Пн июл 12, 2010 7:03 am
Сообщения: 43
Mario
спасибо за документацию,
у Зубкова замечательная документация только ни один пример кода не работает под FASM,
в остальных доках только элементарные примеры,
но всё таки понимание постепенно появляется,
одно непонятно зачем в ASM перебрали почти все 2-х значные комбинации букв,
неудивительно что у людей крыша едет от просмотра ASM кода.


кстати графический редактор в KoOS срабатывает с 5-го, 6-го раза,
а когда срабатывает работать с ним невозможно курсор постоянно исчезает,
меню не работает,
и иногда получается что нибудь карандашиком нарисовать.

поэтому нужно что нибудь другое,
лучше на С++ так как кода там должно быть меньше и логика лучше просматривается.

на javascript такое можно сделать так,
Код:
win=new win();
pm=new pixelmap(480, 320);
win.add(pm);
pm.onmousedown(function(e)
{
   c='#00FF00';
   x = e.pageX;
   y = e.pageY;
   pm.set_pix(x-1, y-1, c);
   pm.set_pix(x, y-1, c);
   pm.set_pix(x+1, y-1, c);
   pm.set_pix(x-1, y, c);
   pm.set_pix(x, y, c);
   pm.set_pix(x+1, y, c);
   pm.set_pix(x-1, y+1, c);
   pm.set_pix(x, y+1, c);
   pm.set_pix(x+1, y+1, c);
});

правда тут ещё фреймворк используется.


Вернуться к началу
 Заголовок сообщения: Re: помогите новичку FASM syntax
СообщениеДобавлено: Сб июл 31, 2010 6:04 am 
Не в сети
ex Dron2004
Аватара пользователя

Зарегистрирован: Вс июл 18, 2010 12:44 pm
Сообщения: 67
scuter,

Важно понять разницу между языками высокого уровня и низкоуровневым программированием, "близким к железу".

Напрямую сравнивать C/C++ и Assembler нельзя - это принципиально разные инструменты.


Вернуться к началу
 Заголовок сообщения: Re: помогите новичку FASM syntax
СообщениеДобавлено: Сб июл 31, 2010 11:10 am 
Не в сети

Зарегистрирован: Пн июл 12, 2010 7:03 am
Сообщения: 43
Андрей Михайлович писал(а):
scuter,

Важно понять разницу между языками высокого уровня и низкоуровневым программированием, "близким к железу".

Напрямую сравнивать C/C++ и Assembler нельзя - это принципиально разные инструменты.

фактически любая программа, любой драйвер, любой бинарный файл можно преобразовать в ASM код
фактически получается что C/C++, Delphi, Basic это тот же самый ASM только модернизированный,
и некоторые компиляторы переводят код с начало в ASM а потом компилирует
соответственно достичь того же результата возможно,

честно говоря суть то уже давно понял,
не понял глупость реализации языка,
SII писал(а):
db; dw; dd; dq; dt - переменные по 1,2,4,8,10 байт

если это переменные по 1,2,4,8,10 байт, их можно было назвать d1, d2, d4, d8, d10,
так хотя бы понятней, но язык программирования мне не переделать поэтому проехали.


Вернуться к началу
 Заголовок сообщения: Re: помогите новичку FASM syntax
СообщениеДобавлено: Сб июл 31, 2010 11:34 am 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 740
scuter писал(а):
но всё таки понимание постепенно появляется,
одно непонятно зачем в ASM перебрали почти все 2-х значные комбинации букв,
неудивительно что у людей крыша едет от просмотра ASM кода.

почти все эти комбинации букв есть сокращения английских слов, только нужно знать каких именно, например:
jge - Jump if Greater or Equal (переход если больше или равно)
df - Direction Flag (флаг направления)
cld - CLear Df (приравнивает df к 0)
Андрей Михайлович писал(а):
SII писал(а):
db; dw; dd; dq; dt - переменные по 1,2,4,8,10 байт

если это переменные по 1,2,4,8,10 байт, их можно было назвать d1, d2, d4, d8, d10,
так хотя бы понятней, но язык программирования мне не переделать поэтому проехали.

db; dw; dd; dq; dt - эти слова расшифровываются так:
db - Data Byte (данные размером в байт)
dw - Data Word (данные размером в слово, слово раньше было 2 байта, т.к. компьютера были 16 разрядные)
dd - Data Double word (данные размером в двойное слово)
dq - Data Q... (данные размером в 4-ре слова, не помню как пишется квадрат по латыни)
dt - Data Ten (данные размером в десять байт)


Вернуться к началу
 Заголовок сообщения: Re: помогите новичку FASM syntax
СообщениеДобавлено: Сб июл 31, 2010 1:08 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 740
scuter писал(а):
и если у кого есть, дайте пожалуйста исходники простого маленького графического редактора,
так чтоб только pixelmap и карандашик был с выбором цвета.

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


Вложения:
Комментарий к файлу: простенький редактор
graf_ed.7z [6.02 КБ]
165 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: помогите новичку FASM syntax
СообщениеДобавлено: Сб июл 31, 2010 1:39 pm 
Не в сети
ex Dron2004
Аватара пользователя

Зарегистрирован: Вс июл 18, 2010 12:44 pm
Сообщения: 67
Цитата:
честно говоря суть то уже давно понял

scturer, судя по тому, что ты говоришь, сути ты далеко не понял...

Цитата:
фактически получается что C/C++, Delphi, Basic это тот же самый ASM только модернизированный

Ничего подобного не "получается". C/C++, Delphi, Basic - это языки высокого уровня, это принципиально другой инструментарий. В каком-то смысле это результат эволюции программирования. Однако существование ЯВУ (языков высокого уровня) не отменяет необходимости в ассемблере.

Цитата:
и некоторые компиляторы переводят код с начало в ASM а потом компилирует
соответственно достичь того же результата возможно,

Неожиданный вывод :mrgreen:
Во-первых, язык высокого уровня не так близок к железу, как ассемблер (мнемокоды ассемблера - это, по сути, машинные команды, представленные в удобочитаемом для человека виде), и, следовательно, ЯВУ не позволяет задействовать потенциальные возможности аппаратного обеспечения на 100%. Пример: время доступа к данным в регистрах процессора гораздо меньше, чем время доступа к оперативной памяти. Когда ты пишешь программу на ассемблере, то можешь хранить некую наиболее часто используемую "переменную" в регистре, и только по завершении всех необходимых операций поместить значение переменной в оперативную память. Расскажи мне, как ты это сделашь, используя ЯВУ. Следовательно, программа, написанная на ассемблере, может работать значительно быстрее, чем программа на ЯВУ (хотя очень многое здесь зависит от программиста).

Во-вторых, программа на ассемблере компактнее (имеется в виду размер получаемого исполняемого файла), поскольку:
1) Одну и ту же операцию можно реализовать несколькими способами. Так, например, например, в eax у нас находится некое число. Нам нужно поместить в eax единицу. Сделать это можно двумя путями. Так:
Код:
mov eax, 0x00000001

либо так
Код:
xor eax, eax
inc eax

Так вот, получившийся машинный код второго варианта короче на один байт.
Ассемблер позволяет оптимизировать всю программу требуемым образом, ориентируясь на скорость, размер или компромиссное решение между ними.
Ни один компилятор не сможет оптимизировать программу так, как сделает это опытный программист, пишуший программу на ассемблере.
2) В двоичный файл не "попадает" ничего лишнего

В-третьих, интересно было бы посмотреть, как ты на ЯВУ напишешь загрузчик ОС :mrgreen: .

Так что, думаю, тебе стоит почитать соответствующую литературу, прежде чем вести подобные разговоры и делать какие-то выводы.

Помимо уже порекомендованных Маратом материалов, советую почитать книгу Олега Калашникова "Ассемблер? Это просто!" - написана очень увлекательно, - и книгу Рудольфа Марека "Ассемблер на примерах" (там много примеров, приведены некоторые часто используемые фрагменты кода, а также изложены основы программирования на ассемблере под DOS и под Linux).

Удачи!


Вернуться к началу
 Заголовок сообщения: Re: помогите новичку FASM syntax
СообщениеДобавлено: Ср авг 04, 2010 3:26 am 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4093
scuter
Что-то вроде учебника для начинающего ассемблерщика. Но вместо теории идёт вначале пример кода на Паскале, а потом пример того же кода, но на Ассемблере: http://kolibri-os.narod.ru/inf/other/pascal_to_asm.htm

_________________
Через тернии к звездам


Вернуться к началу
 Заголовок сообщения: Re: помогите новичку FASM syntax
СообщениеДобавлено: Ср авг 04, 2010 2:30 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн фев 09, 2009 4:13 am
Сообщения: 445
Вот позавчера лазал по сетке, и случайно наткнулся на статейку, похожую на ту что у Leency, но немного более развёрнутую и с картинками, авось пригодится. :D ------> Алгоритмическая структура "Цикл" в языке Ассемблер. <------

_________________
\ Маузер в руке, Путин – на крюке! \ Путину – клизму! Смерть капитализму! \ Путин – параша, победа будет наша!\
\ Застрели буржуя в спину! Он не лучше чем скотина! \
Изображение


Вернуться к началу
 Заголовок сообщения: Re: помогите новичку FASM syntax
СообщениеДобавлено: Ср авг 04, 2010 4:25 pm 
Не в сети
ex Dron2004
Аватара пользователя

Зарегистрирован: Вс июл 18, 2010 12:44 pm
Сообщения: 67
О. Калашников, кстати сказать, есть вот здесь:http://www.sysbin.com/files/asm/


Вернуться к началу
 Заголовок сообщения: Re: помогите новичку FASM syntax
СообщениеДобавлено: Ср авг 04, 2010 5:04 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Ср янв 27, 2010 10:59 am
Сообщения: 269
Нужное искать лучше здесь:
viewtopic.php?f=6&t=830
А чтобы долго не искать, ...:
viewtopic.php?f=6&t=830#p23135
Дублирование ссылок на форуме никчему.

_________________
ушёл...


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 45 сообщений ]  На страницу 1 2 3 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB