Board.KolibriOS.org

Official KolibriOS board
It is currently Tue May 21, 2019 2:14 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 9 posts ] 
Author Message
PostPosted: Wed Jul 03, 2013 9:54 pm 
Offline

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


Top
   
PostPosted: Wed Jul 03, 2013 10:03 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
http://fasm.su/Library/manual
http://fasm.su/Lessons

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


Top
   
PostPosted: Wed Jul 03, 2013 11:14 pm 
Offline
Kernel Developer

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


Top
   
PostPosted: Thu Jul 04, 2013 4:01 pm 
Offline
Kernel Developer
User avatar

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

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


Top
   
PostPosted: Thu Jul 04, 2013 4:41 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
CleverMouse
Интел так пишет. bx, si - ds. di - es. bp, sp - ss. Наверное опять обманули :( .

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


Top
   
PostPosted: Thu Jul 04, 2013 4:56 pm 
Offline
Kernel Developer
User avatar

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

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


Top
   
PostPosted: Fri Jul 05, 2013 1:10 pm 
Offline

Joined: Sun Oct 02, 2011 4:48 pm
Posts: 42
Demonikss wrote:
Уважаемые разработчики, у меня есть к вам вопрос по ассемблеру Fasm. Начал изучать его и столкнулся с небольшими затруднениями по поводу синтаксиса. Почти все примеры для разбора которые удается найти в интернете, предназначены для tasm/masm...


Цитата:
Quote:
Используется 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 wrote:
Почти все примеры для разбора которые удается найти в интернете
На всякий случай:
http://asmworld.ru


Top
   
PostPosted: Sun Jul 07, 2013 6:34 pm 
Offline

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


Top
   
PostPosted: Sun Feb 07, 2016 3:46 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5047
У кого-то есть макрос для рисования незакрашенного прямоугольника ?

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 9 posts ] 

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited