Page 1 of 3

Новичок

Posted: Mon Jul 30, 2007 2:56 pm
by lacrimator
Здравствуйте, я новичок в программировании на ассемблере, и у меня есть пара вопросов по синтаксису фасма, если не трудно просветите:
1) Чтобы вызвать функцию в КОС нужно каждый раз расталкивать параметры по регистрам, я так понял такую запись можно сократить с помощью макросов, если не трудно напишите пример.

2) В исходниках КОС часто встречаются метки @@, зачем они?

Пока всё, заранее благодарю.

Posted: Mon Jul 30, 2007 3:14 pm
by mike.dld
Привет,

1. Пример использования mcall: http://kolibrios.org/?p=SVN&kind=file&l ... xample.asm
2. Метки являются "безымянными". Они не влияют на область видимости локальных меток (начинающихся с точки). Обращение к ним происходит при помощи трёх специальных символов: @f (соответствует ближайшей метке @@ ПОСЛЕ текущей инструкции), @b или @r (соответствует ближайшей метке @@ ДО текущей инструкции)

Почитать о FASM можно тут: http://flatassembler.net/docs.php

Re: Новичок

Posted: Wed Nov 07, 2007 2:42 am
by Knigochey
mike.dld wrote:Почитать о FASM можно тут:
http://flatassembler.net/docs.php
Или скачать русский перевод
http://www.wasm.ru/docs/6/fasm164manualrus.zip

Re: Новичок

Posted: Fri Apr 26, 2013 8:35 pm
by Ratmirka
я тоже новичек вообщем и нехочу никого грузить вопросами, но помогине выбрать хорошую книгу для изучения ассемблера , а то попадаються только книги с заголовками типа ассемблер под виндовс 32 итд.
Хочеться книгу поглобалнее

Re: Новичок

Posted: Fri Apr 26, 2013 8:53 pm
by SoUrcerer
Тут традиционно советуют Юрова.

Re: Новичок

Posted: Fri Apr 26, 2013 8:54 pm
by Mario_r4
"Assembler. Учебник для ВУЗов" Юров В.И.
http://padabum.com/d.php?id=2238 PDF

Re: Новичок

Posted: Fri Apr 26, 2013 8:59 pm
by Ratmirka
Спасибо большое

Posted: Tue Sep 17, 2013 4:23 pm
by Tain_Play
Не подскажете, при помощи системного прерывания int 10h видео режимы 19:9 256цветов есть?

Re: Новичок

Posted: Tue Sep 17, 2013 4:30 pm
by SoUrcerer
Я прошу прощения, но в Колибри прерывание BIOS недоступно в режиме пользователя. Так же я не уверен, что оно доступно в режиме ядра.

Re: Новичок

Posted: Tue Sep 17, 2013 4:37 pm
by Tain_Play
SoUrcerer wrote:Я прошу прощения, но в Колибри прерывание BIOS недоступно в режиме пользователя. Так же я не уверен, что оно доступно в режиме ядра.
Я для конкурса пишу графическую ос, и там на компе для презентаций разрешение экрана 19:9 (точно не помню) Так как моя ос графическая => я обратился на этот форум. В vesa1.2 понравился 116h но мне нужен 1:19 а 116h это 1024x768. Вкусных ссылок на эти темы я не нашел. решил спросить

Re: Новичок

Posted: Tue Sep 17, 2013 4:52 pm
by SoUrcerer
Это какое разрешение у экрана должно быть с такими пропорциями?

Posted: Tue Sep 17, 2013 5:39 pm
by Tain_Play
простите что всех запутал.
1366x768 16:9

Re: Новичок

Posted: Tue Sep 17, 2013 6:01 pm
by Mario_r4
Сначала нужно получить список доступных режимов. Например на одном из моих ноутов в синем окне загрузке 1366x768 вполне доступен для выбора и работает нормально. Если видеокарта для Vesa не держит указанный режим, то выставлять его бесполезно.

Re: Новичок

Posted: Tue Sep 17, 2013 6:25 pm
by Tain_Play
Mario_r4 wrote: Если видеокарта для Vesa не держит указанный режим, то выставлять его бесполезно.
это разрешение на убуну и виндовс идет, я не знаю вот что здесь написать(в место 13h):

Code: Select all

                                                  
org  100h; я ядро в com файлах с винды запускаю, поудобней чем с виртуалкой возиться
mov ah, 0
mov al,13h; 13h = 320x200 pixels, 256 colors. а хочеться разрешение-то по больше! 
int 10h  
P.S.: Может быть такое что вызов графического режима какого-нибудь из vesa1.2 запрещена компилятором в незащищенном режиме?

Re:

Posted: Tue Sep 17, 2013 6:32 pm
by yogev_ezra
Tain_Play wrote:простите что всех запутал.
1366x768 16:9
Ты действительно всех запутал:
1) Если я не ошибаюсь, пропорции монитора 19:9 не бывает - есть 16:9. Что и оказалось в твоём случае.
2) 116h - это 15-bit 1024x768, а ты сказал, что тебе нужно 256 цветов, а 15-bit - это 32768 цветов.
3) VESA 1.2 уже давно умерло, сейчас все карточки поддерживают VESA 3.0, так что смело можешь смотреть в списке VESA 3.0. И даже VESA 3.0 ничего не знает о широкоэкранных режимах (таких как 16:9) - в стандарте прописаны исключительно режимы в пропорции 4:3. Широкоэкранные режимы каждый производитель видеокарт может нумеровать как хочет.
4) Недостаточно знать пропорции монитора, так как у каждого LCD монитора свой родной режим, и ты, вероятно, хочешь выставить именно его. С пропорцией 16:9 может быть родной режим: 1280×720, 1366×768, 1600×900, 1920×1080 и другие. Я так понимаю, что у твоего монитора родной режим 1366×768. Если выставить не родной режим, то картинка будет смазанной.

Исходя из всего вышесказанного, тебе нужно на этом компьютере и этом мониторе запустить сначала что-то другое, кроме своей OS (например, ту же KolibriOS), чтобы узнать, какие режимы можно выставить через VESA в твоём конкретном случае. Если KolibriOS в твоём случае не покажет в списке 1366x768, тогда через VESA его вообще нельзя никак выставить, и нужно только писать драйвер.
Tain_Play wrote:это разрешение на убуну и виндовс идет, я не знаю вот что здесь написать(в место 13h):
Linux/Windows, скорее всего, и выставляют режим через драйвер.
Можно попробовать в Linux узнать номер режима для Linux (и из него уже вычислить номер режима для VESA):
To show all the modes you can use # hwinfo --framebuffer (hwinfo is available in [community]), while at GRUB prompt you can use the vbeinfo command