ХАНДЫФАР

Функция PrintFormatString принимает строку формата и необязательные аргументы и выдаёт форматированную последовательность символов для вывода. Строка формата может содержать ноль или более директив, которые являются либо литеральными символами для вывода, либо спецификациями кодированного преобразования, описывающими, как форматировать аргумент в выходных данных.

Каждое поле спецификации преобразования представляет собой символ или цифру, обозначающую определённый параметр формата или спецификатор преобразования. Обязательное "поле типа" определяет тип преобразования, которое будет применено к аргументу. Необязательное поле "ширина" управляет другим аспектом формата, таким как начальные пробелы и выравнивание.

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

Аргументы, которые следуют за строкой формата, интерпретируются в соответствии с соответствующим символом типа. Преобразования для типов символов задаются с помощью %c, а однобайтовые строки задаются с помощью %s.

Десятичное число со знаком и без знака задаётся с помощью %d/%i, %d16/%i16 (%d/%i по умолчанию выводит 16-разрядное число) и %d32/%i32 (выводит 32-разрядное число), восьмеричное число задаётся с помощью %o, двоичное число задаётся с помощью %b, шестнадцатеричное число задаётся с помощью %h.

Вещественное число со знаком и без задаётся с помощью %f. Функция выводит только 2 числа после точки. Выравнивание стека не требуется. Чтобы указать количество чисел после точки, воспользуйтесь функцией SetPrecision и укажите в регистре al число выводимих цифр после точки.

С помощью спецификатора %a, можно получить адрес расположения аргумента в сегменте данных.

Ширина поля по левому краю задаётся с помощью %. за которым следует число и символ типа.

Например: "Hello %.4s!"

По умолчанию ширина заполняется пробелами. Если необходимо указать другой символ то, следует использовать следующую последовательность символов: %.#(?), где # это ширина, а ? это символ для заполнения.

Например: "Hello %.4(-)s!"

Спецификатор %* указывает функции PrintFormatString на то, что аргумент передаваемый функции должен быть проигнорирован для вывода на консоль. Символы пробела следующие за %* тоже игнорируются.

Функция PrintFormatString поддерживает управляющие последовательности, такие как \t - Горизонтальная табуляция, выравниванивает по горизонтальной сетке, которая равна 8 символам, \b - backspace, \r - возврат каретки, \n - переход на новую строку, \0 - символ завершения строки.

Первым аргументом функции PrintFormatString должен быть указатель на строку формата в регистре ax, все остальные аргументы должны передаваться через стек используя любой из доступных регистров.

Вещественные числа загружаются на вершину стека математического сопроцессора с помощью инструкции FLD (Загрузить вещественное число).
Made on
Tilda