Difference between revisions of "SysFn47/ru"

From KolibriOS wiki
Jump to navigation Jump to search
(Created page with ''''Функция 47 - вывод числа в окно''' ---- '''Параметры:''' * eax = 47 - номер функции * ebx = параметры преобразов...')
 
m
 
(6 intermediate revisions by 4 users not shown)
Line 1: Line 1:
'''Функция 47 - вывод числа в окно'''
+
'''Функция 47''' - вывод числа в окно
  
 
----
 
----
'''Параметры:'''
+
Параметры:
 
* eax = 47 - номер функции
 
* eax = 47 - номер функции
 
* ebx = параметры преобразования числа в текст:
 
* ebx = параметры преобразования числа в текст:
** bl = 0 - ecx содержит число
+
:* bl = 0 - ecx содержит число
** bl = 1 - ecx содержит указатель на dword/qword-число
+
:* bl = 1 - ecx содержит указатель на dword/qword-число
** bh = 0 - отображать в десятичной системе счисления
+
:* bh = 0 - отображать в десятичной системе счисления
** bh = 1 - отображать в шестнадцатеричной системе
+
:* bh = 1 - отображать в шестнадцатеричной системе
** bh = 2 - отображать в двоичной системе
+
:* bh = 2 - отображать в двоичной системе
** биты 16-21 = сколько цифр отображать
+
:* биты 16-21 = сколько цифр отображать
** биты 22-29 зарезервированы и должны быть установлены в 0
+
:* биты 22-29 зарезервированы и должны быть установлены в 0
** бит 30 установлен = выводить qword (64-битное число);
+
:* бит 30 установлен = выводить qword (64-битное число);
*** (при этом должно быть bl = 1)
+
::при этом должно быть bl = 1
** бит 31 установлен = не выводить ведущие нули числа
+
:* бит 31 установлен = не выводить ведущие нули числа
 
* ecx = число (при bl=0) или указатель (при bl=1)
 
* ecx = число (при bl=0) или указатель (при bl=1)
 
* edx = [координата по оси x]*65536 + [координата по оси y]
 
* edx = [координата по оси x]*65536 + [координата по оси y]
* esi = 0xX0RRGGBB:
+
* esi = 0xXXRRGGBB, где
** RR, GG, BB задают цвет
+
:* RR, GG, BB задают цвет текста
** X = ABnn (биты)
+
:* XX=0B0FCSSS (биты):
*** nn = шрифт (0/1)
+
::* B=1 - закрашивать фон (цвет = edi)
*** A игнорируется
+
::* F задает шрифт:
*** B=1 - закрашивать фон цветом edi
+
::: 0 = 6x9
+
::: 1 = 8x16
'''Возвращаемое значение:'''
+
::* C=0 - рисовать в окно, С=1 - рисовать в буфер (edi)
 +
::* SSS = (множитель размера)-1, то-есть 0 = x1, 7 = x8
 +
Возвращаемое значение:
 
* функция не возвращает значения
 
* функция не возвращает значения
 
+
Замечания:
'''Замечания:'''
 
 
* Указанная длина не должна превосходить 60.
 
* Указанная длина не должна превосходить 60.
* Выводится ровно указанное количество цифр.  
+
* Выводится ровно указанное количество цифр. Если число мало и может быть записано меньшим количеством цифр, оно дополняется ведущими нулями; если число велико и не может быть записано таким количеством цифр, "лишние" ведущие цифры обрезаются.
** Если число мало и может быть записано меньшим количеством цифр, оно дополняется ведущими нулями;  
+
* Подсказка: если нужно вывести число в десятичном виде, без лидирующих нулей, и кол-во цифр = n; то ecx = 0x800n0000. Почитать как это произошло можно [http://wiki.kolibrios.org/wiki/%D0%90%D1%81%D1%81%D0%B5%D0%BC%D0%B1%D0%BB%D0%B5%D1%80_-_FAQ здесь]
** если число велико и не может быть записано таким количеством цифр, "лишние" ведущие цифры обрезаются.
 
* Параметры шрифтов указаны в описании [[SysFn04/ru|функции 4]].
 
  
 +
'''Константы для регистров:'''
 +
::eax - SF_DRAW_NUMBER (47)
  
 
{{System_functions}}
 
{{System_functions}}
 
[[Category: SysCalls]]
 
[[Category: SysCalls]]

Latest revision as of 11:39, 28 February 2021

Функция 47 - вывод числа в окно


Параметры:

  • eax = 47 - номер функции
  • ebx = параметры преобразования числа в текст:
  • bl = 0 - ecx содержит число
  • bl = 1 - ecx содержит указатель на dword/qword-число
  • bh = 0 - отображать в десятичной системе счисления
  • bh = 1 - отображать в шестнадцатеричной системе
  • bh = 2 - отображать в двоичной системе
  • биты 16-21 = сколько цифр отображать
  • биты 22-29 зарезервированы и должны быть установлены в 0
  • бит 30 установлен = выводить qword (64-битное число);
при этом должно быть bl = 1
  • бит 31 установлен = не выводить ведущие нули числа
  • ecx = число (при bl=0) или указатель (при bl=1)
  • edx = [координата по оси x]*65536 + [координата по оси y]
  • esi = 0xXXRRGGBB, где
  • RR, GG, BB задают цвет текста
  • XX=0B0FCSSS (биты):
  • B=1 - закрашивать фон (цвет = edi)
  • F задает шрифт:
0 = 6x9
1 = 8x16
  • C=0 - рисовать в окно, С=1 - рисовать в буфер (edi)
  • SSS = (множитель размера)-1, то-есть 0 = x1, 7 = x8

Возвращаемое значение:

  • функция не возвращает значения

Замечания:

  • Указанная длина не должна превосходить 60.
  • Выводится ровно указанное количество цифр. Если число мало и может быть записано меньшим количеством цифр, оно дополняется ведущими нулями; если число велико и не может быть записано таким количеством цифр, "лишние" ведущие цифры обрезаются.
  • Подсказка: если нужно вывести число в десятичном виде, без лидирующих нулей, и кол-во цифр = n; то ecx = 0x800n0000. Почитать как это произошло можно здесь

Константы для регистров:

eax - SF_DRAW_NUMBER (47)