![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 | ||
Пользователь
Регистрация: 11.12.2010
Сообщений: 50
|
![]()
Здравствуйте!
Что имеется? Цитата:
Цитата:
main.s Код:
Код:
Информации по этой теме я не нашел. В C есть возможность использовать библиотеку ncurses, следовательно (теоретически) можно скомпилировать нужный код на C с флагом -S, а потом изучать ассемблер, но это, извините меня, извращение (мне хватило такого изучения на первую лабораторную ![]() Собственно возникает вопрос как поставленную задачу можно реализовать? Буду рад любым мыслям по теме, ссылкам на статьи и указанием на подходящие книги. Заранее спасибо. Последний раз редактировалось Osanve; 27.10.2011 в 00:30. |
||
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 28.05.2011
Сообщений: 309
|
![]()
Думаю Вам стоит перейти на ФАСМ, мне кажеться так легче будет.
Адрес видео памяти 0А000h . Пока что все что могу подсказать.
Спеши медленно.
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 11.12.2010
Сообщений: 50
|
![]()
Если переходить на FASM, то значит надо учить новый синтаксис. В принципе попытки были, но он показался интуитивно неясным. Да и в третий раз писать код (сдавал на 32-х разрядах, потом переводил на 64), который делает все то же самое мне, если честно, лень.
A000:0000 - страница видеопамяти для 16-ти битной системы, а я использую 64-х, т.ч. скорее всего адрес будет другой. Правильным вариантом было бы попробовать, но вот незадача: для перехода в видеорежим (13h) требуется 10-ое прерывание (int 10h), в то время как в GAS'е, если я не ошибаюсь, используется только int 0x80 (аналог int 21h, т.е. через это прерывание можно сделать все). Изучал файл /usr/include/asm/unistd_64.h (файл системных вызовов, т.е., например, чтобы вывести текст через прерывания используется именно он), но ничего похожего на обращение к видеопамяти не нашел. Также в директориях /usr/include/asm и /usr/include/asm-generic тоже ничего похожего нет. |
![]() |
![]() |
![]() |
#4 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]() Цитата:
адрес то по умолчанию тот же, врятли он изменен. Цитата:
а 80h это вызовы ядра если память не изменяет. далее, судя по заданию, вы уверены что это вообще для линукса? обычно такие вещи под ДОСом делают. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
||
![]() |
![]() |
![]() |
#5 | |||
Пользователь
Регистрация: 11.12.2010
Сообщений: 50
|
![]() Цитата:
Адресация, если я не ошибаюсь, все равно будет отличаться. Цитата:
Да, именно они. Там от read, write, open и до reboot, chmod и пр. Цитата:
![]() Случайно наткнулся на отсыл к vcs. В мане давался пример программы, который отображает символ и атрибуты экрана (Что это такое? У меня постоянно выводит 0x07) в позиции курсора на второй виртуальной консоли, а затем меняет там цвет фона. Код:
|
|||
![]() |
![]() |
![]() |
#6 | |
Форумчанин
Регистрация: 28.05.2011
Сообщений: 309
|
![]() Цитата:
вот почитать можно о нем.. http://avprog.narod.ru/tmt/SupportedDPMI.html
Спеши медленно.
|
|
![]() |
![]() |
![]() |
#7 | |
Пользователь
Регистрация: 11.12.2010
Сообщений: 50
|
![]() Цитата:
Также там используется DOS (вот например: http://www.avprog.narod.ru/tmt/SupportedDPMI.html#37), следовательно прерывания будут отличаться (в качестве сравнения беру вывод текста в DOS и Linux средствами ассемблера). Или я что-то не понимаю? |
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 28.05.2011
Сообщений: 309
|
![]()
увы, под линь асм код никогда не писал.
кстати как я понимаю, Вы, Osanve, бывалый в кодинге под линь. такой вопрос к Вам, под что удобнее/проще/нужнее писать под линь или вин ?
Спеши медленно.
|
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 11.12.2010
Сообщений: 50
|
![]()
Удобство это субъективное понятие. Для кого-то эталон удобства - MS VS, а для кого-то vim. Т.ч. в этом плане лучше попробовать и то и другое, а потом решить.
На счет простоты... Языки программирования в принципе везде одинаковые, есть различия только в их реализации в каком-то определенном компиляторе. Классический пример, который я привожу по данному поводу: Код:
![]() P.S. ИМХО |
![]() |
![]() |
![]() |
#10 | ||||||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]() Цитата:
Цитата:
Цитата:
Цитата:
так самое верное помоему, а то ведь вам в аудитории же показывать поидее вашу программу. Цитата:
Цитата:
там первые 4байта этого файла это информация терминала(ширина и высота, а также позиция курсора) и далее идут данные уже, байт символ и байт его аттрибутов(и так для всех) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
||||||
![]() |
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа на прямую с видеопамятью | asmars | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 17 | 01.08.2011 16:05 |
Перехват прерываний от клавиатуры и работа с видеопамятью | sunlightik | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 26.02.2010 00:32 |
работа с мышью! | _Timon | Помощь студентам | 1 | 20.01.2009 23:29 |
Работа с видеопамятью | IgorArhangel | Общие вопросы C/C++ | 0 | 20.12.2008 22:46 |
Работа с мышью | Amery | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 4 | 28.05.2008 21:19 |