IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

> Программ на паскале с вставками на ассемблере, как это делать вообще
Венечка
сообщение 14.11.2004 18:58
Сообщение #1





Группа: Пользователи
Сообщений: 8
Пол: Женский

Репутация: -  0  +


Нам на паскале задали написать прогу(требуется создать DOS-программу для просмотра фрагментов содержимого оперативной памяти. Основная цель работы – научиться эффективно пользоваться четырехбайтными адресами реального режима процессоров i80x86.
) с такими требованиями:

-программа использует текстовый режим работы монитора;

-весь вывод на экран производится посредством прямой записи в видеопамять (в диапазон памяти адаптера CGA – сегмент $b800);

-программа выполняется в окне. Это окно исчезает после ее исполнения, при этом восстанавливается исходное содержимое экрана;

-окно состоит из двух полей: поля просмотра фрагмента содержимого памяти и -поля ввода базового адреса;

-после нажатия на ключевую комбинацию клавиш (например клавиша 'Ins' для сегментной части адреса и клавиша 'Del' для смещения) программа позволяет ввести базовый адрес (с которого начинается отображаемый диапазон);

-нажатие на стрелки вверх и вниз вызывает прокрутку содержимого оперативной памяти в окне просмотра;

-нажатие на клавиши 'PgUp' и 'PgDn' вызывает ускоренную прокрутку содержимого;

-в окне отображения выводится несколько (не менее четырех) строк формата: <адрес> - <серия слов>;

-детали ввода базового адреса и вывода дампа памяти оговариваются в вариантах.
Ну вот мое задание:

1) Базовый адрес задается в десятеричном виде одним компонентом – абсолютным номером ячейки и 2)Содержимое выводится в символьном виде сериями по 16 однобайтовых слов.

Я сделала все классно, а препод не принял.... sad.gif Прикололся и говорит перепиши используя ассемблерные вставки... И еще требования:
-Программа предоставляет возможность переключать режимы вывода содержимого памяти во время работы.

-По нажатию функциональных клавиш программа должна перемещаться к указанным в варианте задания структурам данных DOS и демонстрировать их содержимое.

-Содержимое структур данных DOS производится как в любом из трех стандартных режимов, так и в режиме специфическом для данной структуры, то есть с интерпретацией данных в контексте их предназначения (в виде записи с именованными полями).

-Программа получает информацию о расположении структур данных DOS посредством системных запросов, выполняемых через программные прерывания.

-В управлении монитором наряду с прямым доступом к видеопамяти используются функции прерывания BIOS 10h. В частности через BIOS выполняется управление положением курсора.

Как, вообще не представляю?! Я в паскале то не ахти, а тут ещё ассемблер... sad.gif
ОБЪЯСНИТЕ, ПОЖАЛУЙСТА!!


--------------------
Драйв FoReVeR!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
P@sh@
сообщение 15.11.2004 20:06
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 180
Пол: Мужской

Репутация: -  2  +


Венечка
можно начать с процедуры вывода на экран (как раз посредством прямой записи в видеопамять)
procedure ShowString(x,y: word; s: string);
assembler;
asm
 push ds; push si;   {сохраняем важные регистры}
 mov  ax,0B800h; mov  es,ax;  {загружаем сегмент видеопамяти}
 mov  ax,y; mov  dx,160; mul  dx;  {умножаем Y на 80 и на 2}
 mov  di,x; shl  di,1;  {умножаем X на 2}
 add  di,ax;  {складываем Х и Y}
 lds  si,s;    {загружаем адрес строки s}
 xor  ch,ch;  {в старшем байте счетчика цикла ноль}
 lodsb; mov  cl,al;  {загружаем из строки ее длину в младший байт счетчика }
@1:lodsb; stosb;  {напечатать один символ}
 inc  di; loop @1;  {пропустить на экране байт атрибутов и продолжить цикл}
 pop  si; pop  ds;  {восстанавливаем важные регистры}
end;


а объекты обязательно использовать в программе? может лучше без них?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Венечка   Программ на паскале с вставками на ассемблере   14.11.2004 18:58
volvo   Венечка А можно попросить присоединить исходник т...   14.11.2004 19:13
Венечка   Денег, наверно... ;) Исходник именно для моего з...   14.11.2004 19:48
Altair   Ассемблерные вставки? так надо на пасе писать осн...   14.11.2004 20:52
Венечка   Ага, основной код надо на паскале (чтоб его ! ...   14.11.2004 21:10
GoodWind   прекратить самоуничижение :angry: :lol: Ассемб...   14.11.2004 21:15
Altair   Асм это зарезервированно слово для начала вставки...   14.11.2004 21:48
Венечка   В том-то и дело в жизни об ассемблере ничего не з...   14.11.2004 22:39
Altair   Стоп! Если вы не изучали асма, то ва мне могут...   14.11.2004 22:49
Венечка   Представляю как это смешно - НЕ МОЧЬ СДЕЛАТЬ ТАКУ...   14.11.2004 22:50
Венечка   В нашем универе всё возможно!!! А так...   14.11.2004 22:55
Altair   Неа, der Soldaten! :lol: :D   14.11.2004 23:03
volvo   Oleg_Z Offtop: Или не только у нас девушки служ...   14.11.2004 23:11
Altair   Блин, Run-Time-Error у меня! Я и не посмотрел ...   14.11.2004 23:16
Венечка   Ребят! Ну вы насмешили - хоть настроение по...   14.11.2004 23:32
P@sh@   интересно, зачем через BIOS выполняется управление...   15.11.2004 19:38
P@sh@   Венечка можно начать с процедуры вывода на экран (...   15.11.2004 20:06
Венечка   Спасибо, P@sh@! :) Вот гляньте в ехешник - эт...   15.11.2004 22:58


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 27.07.2025 9:25
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"