ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ АССЕМБЛЕРА
ПОД MS-DOS

1998 год
Новиков Максим Глебович.

Глава 1. Подготовка виртуальной среды к созданию первой программы

Вам, наверное, говорили, что в программировании нет ничего сверхъестественного. Может это и так, но программирование на ассемблере — удел магов. И моя задача — научить вас этой магии.

Предположительно вы умеете:

  1. Читать и писать по-русски;
  2. Складывать, умножать, вычитать и делить до разумных пределов :-)
  3. Пользоваться операционной оболочкой DOS Navigator или ей подобной, а также встроенным в эту оболочку текстовым редактором.

Если последний пункт вас насторожил, то скорее всего вы кроме операционной системы Windows и написанных для Windows программ (Word, Exсel, Internet Explorer и т.п.) ничего не знаете (а именно так учат на ускоренных компьютерysх курсах). В этом случае вам предварительно необходимо узнать, что такое голый DOS, чем эта операционная система (DOS) отличается от операционной системы Windows, а также, для чего нужна операционная оболочка DOS Navigator. Обучение этому не входит в рамки наших занятий.

Также вы имеете в своем распоряжении:

1. IBM-совместимый компьютер с установленной на него операционной системой (любой, умеющий запускать DOS-приложения). Подойдет MS-DOS или WINDOWS.

2. Установленную на компьютер операционную оболочку для DOS типа DOS Navigator, Connect, Volkov Сommander или Norton Commander. Настоятельно рекомендую установить DOS Navigator, если вы этого еще почему-либо не сделали. Весь последующий материал будет ориентирован на работу именно с этой операционной оболочкой, как наиболее удобной для программирования.

3. Пакет программ ассемблера.

Существует множество разных ассемблеров, которые можно скачать, например, с http://www.sysbin.com/download.html. Перечислю некоторые из них:

MASM — Макроассемблер от Майкрософт
TASM — Турбоассемблер от Борланд
WASM — Ассемблер от Watcom
A86 (A386) — Автор — Eric Isaacson
GAS — (GNU Assembler)
NASM — The Netwide Assembler
FASM — Thomasz Grysztar's Flat Assembler
HLA — Randall Hyde's High Level Assembler
GoAsm — Jeremy Gordon's GoTools Assembler

Каждый имеет свои особенности, но для программирования под DOS нам больше всего подойдёт TASM.

Минимальный комплект TASM, нужный нам — это:

  • tasm.exe — собственно, ассемблер;
  • tlink.exe — компоновщик (линковщик, редактор связей);

и вспомогательные программы для компоновщика:

  • rtm.exe
  • dpmi16bi.ovl
  • dpmi32vm.ovl

Чаще всего все вышеперечисленные, а также многие другие файлы располагаются в каталоге C:\TASM\BIN. Если это так, пропишите к этому каталогу путь в переменной PATH. Для этого с помощью текстового редактора откройте файл autoexec.bat в корневом каталоге диска «С:», найдите там слово PATH c вереницей путей, перечисленных через точку с запятой, и напишите на следующей строке:

path=C:\tasm\bin;%PATH%

Если у вас иной путь к этим файлам, пропишите свой.

В Windows NT (2000, XP) вместо файлов autoexec.bat и config.sys применяются файлы AUTOEXEC.NT и CONFIG.NT, которые располагаются в папке C:\WINDOWS\system32. Если название папок в пути содержит пробелы, путь надо взять в кавычки, например:

path="C:\Program Files\Tasm\bin";%PATH%

Теперь, после того, как путь к вашим файлам прописан, вы можете запустить любой из них, находясь в любом другом каталоге или даже на другом диске. Эта возможность нам пригодится. Кстати, этот прием работает для любых программ и каталогов. Надо только указать соответствующий путь к этим программам. Пропишите, например, путь к вашей операционной оболочке, если вы этого еще не сделали. Вот пример дополненной строки PATH:

path=c:\tasm\bin;c:\dn;%PATH%

Как вы уже поняли из вышеприведенной строки, программа операционной оболочки DOS Navigator на моем компьютере расположена в каталоге c:\dn.

Теперь нам осталось сохранить изменения на диске и перезагрузить компьютер, чтобы они вступили в силу, поскольку компьютер читает файл autoexec.bat и выполняет указанные в нем программы только один раз, при начальной загрузке.

Глава 2. Первая программа. Процесс создания.

Теперь займемся созданием простейшей программы. Цель этой главы — понять, как все происходит, и научиться пользоваться минимальным набором программ, с помощью которых мы и создадим нашу программу.

Кстати, чтобы внести в наш разговор атмосферу индивидуальности занятий, предлагаю перейти на «ты». :-) Типа, заигрываю с читателем. Ведь когда я пишу эти строки я представляю не какую-то безликую аудиторию, а отдельного человека — тебя, уважаемый читатель. К тому же при других обстоятельствах мы ведь вполне могли бы быть знакомы. :)

