Нестандартная программа, нужна помощь |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
Нестандартная программа, нужна помощь |
cooler |
12.05.2009 22:38
Сообщение
#1
|
Бывалый Группа: Пользователи Сообщений: 178 Пол: Мужской Репутация: 0 |
Необходима помощь с немного нестандартной программой
Такого ещё нигде не встречал Буду рад любой помощи Необходимо написать программу помещения в оперативную память по указанному адресу арифметической команды для 32-разрядного ПК. Входную информацию записывать в смешанном символическом и шестнадцатиричном виде. |
cooler |
14.05.2009 17:13
Сообщение
#2
|
Бывалый Группа: Пользователи Сообщений: 178 Пол: Мужской Репутация: 0 |
Так что никто не знает чем помочь?
|
Lapp |
15.05.2009 3:59
Сообщение
#3
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Так что никто не знает чем помочь? А что тут нестандартного? Компилируешь комаду. Записываешь ее по нужному адресу. Вроде, все.. Нет? Я что-то упускаю?.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
cooler |
15.05.2009 22:00
Сообщение
#4
|
Бывалый Группа: Пользователи Сообщений: 178 Пол: Мужской Репутация: 0 |
А может подскажешь как это сделать?
Я что-то не совсем понимаю. Или где почитать |
Lapp |
15.05.2009 22:20
Сообщение
#5
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
А может подскажешь как это сделать? Скажи, что именно сделать. Что у тебя не получается? Ты извини, я честно не понимаю, что ты хочешь. И, думаю, никто не понимает. Поэтому и не отвечают. Поставь задачу поточнее.-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
cooler |
15.05.2009 22:59
Сообщение
#6
|
Бывалый Группа: Пользователи Сообщений: 178 Пол: Мужской Репутация: 0 |
Я не понимаю что значит:
помещение в оперативную память по указанному адресу арифметической команды Если не трудно, объясни пожалуйста что тут и к чему. Смысл задачи в общем. Мне даже препод не может объяснить толком, т.к решил поэкспериментировать |
Lapp |
15.05.2009 23:13
Сообщение
#7
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Я не понимаю что значит: Смысл тут самый.. как бы это сказать? базовый. Я буду объяснять в общем смысле, поскольку конкретно ассемблером давно не занимался. помещение в оперативную память по указанному адресу арифметической команды Если не трудно, объясни пожалуйста что тут и к чему. Смысл задачи в общем. Команда (грубо говоря) состоит из ее кода (номера) и параметров. Какие именно параметры - зависит от способа адресации. То есть они могут быть непосредственно операндами, а могут быть адресами операндов. Может быть и еще сложнее, если адресация косвенная. Допустим, что код занимает байт и каждый операнд расположен непосредственно в теле команды и тоже занимает байт. Значит, тебе надо подготовить три байта и записать их в память последовательно по нужному адресу. Короче говоря, тебе нужно сделать то, что делает компилятор с ассемблера. Вот и все. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
cooler |
15.05.2009 23:16
Сообщение
#8
|
Бывалый Группа: Пользователи Сообщений: 178 Пол: Мужской Репутация: 0 |
Спасибо, стало намного понятнее. терь надо думать как всё это реализовать
|
volvo |
15.05.2009 23:18
Сообщение
#9
|
Гость |
Цитата Мне даже препод не может объяснить толком, т.к решил поэкспериментировать Ничего себе, эксперименты... Чтоб экспериментировать, вообще-то, надо знать, с чем...На правах догадки: к примеру, была такая древняя программа COM2END, которая дописывала один COM-файл в конец другого EXE или COM-у, так, чтобы при запуске второго сначала запускался первый (это нужно было для простейшего "запароливания", то есть, сначала запускается проверка пароля, "привинченная" к основному файлу и если пароль правильный - то запускается сам основной файл). Не суть важно. Важно, что там надо было какие-то инструкции записывать в начало/конец файла. Вот как это делалось: my_proc proc Потом этот код настраивался как нужно, то есть, вместо нулей записывались вычисленные реальные данные, это делается очень просто: mov bx, new_value_1 ; вычисленное значение №1 Вот и все, кусок кода, определенный в таблице the_code, настроен... Теперь его можно записывать, куда угодно. Хоть в файл, хоть по заданному адресу (если ты вообще имеешь туда доступ, естественно). Еще раз повторяю: это - только догадка. Я совсем не уверен, что твоему преподавателю захотелось поэкспериментировать именно с этим, но во всяком случае похоже... |
cooler |
15.05.2009 23:25
Сообщение
#10
|
Бывалый Группа: Пользователи Сообщений: 178 Пол: Мужской Репутация: 0 |
Как я понимаю, должен ввести команду, например add
А адрес тоже вводить, наверное, а выводить программа должна что-нибудь? volvo, если честно пока навскидку не понял как это к моей программе применить, буду разбираться |
Lapp |
15.05.2009 23:31
Сообщение
#11
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
ввести команду, например add Ну, да.А адрес тоже вводить, наверное, а выводить программа должна что-нибудь? Только, если ты заглянешь в список кодов, то ты увидишь, что комманд add много разных. Поэтому тебе надо уточнить, какая именно, и с какой адресацией. Адрес, ессно, раз он присутствует в условии. Выводить.. ну, выведи, например: "Roger, Sir!!" Добавлено через 2 мин. А в случае, когда адрес недоступен, можешь вывести "oups!..")) -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
cooler |
15.05.2009 23:34
Сообщение
#12
|
Бывалый Группа: Пользователи Сообщений: 178 Пол: Мужской Репутация: 0 |
"Roger, Sir!!" говоришь
Может просто вывести и всё А как я узнаю что он не доступен, обработка нужна будет какая-то? Сообщение отредактировано: cooler - 15.05.2009 23:35 |
Lapp |
15.05.2009 23:54
Сообщение
#13
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
А как я узнаю что он не доступен, обработка нужна будет какая-то? Полагаю, ты получишь типа general protection error, если будешь пытаться писать в защищенную память. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
cooler |
16.05.2009 10:39
Сообщение
#14
|
Бывалый Группа: Пользователи Сообщений: 178 Пол: Мужской Репутация: 0 |
Ещё бы примеры где хоть какие посмотреть, а то только начал в ассембере. В основном на переводы чисел были примеры, а тут сразу
|
cooler |
25.05.2009 20:48
Сообщение
#15
|
Бывалый Группа: Пользователи Сообщений: 178 Пол: Мужской Репутация: 0 |
Ксати задача решена, если интересно могу выложить
|
Текстовая версия | 29.09.2024 5:42 |