Rev 131 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
31 | halyavin | 1 | macro debug_print str |
2 | { |
||
3 | local ..string, ..label |
||
4 | |||
5 | jmp ..label |
||
6 | ..string db str,0 |
||
7 | ..label: |
||
8 | |||
9 | pushf |
||
10 | pushad |
||
11 | mov edx,..string |
||
12 | call debug_outstr |
||
13 | popad |
||
14 | popf |
||
15 | } |
||
16 | |||
17 | dps fix debug_print |
||
18 | |||
19 | macro debug_print_dec arg |
||
20 | { |
||
21 | pushf |
||
22 | pushad |
||
23 | if ~arg eq eax |
||
24 | mov eax,arg |
||
25 | end if |
||
26 | call debug_outdec |
||
27 | popad |
||
28 | popf |
||
29 | } |
||
30 | |||
31 | dpd fix debug_print_dec |
||
32 | |||
33 | ;--------------------------------- |
||
34 | debug_outdec: ;(eax - num, edi-str) |
||
35 | push 10 ;2 |
||
36 | pop ecx ;1 |
||
37 | push -'0' ;2 |
||
38 | .l0: |
||
39 | xor edx,edx ;2 |
||
40 | div ecx ;2 |
||
41 | push edx ;1 |
||
42 | test eax,eax ;2 |
||
43 | jnz .l0 ;2 |
||
44 | .l1: |
||
45 | pop eax ;1 |
||
46 | add al,'0' ;2 |
||
47 | call debug_outchar ; stosb |
||
48 | jnz .l1 ;2 |
||
49 | ret ;1 |
||
50 | ;--------------------------------- |
||
51 | |||
52 | debug_outchar: ; al - char |
||
53 | pushf |
||
54 | pushad |
||
55 | mov cl,al |
||
56 | mov eax,63 |
||
57 | mov ebx,1 |
||
485 | heavyiron | 58 | mcall |
31 | halyavin | 59 | popad |
60 | popf |
||
61 | ret |
||
62 | |||
63 | debug_outstr: |
||
64 | mov eax,63 |
||
65 | mov ebx,1 |
||
66 | @@: |
||
67 | mov cl,[edx] |
||
68 | test cl,cl |
||
69 | jz @f |
||
70 | int 40h |
||
71 | inc edx |
||
72 | jmp @b |
||
73 | @@: |
||
74 | ret |
||
75 | |||
131 | diamond | 76 | _debug_crlf db 13, 10, 0 |
31 | halyavin | 77 | |
78 | macro newline |
||
79 | { |
||
131 | diamond | 80 | pushf |
81 | pushad |
||
82 | mov edx, _debug_crlf |
||
83 | call debug_outstr |
||
84 | popad |
||
85 | popf |
||
31 | halyavin | 86 | } |
87 | |||
88 | macro print message |
||
89 | { |
||
90 | dps message |
||
91 | newline |
||
92 | } |
||
93 | |||
94 | macro pregs |
||
95 | { |
||
96 | dps "EAX: " |
||
97 | dpd eax |
||
98 | dps " EBX: " |
||
99 | dpd ebx |
||
100 | newline |
||
101 | dps "ECX: " |
||
102 | dpd ecx |
||
103 | dps " EDX: " |
||
104 | dpd edx |
||
105 | newline |
||
106 | } |
||
107 | |||
108 | macro debug_print_hex arg |
||
109 | { |
||
110 | pushf |
||
111 | pushad |
||
112 | if ~arg eq eax |
||
113 | mov eax, arg |
||
114 | end if |
||
115 | call debug_outhex |
||
116 | popad |
||
117 | popf |
||
118 | } |
||
119 | dph fix debug_print_hex |
||
120 | |||
121 | debug_outhex: |
||
122 | ; eax - number |
||
123 | mov edx, 8 |
||
124 | .new_char: |
||
125 | rol eax, 4 |
||
126 | movzx ecx, al |
||
127 | and cl, 0x0f |
||
128 | mov cl, [__hexdigits + ecx] |
||
129 | pushad |
||
130 | mcall 63, 1 |
||
131 | popad |
||
132 | dec edx |
||
133 | jnz .new_char |
||
134 | ret |
||
135 | |||
136 | __hexdigits: |
||
137 | db '0123456789ABCDEF' |