Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача управления другой проге, Только через биос!!! 
:(
    Опции темы
PoluBOG1
  Дата 24.4.2002, 14:47 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Передача управления другой проге , как ето реализовать???
  Вверх
Melancholy
Дата 24.4.2002, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 1.4.2002

Репутация: нет
Всего: нет



грузишь код в память по адресу seg:100h потом делаешь call far seg:100h
это будет работать правильно, ести код расчитан на приращение 100h (COM файл), с EXE'шничком прийдется помудохаться...
если это будет выполнятся с боот сектора, то учти, что пользоваться тебе прийдется только биосовскими интераптами.

ЗЫ че изобретаем то?
PM MAIL ICQ   Вверх
PoluBOG1
  Дата 24.4.2002, 18:07 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А как загрузить код по адресу (как енто реализовать)?
Я просто делаю я пародию на ось :-)
  Вверх
PoluBOG1
  Дата 24.4.2002, 21:08 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Может кто поможет!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  Вверх
Chingachguk
Дата 25.4.2002, 03:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Ну так если твой код, как выше сказали, лежит в com-файле, то его можно разместить в памяти и передать ему управление. Как это сделать ?

Допустим, ты предполагаешь разместить этот com в нескольких секторах дискеты. Например, в Цилиндр=1, Голова=0, сектора с 1 по ... ну сколько у тебя там их ... Разместил. После того, как твой бут получил управление, читай эти сектора(можно по 1-му, можно сразу все) в выбранную тобой память, например - seg:=8000h, ofs:=0. После чтения передавай управление смело на seg:100h - или на seg:0h, если твой ком сгенерен с директивой org 0...


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
Melancholy
Дата 25.4.2002, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 1.4.2002

Репутация: нет
Всего: нет



Да и еще:
1. с EXE'шником запаришся!
2. Не юзай досовские инты - их тем нет вообще.
3. Для выхода из подпрограммы пиши (в коде) retf
ну вроде главное написал... может че и забыл.
PM MAIL ICQ   Вверх
PoluBOG1
Дата 25.4.2002, 20:40 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











1)Скоко секторов на 1.44?
2)У меня есть код чтения секторов в книжке:
mov  ah,02    ;Запрос на чтение
mov  al,01     ; Одного сектора
lea   bx,insert ; Буфер ввода*
mov  ch,05     ;Дорожка 05
mov  cl,03      ;Сектор 03
mov  dh,00     ; Сторона 00
mov dl,01       ;дисковод 01 (В)
Int 13h          ;
* Как описать етот буфер? Ето адресс? Или что?
(Я чесно не знаю HELP PLEEEEEEES!!!!!!!!!!!!;)
  Вверх
Melancholy
Дата 25.4.2002, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 1.4.2002

Репутация: нет
Всего: нет



Байт в секторе - 512
Значения цилиндра - 0..79
Значения секторов - 1..18
Значения головки - 0..1
типа получается, что секторов на диске 80*18*2 = 2880
а размер 2880*512 = 1474560
PM MAIL ICQ   Вверх
Melancholy
Дата 25.4.2002, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 1.4.2002

Репутация: нет
Всего: нет



mov  ah,02    ;Запрос на чтение
mov  al,01     ; Одного сектора
lea   bx,insert ; Буфер ввода*
mov  ch,05     ;Дорожка 05
mov  cl,03      ;Сектор 03
mov  dh,00     ; Сторона 00
mov dl,01       ;дисковод 01 (В)
Int 13h          ;
...
insert db 512 dup(?)

;можешь больше 512 в зависимости от того, сколько секторов будешь читать
; а так сколько попало...
PM MAIL ICQ   Вверх
PoluBOG1
Дата 25.4.2002, 23:29 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А как узнать где в памяти етот insert находится будет
  Вверх
?
  Дата 25.4.2002, 23:33 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











И ещё : Чем кластер от сектора отличается?
  Вверх
Chingachguk
Дата 26.4.2002, 01:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



А я что хочу сказать по этому поводу ? ;)

А вот чего:

1) Число секторов, цилиндров и головок на дискете можно узнать ДИНАМИЧЕСКИ - те от БИОСА, например, так, как делет вирус(выше) - тоже через вызов Int 13h или параметры дискеты валяются в памяти, адрес этой памяти в каком-то векторе, не помню, каком, но для винта он в int 41h;
Это отвяжет тебя от необходимости жестко задавать координты секторов.

2) При чтениии/записи сектора адрес буфера должен быть в ES:bx, так что команды lea bx, buffer будет достаточно только тогда, когда ES настроен;

3) А вот про кластеры я и сам бы хотел узнать. Думаю, что это минимальное число секторов, которое ось отводит под файлы и вообще при приращении файла за размер кластера она опять выделяет кластер-число секторов. Те к биосу это отношения не имеет. ?


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
Melancholy
Дата 26.4.2002, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 1.4.2002

Репутация: нет
Всего: нет



Кластер, это 1 и более сектор. Колличество секторов рассчитывается так, что бы весь диск разбивался на эти кластеры и количество кластеров не должно превышать 65536.
Вроде бы так...
PS Надеюсь, что понятно написал, хотя сам бы не понял... :)
PM MAIL ICQ   Вверх
Melancholy
Дата 26.4.2002, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 1.4.2002

Репутация: нет
Всего: нет



И по поводу числа секторов, цилиндров и головок на дискете.
есть такая функция в биосе, но помоему она читает нулевую дорожку с флопа и от туда берет все данные... но может я и ошибся.
PM MAIL ICQ   Вверх
Gav
Дата 12.6.2006, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 12.6.2006

Репутация: нет
Всего: нет



Помогите, пожалуйста! Зачем нужны кластеры? 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0791 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.