Андрей Михайлович wrote:
Code:
draw_integer:
mov eax, 47
mov ebx, 00000000000000000001000000000000b
mov ecx, [mistakes]
mov edx, 70*65536+25
mov esi, 0x00AA0000
int 0x40
...
mistaktes dd 0x10
взято из
http://diamond.kolibrios.org/klbr_doc.chm:
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 установлен = не выводить ведущие нули числа
В приведённом коде bh равно 16, а не 0, 1 ил 2, да и биты 16-21(сколько цифр отображать) нулевые.
Если я правильно понял, код должен выводить десятичное число 16-ю цифрами. Тогда в ebx нужно записать 00000000000100000000000000000000b. Ещё проще и удобнее использовать запись в 16-ричном виде: 0x00100000.
На всякий случай:
ebx=0x11223344
bx=0x3344
bh=0x33
bl=0x44