Турбо отладчик (Turbo Debugger) 3.0

что правильный вызов подпрограммы состоит


            Заметим, что правильный вызов подпрограммы состоит из вызова
       подпрограммы  из  другой  части  кода,  выполнения подпрограммы и
       возврата из подпрограммы  в  вызывающую  программу.  Не  забудьте
       включать  в каждую подпрограмму инструкцию RET, по которой управ-
       ление будет передаваться в вызывающий код. При  наборе  программы
       эту директиву легко пропустить.  В этом случае ее выполнение  за-
       кончится ошибкой.
                      Генерация неверного типа возврата
       -----------------------------------------------------------------
            Директива PROC действует двояко. Во-первых,  она  определяет
       имя,  по  которому будет вызываться процедура. Во-вторых, она уп-
       равляет типом (ближним или дальним) процедуры.
            Тип процедуры используется Турбо Ассемблером для определения


       того,  какой  тип вызовов нужно генерировать при вызове процедуры
       из того же исходного файла. Тип процедуры также используется  для
       определения  типа инструкции RET, которая выполняется, когда про-
       цедура возвращает управление в вызывающий код.
            Идея здесь очевидна. Инструкции RET в процедуре должны соот-
       ветствовать ее типу, не правда ли?
            И да и нет. Проблема состоит в том, что возможно и часто же-
       лательно  группировать отдельные подпрограммы в единую процедуру;
       и поскольку эти подпрограммы не имеют  соответствующей  директивы
       PROC,  их команды RET соответствуют типу общей процедуры, который
       не обязательно соответствует типу каждой  отдельной подпрограммы.
                       Неправильный порядок операндов
       -----------------------------------------------------------------
            Многие программисты ошибаются и изменяют порядок операндов в
       инструкциях процессора 8086 на обратный. Это, вероятно, связано с
       тем, что строка:
               mov ax,bx
       которая означает "поместить AX в BX", читается слева  направо,  и

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