Rev 4635 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
6699 | clevermous | 1 | format PE console 0.8 |
836 | diamond | 2 | include 'proc32.inc' |
6699 | clevermous | 3 | include '../../../../import.inc' |
836 | diamond | 4 | |
5 | start: |
||
6699 | clevermous | 6 | invoke con_set_title, caption |
836 | diamond | 7 | ; C-equivalent of the following code: |
8 | ; for (ebx=0;ebx<0x100;ebx++) |
||
9 | ; { |
||
10 | ; con_printf(t1,ebx); |
||
11 | ; eax = con_set_flags(ebx); |
||
12 | ; con_write_asciiz(text); |
||
13 | ; con_set_flags(eax); |
||
14 | ; } |
||
15 | ; N.B. For efficiency result of first con_set_flags is not saved |
||
16 | ; in register, but is pushed beforehand to the stack |
||
17 | ; for second con_set_flags. |
||
18 | ; Note that such code cannot be generated by stdcall macros. |
||
19 | xor ebx, ebx |
||
20 | @@: |
||
21 | push ebx |
||
22 | push t1 |
||
23 | call [con_printf] |
||
24 | add esp, 8 |
||
25 | push ebx |
||
26 | call [con_set_flags] |
||
27 | push eax |
||
28 | push text |
||
29 | call [con_write_asciiz] |
||
30 | call [con_set_flags] |
||
31 | inc bl |
||
32 | jnz @b |
||
33 | push text2 |
||
34 | call [con_write_asciiz] |
||
35 | push 0 |
||
36 | call [con_exit] |
||
37 | exit: |
||
38 | xor eax, eax |
||
39 | ret |
||
40 | |||
41 | align 4 |
||
6699 | clevermous | 42 | data import |
43 | library console, 'console.dll' |
||
44 | import console, \ |
||
45 | con_set_title, 'con_set_title', \ |
||
46 | con_write_asciiz, 'con_write_asciiz', \ |
||
47 | con_printf, 'con_printf', \ |
||
48 | con_set_flags, 'con_set_flags', \ |
||
49 | con_exit, 'con_exit' |
||
50 | end data |
||
836 | diamond | 51 | |
52 | caption db 'Console test - colors',0 |
||
53 | t1 db 'Цвет 0x%02X: ',0 |
||
54 | text db 'Вот пример текста.',10,0 |
||
55 | text2 db 27,'[7mА это пример использования ' |
||
56 | db 27,'[1;36;41mEsc' |
||
57 | db 27,'[7m-последовательностей.',10,00x100;ebx++) |