Итак, продолжим… Сейчас у тебя должна быть запущена операционная оболочка DOS Navigator. Вероятно, одна из ее панелей отображает каталог с вышеупомянутыми файлами ассемблера (tasm, tlink и т.д.). Выйди из этого каталога наружу (предположительно в каталог TASM), и создай рядом каталог MYPROG1. Для этого нажми «F7», и в открывшемся окне напиши имя каталога. Затем нажми «ENTER».

В текущей панели найди образовавшийся каталог и войди в него. Разумеется, пока он пуст. Здесь будет располагаться файл исходного текста нашей программы, а после компиляции здесь образуется наша программа.

Теперь давай создадим исходный файл нашей программы. Пишется исходный файл (исходник) в самом обычном текстовом редакторе. Идеально для нас подойдет встроенный редактор DOS Navigator'а. Так как пока файла нет вообще, надо создать его. Для этого нажми на клавишу «SHIFT», и, удерживая ее, кратковременно нажми «F4». Затем отпусти обе клавиши. В открывшемся окошке напечатай имя создаваемого файла, например: proga1.asm. Затем нажми «ENTER».

Перед нами раскрылось окно текстового редактора. Если ты сейчас начнешь нажимать на буквенные клавиши, на экране будут печататься соответствующие им буквы. Ниже содержится исходный текст программы. Перепиши его один к одному.


.model tiny
.code
org 256

b:  mov dx,264
    mov ah,9
    int 33
    ret

db 'hello$'
end b

Вот и все. Твоя первая программа написана! Она выводит слово «hello» на экран. Теперь сохраним ее на диске (F2) и выйдем из редактора, (ESC). В открывшейся панели DOS Navigator'a появился наш файл — «proga.asm». Теперь, если нам понадобится внести в него изменения, достаточно будет установить на его имя курсор и нажать «F4» (уже без «SHIFT»).

Итак, у нас появился исходник. Теперь осталось только превратить этот файл в настоящую программу. Для этого служат две программы, без которых мы никак не сможем обойтись. Это ассемблер tasm и компоновщик (редактор связей) tlink. Пути к ним прописаны в файле autoexec.bat (надеюсь, ты не забыл перезагрузить компьютер после исправления этого файла), поэтому достаточно набрать в командной строке следующее:

tasm proga1

и затем нажать «ENTER».

На мгновение панели DOS Navigator'а скроются, на черном фоне под ними промелькнут какие-то надписи, и панели появятся вновь. Чтобы увидеть, что там написал нам ассемблер, удерживая клавишу «Ctrl» кратковременно нажми на латинскую «O». Панели скроются, и мы увидим нечто подобное:

Turbo Assembler Version 4.1 Copyright (c) 1988, 1996 Borland International
Assembling file: proga1.ASM
Error messages: None
Warning messages: None
Passes: 1
Remaining memory: 387k

Если напротив слов «Error messages» или «Warning messages» вместо «None» написано что-то другое — значит, в исходном тексте ты допустил какую-то ошибку. Включи панели повторным нажатием «Ctrl-o», войди в исходник (по «F4»), и проверь все еще раз.

После удачной компиляции в текущем каталоге рядом с файлом «proga1.asm» появится еще один файл — «proga1.obj». Это так называемый объектный файл. Это полуфабрикат, предназначенный для другой программы — tlink. Теперь напишем в командной строке:

tlink /t proga1

и нажмем «Enter». Панели опять мигнут. Посмотрим, что под ними (Ctrl-o).

Turbo Link Version 7.1.30.1. Copyright (c) 1987, 1996 Borland International

Если после этой надписи больше ничего не появилось, значит программа tlink успешно создала исполнимый файл — программу «proga1.com». Если же появились какие-либо зловещие надписи, предваряемые словами Warning (предупреждение) или Error (ошибка), следует еще раз проверить исходный текст, а также правильность операций компиляции.

При успешной компиляции в текущем каталоге появятся два новых файла (теперь их в общей сложности 4). Это файл полученной программы — «proga1.com» и файл карты памяти — «proga1.map», который нам в ближайшем будущем не пригодится. Но оставим его в покое и попробуем запустить нашу программу proga1.com. Наведи на него курсор и нажми «ENTER». Оп-па! Ну что? Панели мигнули. Посмотри, что под ними…

Если ты не обнаружишь там слово «hello» или, чего доброго, компьютер зависнет, проверь снова свой исходник. Будь уверен — ошибка там! Разумеется, если ты запускал именно «proga1.com», а не получившийся почему-то «proga1.exe». Если получился именно «proga1.exe» — значит, при компиляции после слова tlink ты забыл поставить опцию /t.

Итак, файл «proga1.com» запустился. Заработала твоя первая программа, написанная на ассемблере. Поздравляю! За сим позволь откланяться. Встретимся на втором занятии, где мы познакомимся с внутренним устройством компьютера и двоичной системой счисления — основой всей компьютерной техники. Тебе еще не сорвало крышку? Скоро сорвет.

[Вернуться в начало]

Главы 3–4 [Оставить отзыв в гостевой]
Hosted by uCoz