Программирование на Ассемблере под DOS

         

это своего рода плата за


Наличие многочисленных директив - это своего рода плата за то, что компилятор избавляет нас от необходимости просчитывать адреса. Как говорит дZенская программерская мудрость "любишь кататься, люби и саночки возить"...
Как и в DZEBUG'е, "в TASM'e" мы также должны четко инструктировать компилятор (дабы он в свою очередь также четко проинструктировал процессор) что у нас является кодом, а что - данными...
  Посмотрите на исходник. Весь текст программы у нас хранится между директивами CODESG segment и CODESG ends. Где CODESG - это "имя собственное", "segment" - потому что "CODESG" он, собственно, и есть сегмент :), и "ends" - потому что конец сегмента... (сравните с процедурными директивами).
  Но тут такой вопрос:
  Директива ASSUME производит связывание сегментного решистра CS с "именем собственным".
  Далее у нас следует директива org 100h. Нужна она нам для того, чтобы компилятор понял, что мы хотим получить именно COM-файл, который, как известно, помещается в сегмент памяти начиная со смещения 100 (в общем-то, это необходимое, но вовсе не достаточное условие для получения COM-файл). Директивка очень интересная, о ней мы, надеюсь, еще поговорим подробнее, когда коснемся вирмейкерства.

Содержание раздела