Assembler для начинающих



         

Файлы .com и .exe


    В предыдущем примере рассматривался файл типа .COM.  Однако
    результатом процесса ассемблирования-редактирования связей является
    обычно файл типа .EXE.  Зачем нужен файл типа .COM, если проще
    получить файл типа .COM?
 
      У каждого из обоих типов файлов есть свои преимущества. И чтобы
    принять обоснованное решение о том, какой из них предпочесть в
    каждом конкретном случае, нужно представлять их отличия.
 
      Главное различие между файлами типа .COM и типа .EXE связано с
    форматом записи соответствующего объектного файла на дискете. Оба
    типа файлов являются программами, записанными на машинном языке.
    Программа, записанная в файле типа .COM может сразу выполняться.
    DOS может непосредственно загрузить его в память машины с дискеты.
    После этого DOS передает управление в сегмент памяти, отведенный
    для команд, в точку со смещением 100H. Файл типа .EXE
    непосредственно выполнен быть не может. У соответствующего
    объектного файла, хранящегося на дискете, имеется заголовок. В нем
    содержится информация, сгенерированная редактором связей. Наиболее
    важная ее часть относится к информации, связанной с перемещением. В
    то время, как у файла типа .COM перемещаем один сегмент команд, у
    файла типа .EXE могут быть перемещены многие различные сегменты.
    Это ограничивает максимальный размер файла .COM 64 кбайтами, если
    только программа не подгружает еще и другие сегменты. Файл типа
    .EXE может содержать ряд сегментов, которые динамически
    перемещаются в пределах программной области.
 
      В чем состоит перемещаемость? Во время ассемблирования
    программа расположена в каком-то определенном месте памяти. Как
    было ранее установлено, ассемблер автоматически начинает каждый
    сегмент со смещением 0. В ассемблерных листингах рядом с некоторыми
    адресами стоят символы R. Это означает, что данный адрес является
    перемещаемым. Если программа сдвигается так, что ее начало будет
    иметь смещение, отличное от 0, то упомянутый адрес должен быть



Содержание  Назад  Вперед