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

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

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

 
 Ответить  Открыть новую тему 
> Нестандартная программа, нужна помощь
сообщение
Сообщение #1


Бывалый
***

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

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


Необходима помощь с немного нестандартной программой smile.gif
Такого ещё нигде не встречал
Буду рад любой помощи

Необходимо написать программу помещения в оперативную память по указанному адресу арифметической команды для 32-разрядного ПК. Входную информацию записывать в смешанном символическом и шестнадцатиричном виде.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Бывалый
***

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

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


Так что никто не знает чем помочь? smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(cooler @ 14.05.2009 18:13) *
Так что никто не знает чем помочь?
А что тут нестандартного? Компилируешь комаду. Записываешь ее по нужному адресу. Вроде, все..
Нет? Я что-то упускаю?..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Бывалый
***

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

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


А может подскажешь как это сделать?
Я что-то не совсем понимаю. Или где почитать
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(cooler @ 15.05.2009 23:00) *
А может подскажешь как это сделать?
Скажи, что именно сделать. Что у тебя не получается? Ты извини, я честно не понимаю, что ты хочешь. И, думаю, никто не понимает. Поэтому и не отвечают. Поставь задачу поточнее.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Бывалый
***

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

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


Я не понимаю что значит:
помещение в оперативную память по указанному адресу арифметической команды
Если не трудно, объясни пожалуйста что тут и к чему. Смысл задачи в общем.
Мне даже препод не может объяснить толком, т.к решил поэкспериментировать smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(cooler @ 15.05.2009 23:59) *
Я не понимаю что значит:
помещение в оперативную память по указанному адресу арифметической команды
Если не трудно, объясни пожалуйста что тут и к чему. Смысл задачи в общем.
Смысл тут самый.. как бы это сказать? базовый. Я буду объяснять в общем смысле, поскольку конкретно ассемблером давно не занимался.

Команда (грубо говоря) состоит из ее кода (номера) и параметров. Какие именно параметры - зависит от способа адресации. То есть они могут быть непосредственно операндами, а могут быть адресами операндов. Может быть и еще сложнее, если адресация косвенная. Допустим, что код занимает байт и каждый операнд расположен непосредственно в теле команды и тоже занимает байт. Значит, тебе надо подготовить три байта и записать их в память последовательно по нужному адресу.

Короче говоря, тебе нужно сделать то, что делает компилятор с ассемблера. Вот и все.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Бывалый
***

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

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


Спасибо, стало намного понятнее. терь надо думать как всё это реализовать
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Цитата
Мне даже препод не может объяснить толком, т.к решил поэкспериментировать
Ничего себе, эксперименты... Чтоб экспериментировать, вообще-то, надо знать, с чем...

На правах догадки: к примеру, была такая древняя программа COM2END, которая дописывала один COM-файл в конец другого EXE или COM-у, так, чтобы при запуске второго сначала запускался первый (это нужно было для простейшего "запароливания", то есть, сначала запускается проверка пароля, "привинченная" к основному файлу и если пароль правильный - то запускается сам основной файл). Не суть важно. Важно, что там надо было какие-то инструкции записывать в начало/конец файла. Вот как это делалось:
my_proc proc
jmp start_code
the_code label byte
mov ax, cs
m1:
add ax, 0 ; здесь вместо нуля будет первое вычисленное значение
push ax
m2:
mov ax, 0 ; а здесь - второе, вместо нуля
push ax
db 0cbh ; ret
len_the_code equ $-the_code

Потом этот код настраивался как нужно, то есть, вместо нулей записывались вычисленные реальные данные, это делается очень просто:
mov bx, new_value_1 ; вычисленное значение №1
mov word ptr m1[1], bx

mov bx, new_value_2 ; вычисленное значение №1
mov word ptr m2[1], bx

Вот и все, кусок кода, определенный в таблице the_code, настроен... Теперь его можно записывать, куда угодно. Хоть в файл, хоть по заданному адресу (если ты вообще имеешь туда доступ, естественно).

Еще раз повторяю: это - только догадка. Я совсем не уверен, что твоему преподавателю захотелось поэкспериментировать именно с этим, но во всяком случае похоже...

 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Бывалый
***

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

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


Как я понимаю, должен ввести команду, например add
А адрес тоже вводить, наверное, а выводить программа должна что-нибудь? smile.gif
volvo, если честно пока навскидку не понял как это к моей программе применить, буду разбираться
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(cooler @ 16.05.2009 0:25) *
ввести команду, например add
А адрес тоже вводить, наверное, а выводить программа должна что-нибудь?
Ну, да.
Только, если ты заглянешь в список кодов, то ты увидишь, что комманд add много разных. Поэтому тебе надо уточнить, какая именно, и с какой адресацией. Адрес, ессно, раз он присутствует в условии. Выводить.. ну, выведи, например: "Roger, Sir!!" smile.gif

Добавлено через 2 мин.
А в случае, когда адрес недоступен, можешь вывести "oups!.."))


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Бывалый
***

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

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


"Roger, Sir!!" говоришь smile.gif
Может просто вывести и всё
А как я узнаю что он не доступен, обработка нужна будет какая-то?

Сообщение отредактировано: cooler -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(cooler @ 16.05.2009 0:34) *
А как я узнаю что он не доступен, обработка нужна будет какая-то?
Полагаю, ты получишь типа general protection error, если будешь пытаться писать в защищенную память.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Бывалый
***

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

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


Ещё бы примеры где хоть какие посмотреть, а то только начал в ассембере. В основном на переводы чисел были примеры, а тут сразу
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Бывалый
***

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

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


Ксати задача решена, если интересно могу выложить smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 29.03.2024 18:41
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name