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 однобайтовых слов. Я сделала все классно, а препод не принял.... -Программа предоставляет возможность переключать режимы вывода содержимого памяти во время работы. -По нажатию функциональных клавиш программа должна перемещаться к указанным в варианте задания структурам данных DOS и демонстрировать их содержимое. -Содержимое структур данных DOS производится как в любом из трех стандартных режимов, так и в режиме специфическом для данной структуры, то есть с интерпретацией данных в контексте их предназначения (в виде записи с именованными полями). -Программа получает информацию о расположении структур данных DOS посредством системных запросов, выполняемых через программные прерывания. -В управлении монитором наряду с прямым доступом к видеопамяти используются функции прерывания BIOS 10h. В частности через BIOS выполняется управление положением курсора. Как, вообще не представляю?! Я в паскале то не ахти, а тут ещё ассемблер... ОБЪЯСНИТЕ, ПОЖАЛУЙСТА!! -------------------- Драйв FoReVeR!
|
| volvo |
14.11.2004 19:13
Сообщение
#2
|
|
Гость |
Венечка
А можно попросить присоединить исходник твоей программы? Посмотрим, чего он хочет... |
| Венечка |
14.11.2004 19:48
Сообщение
#3
|
|
Группа: Пользователи Сообщений: 8 Пол: Женский Репутация: 0 |
Денег, наверно... ;)
Исходник именно для моего задания найти не могу, а вот другой иходник, где задание 1)Базовый адрес задается в десятеричном виде двумя компонентами: сегментом и смещениеми 2)Содержимое выводится в восьмеричном виде сериями по 8 однобайтовых слов. Оно с моим почти идентично, там чуток поменять - это не проблема, главно хоть в глаза увидеть как должно быть. Прикрепленные файлы
Labr1_1.txt ( 6.45 килобайт )
Кол-во скачиваний: 329-------------------- Драйв FoReVeR!
|
| Altair |
14.11.2004 20:52
Сообщение
#4
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Цитата Прикололся и говорит перепиши используя ассемблерные вставки... И еще требования: Ассемблерные вставки? так надо на пасе писать основной код что-ли??? ЗЫ: однако вы самокритичны... не надо так... ;) -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
| Венечка |
14.11.2004 21:10
Сообщение
#5
|
|
Группа: Пользователи Сообщений: 8 Пол: Женский Репутация: 0 |
Ага, основной код надо на паскале (чтоб его !
А куда эти вставки? Фиг знает, я поняла что процедуры переписывать надо, там ещё слово "asm" должно быть, какие-то АН, ВН. Я же говорю НУ НЕ ДАНО МНЕ! :ypr: -------------------- Драйв FoReVeR!
|
| GoodWind |
14.11.2004 21:15
Сообщение
#6
|
![]() Автооответчик ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 188 Пол: Мужской Реальное имя: Александр Репутация: 16 |
Цитата НУ НЕ ДАНО МНЕ! прекратить самоуничижение Ассемблер Вы (а можно на "ты" ? ) изучали ? -------------------- Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
|
| Altair |
14.11.2004 21:48
Сообщение
#7
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Цитата там ещё слово "asm" должно быть Асм это зарезервированно слово для начала вставки ассемблерной. Цитата какие-то АН, ВН. Это регистры. AX: AH, AL BX: BH, BK и так далее... -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
| Венечка |
14.11.2004 22:39
Сообщение
#8
|
|
Группа: Пользователи Сообщений: 8 Пол: Женский Репутация: 0 |
Цитата(GoodWind @ 14.11.04 21:15) Ассемблер Вы (а можно на "ты" ? ) изучали ? В том-то и дело в жизни об ассемблере ничего не знаю! (на "ты" можно ;) ) А то что знаю недостаточно для решения этой задачи... Самое главное время на изучение нет, сдавать в пятницу, в эту... -------------------- Драйв FoReVeR!
|
| Altair |
14.11.2004 22:49
Сообщение
#9
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Стоп!
Если вы не изучали асма, то ва мне могут давать такого задания! -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
| Венечка |
14.11.2004 22:50
Сообщение
#10
|
|
Группа: Пользователи Сообщений: 8 Пол: Женский Репутация: 0 |
Цитата А куда эти вставки? Фиг знает, я поняла что процедуры переписывать надо, там ещё слово "asm" должно быть, какие-то АН, ВН. Представляю как это смешно - НЕ МОЧЬ СДЕЛАТЬ ТАКУЮ ПРОГУ, ТОЛЬКО ИЗ_ЗА ТОГО, ЧТО ТОЛКОМ РАЗОБРАТЬСЯ ВРЕМЕНИ НЕ ДАЛИ! Эээх, быть мне дворником :p7: -------------------- Драйв FoReVeR!
|
| Венечка |
14.11.2004 22:55
Сообщение
#11
|
|
Группа: Пользователи Сообщений: 8 Пол: Женский Репутация: 0 |
Цитата(Oleg_Z @ 14.11.04 22:49) Стоп! Если вы не изучали асма, то ва мне могут давать такого задания! В нашем универе всё возможно!!! А так как у нас в группе все ВСЁ понимают, обычным людям никаких объяснений и пояснений не дали. -------------------- Драйв FoReVeR!
|
| Altair |
14.11.2004 23:03
Сообщение
#12
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Цитата Эээх, быть мне дворником Неа, der Soldaten! :D -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
| volvo |
14.11.2004 23:11
Сообщение
#13
|
|
Гость |
Oleg_Z
Offtop: Цитата Я сделала все классно Или не только у нас девушки служат? |
| Altair |
14.11.2004 23:16
Сообщение
#14
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Блин, Run-Time-Error у меня!
Я и не посмотрел профиль, а ник не дочита, мне показалосьт Ванечка! Извините.. тогда надо помочь на 100% Щас ТП установлю ... -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
| Венечка |
14.11.2004 23:32
Сообщение
#15
|
|
Группа: Пользователи Сообщений: 8 Пол: Женский Репутация: 0 |
Цитата Я и не посмотрел профиль, а ник не дочита, мне показалосьт Ванечка! Цитата Неа, der Soldaten Ребят! Ну вы насмешили - хоть настроение подняли! Пасибки -------------------- Драйв FoReVeR!
|
| P@sh@ |
15.11.2004 19:38
Сообщение
#16
|
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 180 Пол: Мужской Репутация: 2 |
интересно, зачем через BIOS выполняется управление положением курсора, если вывод на экран производится посредством прямой записи в видеопамять (в диапазон памяти адаптера CGA – сегмент $b800) ?
и еще, какие структуры данных DOS подразумеваются? |
| P@sh@ |
15.11.2004 20:06
Сообщение
#17
|
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 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
а объекты обязательно использовать в программе? может лучше без них? |
| Венечка |
15.11.2004 22:58
Сообщение
#18
|
|
Группа: Пользователи Сообщений: 8 Пол: Женский Репутация: 0 |
Спасибо, P@sh@!
Вот гляньте в ехешник - это он нам пример привел как должна прога выглядеть после компиляции, а сам код должен быть написан с ассемблерными вставками. Прикрепленные файлы -------------------- Драйв FoReVeR!
|
![]() ![]() |
|
Текстовая версия | 15.11.2025 7:40 |