Проект Оберс -> технологія Linguage:
Ukrainian
English

- Головна - Технологія - Транслятор - Завантаження - Посилання - Про автора -
- Пам'ятай Рембо, ми не примушуємо тебе їхати в Афганістан; там тобі доведеться дуже скрутно; в тебе будуть стріляти; а якщо тебе схопить радянський ОМОН, ми будемо все заперечувати...
Генерал Пентагона

Якщо ви вирішите повторити наведені нижче кроки по створенню програми пам'ятайте: я не відповідаю за наслідки ваших дій. Я не можу знати ні який в вас комп'ютер, ні яка операційна система. Більш того людська мова - не є алгорітмічною мовою я не знаю наперед чи правильно ви мене зрозумієте. Якщо ви надумаєте погратися boot-record жорсткого диска, знайте що це небезпечно для інформації, яка знаходиться на ньому. Наведені нижче дії треба виконувати на комп'ютері з процесором кращим за 80386 з сопроцесором 80387, пам'яттю 4Mb (можливо й менше, не перевіряв). Щоб запустити макроасемблер NASM вам потрібен інтерфейс DPMI і операційна система ДОС (у Віндовс 95 і краще все повинно працювать).

Наша мета - програма яка:

  1. вантажиться з діскети (для відчайдушних - з жорсткого диску);
  2. очищає екран;
  3. друкує класичне "Hello World!";
  4. чекає натискання будь-якої клавіши;
  5. перезавантажує комп'ютер.
Досягаємо мети:
  1. Створюємо файл "HELLO.O2" (тут і надалі регістр літер важливий) у директорії X з наступним текстом;
  2. MODULE HELLO;
    IMPORT vm86,PRIN;
    VAR r:vm86.Регiстри;
    BEGIN
      PRIN.Очисти;
      PRIN.Встанови_координати(34,12);
      PRIN.Друк("Hello World!");
      r.EAX:=0; r.int:=16H;
      IF vm86.Виклик(r)=vm86.Наслiдок_норма THEN END;
      vm86.перезавантаження
    END HELLO.
    Щоб не було проблем з кодуванням літер рекомендую скачати цей файл HELLO.O2
  3. В діректорію X скачуємо файли модулів vm86.O2 (~3K) і PRIN.O2 (~2K)
  4. В діректорію X скачуємо транслятор obers.com (~25K)
  5. Транслюємо програму в текст на макроасемблері (набираємо у командному рядку: obers.com HELLO -dL+)
  6. В діректорію X скачуємо файл макросів macro.mac (~42K)
  7. В діректорію X скачуємо файл макроасемблер "зазіпований" NASM для DOS-32 з рідного сайта sourceforge.net/projects/nasm (~300K) і розпаковуємо його. В директорії X повинен бути файл nasm.exe.
    Якщо в вас нічого не вийшло (качаємо звідси) файл nasm.exe (~453K) і права copying (~25K)
  8. Компілюємо програму (набираємо у командному рядку: nasm HELLO.asm -o HELLO -p macro.mac)
  9. Форматуємо діскету з міткою "HELLO" (набираємо у командному рядку: format a: /V:HELLO)
  10. В діректорію X скачуємо програму для корекції першого сектора setsect.com (~350), та сам перший сектор boot (512)
  11. Модіфікуємо перший сектор (набираємо у командному рядку: setsect A boot)
  12. В діректорію X скачуємо завантажувач loader (~2.3K)
  13. Записуємо завантажувач на діскету (набираємо у командному рядку: copy loader a:)
  14. Записуємо програму на діскету (набираємо у командному рядку: copy HELLO a:)
  15. Перезавантажуємо комп'ютер i вантажимося з діскети (можливо знадобиться встановити потрібну опцію в BIOS)

Як на мене, то не дуже просто, особливо коли досвід в ІТ ще не великий. Постає філософське питання: які будуть мої можливості при використанні цієї технології? Можливості ваші будуть унікальні. Ми створили програму, яка працює в режимі 32-розрядному захищеному режимі процессора i80386, і виконує переривання BIOS в режимі віртуального процесора 8086, розмір програми разом з завантажувачем менше 4K, а операційна система нам не знадобилася! Бажаєте написати BIOS? - трохи перепишіть макроси, і ваша програма може виконуватись прямо з ROM. Пишете програми для контроллерів з процесорами 8086 без сопроцесора? - модифікуйте файл macro.mac і додайте в нього емуляцію обчислень з плаваючою комою. Вас взагалі не цікавлять ці кволі PC? - переписуємо файл macro.mac для вашого макроасемблеру. Хочете створювати програми під різні операційні системи? - тіж самі дії. Мрієте створити свою операційну систему? Розробили свій процесор? Останні два питання - жарти :-). Враховуючи написане вище, я і писав на першій сторінці про нетрівіальні задачі.

Про завантаження з жорсткого диску, яке я згадував вище. Дії тіж самі крім пункту де ми модифікуємо перший сектор диска. Необхідно вказати діск C. Раджу спочатку програмою savesect.com (~315) створити його копію. Схочете повернутися до завантаження попередньої ОС - запишіть його на старе місце. Диск повинен бути з файловою системою FAT12 або FAT16 (loader підтримує тільки ці формати). Мітка диска повинна співпадати з ім'ям вашої програми.





Homepage: www.obers.net.ua
EMail: admin@obers.net.ua
18 Dec 2006 .. 14 May 2007