Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Ср май 24, 2017 7:08 am

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




Начать новую тему  Ответить на тему  [ 9 сообщений ] 
Автор Сообщение
 Заголовок сообщения: Несколько вопросов по FASM'у.
СообщениеДобавлено: Ср июл 03, 2013 9:54 pm 
Не в сети

Зарегистрирован: Ср июл 03, 2013 9:33 pm
Сообщения: 15
Уважаемые разработчики, у меня есть к вам вопрос по ассемблеру Fasm. Начал изучать его и столкнулся с небольшими затруднениями по поводу синтаксиса. Почти все примеры для разбора которые удается найти в интернете, предназначены для tasm/masm... Почему именно нужно записывать имя переменной в квадратные скобки [], например команду mov ax, peremen на фасме нужно писать как mov ax, [peremen]? И еще как будет правильно записать команду mov byte ptr es:[di], cl на фасм? Я записал как mov byte [es:di], cl. Программа вроде даже скомпилилась и работает, но для успокоения души хочу разобраться. Также меня интересует обязательно ли в командах математического сопроцессора указывать тип данных, или же тип берется из определения, когда описываешь переменную? Писал в свое время на ассемблере для z80, теперь хочу научиться для x86. В перспективе есть интерес поучаствовать в написании программ для КолибриОС. Буду очень благодарен если ответите.


Вернуться к началу
 Заголовок сообщения: Re: Несколько вопросов по FASM'у.
СообщениеДобавлено: Ср июл 03, 2013 10:03 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
http://fasm.su/Library/manual
http://fasm.su/Lessons

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: Несколько вопросов по FASM'у.
СообщениеДобавлено: Ср июл 03, 2013 11:14 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3925
Demonikss
Все очень просто. peremen это адрес памяти. Если мы хотим загрузить этот адрес в регистр, то пишем mov reg, peremen
если нужно загрузить значение по этому адресу, используем скобки mov reg, [peremen]
Цитата:
как будет правильно записать команду mov byte ptr es:[di], cl
mov [di], cl :)
es - сегмент по умолчанию для di, поэтому префикс es: лишний.
Fasm знает, что размер регистра cl 1 байт, поэтому указывать размер операнда не обязательно.


Вернуться к началу
 Заголовок сообщения: Re: Несколько вопросов по FASM'у.
СообщениеДобавлено: Чт июл 04, 2013 4:01 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1591
Ну, насчёт "es - сегмент по умолчанию для di, поэтому префикс es: лишний." Serge несколько погорячился. Сегменты в fasm указываются внутри квадратных скобок: mov [es:di],cl.

_________________
Сделаем мир лучше!


Вернуться к началу
 Заголовок сообщения: Re: Несколько вопросов по FASM'у.
СообщениеДобавлено: Чт июл 04, 2013 4:41 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3925
CleverMouse
Интел так пишет. bx, si - ds. di - es. bp, sp - ss. Наверное опять обманули :( .

И правда, обманули. Не надо доверять новым мануалам.


Вернуться к началу
 Заголовок сообщения: Re: Несколько вопросов по FASM'у.
СообщениеДобавлено: Чт июл 04, 2013 4:56 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1591
В строковых инструкциях везде es:di, в остальных di не влияет на сегмент. sp вообще не адресуется, у bp/ebp/esp умолчальный сегмент ss, да.

_________________
Сделаем мир лучше!


Вернуться к началу
 Заголовок сообщения: Re: Несколько вопросов по FASM'у.
СообщениеДобавлено: Пт июл 05, 2013 1:10 pm 
Не в сети

Зарегистрирован: Вс окт 02, 2011 4:48 pm
Сообщения: 43
Demonikss писал(а):
Уважаемые разработчики, у меня есть к вам вопрос по ассемблеру Fasm. Начал изучать его и столкнулся с небольшими затруднениями по поводу синтаксиса. Почти все примеры для разбора которые удается найти в интернете, предназначены для tasm/masm...


Цитата:
Цитата:
Используется Intel-синтаксис записи инструкций.

Единственное существенное отличие от формата, принятого в других ассемблерах (MASM, TASM в режиме совместимости с MASM) — значение ячейки памяти всегда записывается как [label_name], а просто label_name означает адрес (то есть порядковый номер) ячейки. Это позволяет обходиться без ключевого слова offset. Также в fasm при переопределении размера операнда вместо byte ptr пишется просто byte, вместо word ptr — word и т. д. Не позволяется использовать несколько квадратных скобок в одном операнде, таким образом вместо [bx][si] необходимо писать [bx+si]. Эти изменения синтаксиса привели к более унифицированному и лёгкому для чтения коду.

http://ru.wikipedia.org/wiki/Fasm


Demonikss писал(а):
Почти все примеры для разбора которые удается найти в интернете
На всякий случай:
http://asmworld.ru


Вернуться к началу
 Заголовок сообщения: Re: Несколько вопросов по FASM'у.
СообщениеДобавлено: Вс июл 07, 2013 6:34 pm 
Не в сети

Зарегистрирован: Вс фев 18, 2007 8:34 pm
Сообщения: 158
Serge писал(а):
И правда, обманули. Не надо доверять новым мануалам.
Даже если бы там это было написано, поведение проца не могло так кардинально измениться. А то что в руководствах Intel встречаются ошибки, так это да. Раздражает, когда не можешь на 100% довериться докам даже такой солидной фирмы.


Вернуться к началу
 Заголовок сообщения: Re: Несколько вопросов по FASM'у.
СообщениеДобавлено: Вс фев 07, 2016 3:46 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4080
У кого-то есть макрос для рисования незакрашенного прямоугольника ?

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


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 9 сообщений ] 

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


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

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


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

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