541 lines
28 KiB
Plaintext
541 lines
28 KiB
Plaintext
1
|
|
2 %macro jzfar 1
|
|
3 jnz %%skip
|
|
4 jmp %1
|
|
5 %%skip:
|
|
6
|
|
7 %endmacro
|
|
8
|
|
9 [global _writeCursorPosition]
|
|
10 [global _getCursorPosition]
|
|
11 [global _putc]
|
|
12 [global _puts]
|
|
13 [global _printf]
|
|
14 [global _console_scroll]
|
|
15 [global _console_cls]
|
|
16 [global _putHex]
|
|
17 [global _putDec]
|
|
18 [global _putDecu]
|
|
19
|
|
20
|
|
21 ;
|
|
22 ;void writeCursorPosition(word pos)
|
|
23 ;
|
|
24 _writeCursorPosition:
|
|
25 00000000 55 push ebp
|
|
26 00000001 89E5 mov ebp, esp
|
|
27
|
|
28 00000003 50 push eax
|
|
29 00000004 53 push ebx
|
|
30 00000005 52 push edx
|
|
31
|
|
32 00000006 8B4508 mov eax, [ebp+8] ;cursor position in ax
|
|
33
|
|
34 00000009 88C3 mov bl, al
|
|
35 0000000B 66BAD403 mov dx, 0x03D4
|
|
36 0000000F B00E mov al, 0x0E
|
|
37 00000011 EE out dx, al
|
|
38
|
|
39 00000012 6642 inc dx
|
|
40 00000014 88E0 mov al, ah
|
|
41 00000016 EE out dx, al
|
|
42
|
|
43 00000017 664A dec dx
|
|
44 00000019 B00F mov al, 0x0F
|
|
45 0000001B EE out dx, al
|
|
46
|
|
47 0000001C 6642 inc dx
|
|
48 0000001E 88D8 mov al, bl
|
|
49 00000020 EE out dx, al
|
|
50
|
|
51 00000021 5A pop edx
|
|
52 00000022 5B pop ebx
|
|
53 00000023 58 pop eax
|
|
54 00000024 5D pop ebp
|
|
55
|
|
56 00000025 C3 ret
|
|
57
|
|
58
|
|
59 ;
|
|
60 ;word getCursorPosition()
|
|
61 ;
|
|
62 _getCursorPosition:
|
|
63 00000026 53 push ebx
|
|
64 00000027 52 push edx
|
|
65
|
|
66 00000028 31C0 xor eax, eax
|
|
67 0000002A 66BAD403 mov dx, 0x03D4
|
|
68 0000002E B00E mov al, 0x0E
|
|
69 00000030 EE out dx, al
|
|
70
|
|
71 00000031 6642 inc dx
|
|
72 00000033 EC in al, dx
|
|
73 00000034 88C3 mov bl, al
|
|
74
|
|
75 00000036 664A dec dx
|
|
76 00000038 B00F mov al, 0x0F
|
|
77 0000003A EE out dx, al
|
|
78
|
|
79 0000003B 6642 inc dx
|
|
80 0000003D EC in al, dx
|
|
81 0000003E 88DC mov ah, bl
|
|
82
|
|
83 00000040 5A pop edx
|
|
84 00000041 5B pop ebx
|
|
85
|
|
86 00000042 C3 ret
|
|
87
|
|
88
|
|
89 ;
|
|
90 ;int putc(int chr)
|
|
91 ;
|
|
92 _putc:
|
|
93 00000043 55 push ebp
|
|
94 00000044 89E5 mov ebp, esp
|
|
95 00000046 53 push ebx
|
|
96 00000047 51 push ecx
|
|
97 00000048 52 push edx
|
|
98
|
|
99 00000049 E8D8FFFFFF call _getCursorPosition
|
|
100 0000004E 89C3 mov ebx, eax
|
|
101 00000050 89D9 mov ecx, ebx
|
|
102
|
|
103 00000052 8B4508 mov eax, [ebp+8] ;al=character
|
|
104 00000055 3C0A cmp al, 10 ;newline
|
|
105 00000057 7436 jz putc_newline
|
|
106 00000059 3C09 cmp al, 9 ;tab
|
|
107 0000005B 746B jz putc_tab
|
|
108
|
|
109 0000005D D1E3 shl ebx, 1
|
|
110 0000005F 81C300800B00 add ebx, 0xb8000
|
|
111 00000065 B407 mov ah, 0x07
|
|
112 00000067 668903 mov [ebx], ax
|
|
113 0000006A 89C8 mov eax, ecx
|
|
114 0000006C 40 inc eax
|
|
115 0000006D 3DD0070000 cmp eax, 2000
|
|
116 00000072 750A jnz putc_writeit2
|
|
117 00000074 E86C010000 call _console_scroll
|
|
118 00000079 B880070000 mov eax, 2000-80
|
|
119 putc_writeit2:
|
|
120 0000007E 50 push eax
|
|
121 0000007F E87CFFFFFF call _writeCursorPosition
|
|
122 00000084 81C404000000 add esp, 4
|
|
123 0000008A E96E000000 jmp putc_done
|
|
124
|
|
125 putc_newline:
|
|
126 0000008F 89D8 mov eax, ebx ;eax = cursor position
|
|
127 00000091 BB50000000 mov ebx, 80
|
|
128 00000096 31D2 xor edx, edx
|
|
129 00000098 66F7F3 div bx ;ax=dx:ax/bx, dx=remainder
|
|
130 0000009B 66BB5000 mov bx, 80
|
|
131 0000009F 6629D3 sub bx, dx
|
|
132 000000A2 89C8 mov eax, ecx
|
|
133 000000A4 01D8 add eax, ebx ;eax = new cursor position
|
|
134 000000A6 3DD0070000 cmp eax, 2000
|
|
135 000000AB 750A jnz putc_newline_writeit2
|
|
136 000000AD E833010000 call _console_scroll
|
|
137 000000B2 B880070000 mov eax, 2000-80 ;beginning of last row
|
|
138 putc_newline_writeit2:
|
|
139 000000B7 50 push eax
|
|
140 000000B8 E843FFFFFF call _writeCursorPosition
|
|
141 000000BD 81C404000000 add esp, 4
|
|
142 000000C3 E935000000 jmp putc_done
|
|
143
|
|
144 putc_tab:
|
|
145 000000C8 89D8 mov eax, ebx ;eax = cursor position
|
|
146 000000CA BB08000000 mov ebx, 8
|
|
147 000000CF F6F3 div bl ;al=ax/bl, ah=remainder
|
|
148 000000D1 31D2 xor edx, edx
|
|
149 000000D3 88E2 mov dl, ah
|
|
150 000000D5 66BB0800 mov bx, 8
|
|
151 000000D9 6629D3 sub bx, dx
|
|
152 000000DC 89C8 mov eax, ecx
|
|
153 000000DE 01D8 add eax, ebx ;eax = new cursor position
|
|
154 000000E0 3DD0070000 cmp eax, 2000
|
|
155 000000E5 750A jnz putc_tab_writeit2
|
|
156 000000E7 E8F9000000 call _console_scroll
|
|
157 000000EC B880070000 mov eax, 2000-80 ;beginning of last row
|
|
158 putc_tab_writeit2:
|
|
159 000000F1 50 push eax
|
|
160 000000F2 E809FFFFFF call _writeCursorPosition
|
|
161 000000F7 81C404000000 add esp, 4
|
|
162
|
|
163 putc_done:
|
|
164 000000FD 5A pop edx
|
|
165 000000FE 59 pop ecx
|
|
166 000000FF 5B pop ebx
|
|
167 00000100 5D pop ebp
|
|
168
|
|
169 00000101 C3 ret
|
|
170
|
|
171
|
|
172
|
|
173 ;
|
|
174 ;void printf(char *fmt, ... )
|
|
175 ;
|
|
176 _printf:
|
|
177 00000102 55 push ebp
|
|
178 00000103 89E5 mov ebp, esp
|
|
179 00000105 60 pusha
|
|
180 00000106 8B5D08 mov ebx, [ebp+8] ;ebx = position in format string
|
|
181 00000109 89EE mov esi, ebp
|
|
182 0000010B 81C60C000000 add esi, 12 ;esi = to next variable arg
|
|
183 00000111 31C9 xor ecx, ecx ;ecx used if we encounter a '%'
|
|
184 printf_loop:
|
|
185 00000113 8A03 mov al, [ebx]
|
|
186 00000115 43 inc ebx
|
|
187 00000116 3C00 cmp al, 0
|
|
188 jzfar printf_done
|
|
189 00000118 7505 <1> jnz %%skip
|
|
190 0000011A E9C3000000 <1> jmp %1
|
|
191 <1> %%skip:
|
|
192 <1>
|
|
193 0000011F 81F901000000 cmp ecx, 1
|
|
194 00000125 7417 jz printf_special
|
|
195 00000127 3C25 cmp al, '%'
|
|
196 jzfar printf_percent
|
|
197 00000129 7505 <1> jnz %%skip
|
|
198 0000012B E9A8000000 <1> jmp %1
|
|
199 <1> %%skip:
|
|
200 <1>
|
|
201
|
|
202 00000130 50 push eax
|
|
203 00000131 E80DFFFFFF call _putc
|
|
204 00000136 81C404000000 add esp, 4
|
|
205 0000013C EBD5 jmp printf_loop
|
|
206
|
|
207 printf_special:
|
|
208 0000013E 31C9 xor ecx, ecx
|
|
209 00000140 3C64 cmp al, 'd'
|
|
210 00000142 7419 jz printf_decimal
|
|
211 00000144 3C75 cmp al, 'u'
|
|
212 00000146 7428 jz printf_decimalu
|
|
213 00000148 3C78 cmp al, 'x'
|
|
214 0000014A 7437 jz printf_hex
|
|
215 0000014C 3C25 cmp al, '%'
|
|
216 0000014E 7446 jz printf_ppercent
|
|
217 00000150 3C73 cmp al, 's'
|
|
218 00000152 7453 jz printf_string
|
|
219 00000154 3C63 cmp al, 'c'
|
|
220 00000156 7462 jz printf_char
|
|
221 00000158 E970000000 jmp printf_special_done
|
|
222
|
|
223 printf_decimal:
|
|
224 0000015D 8B06 mov eax, [esi]
|
|
225 0000015F 50 push eax
|
|
226 00000160 E8FE010000 call _putDec
|
|
227 00000165 81C404000000 add esp, 4
|
|
228 0000016B E95D000000 jmp printf_special_done
|
|
229
|
|
230 printf_decimalu:
|
|
231 00000170 8B06 mov eax, [esi]
|
|
232 00000172 50 push eax
|
|
233 00000173 E823010000 call _putDecu
|
|
234 00000178 81C404000000 add esp, 4
|
|
235 0000017E E94A000000 jmp printf_special_done
|
|
236
|
|
237 printf_hex:
|
|
238 00000183 8B06 mov eax, [esi]
|
|
239 00000185 50 push eax
|
|
240 00000186 E8A2000000 call _putHex
|
|
241 0000018B 81C404000000 add esp, 4
|
|
242 00000191 E937000000 jmp printf_special_done
|
|
243
|
|
244 printf_ppercent:
|
|
245 00000196 50 push eax
|
|
246 00000197 E8A7FEFFFF call _putc
|
|
247 0000019C 81C404000000 add esp, 4
|
|
248 000001A2 E926000000 jmp printf_special_done
|
|
249
|
|
250 printf_string:
|
|
251 000001A7 8B06 mov eax, [esi]
|
|
252 000001A9 50 push eax
|
|
253 000001AA E8CD000000 call _puts
|
|
254 000001AF 81C404000000 add esp, 4
|
|
255 000001B5 E913000000 jmp printf_special_done
|
|
256
|
|
257 printf_char:
|
|
258 000001BA 8B06 mov eax, [esi]
|
|
259 000001BC 50 push eax
|
|
260 000001BD E881FEFFFF call _putc
|
|
261 000001C2 81C404000000 add esp, 4
|
|
262 000001C8 E900000000 jmp printf_special_done
|
|
263
|
|
264 printf_special_done
|
|
265 000001CD 81C604000000 add esi, 4 ;point to next extra argument
|
|
266 000001D3 E93BFFFFFF jmp printf_loop
|
|
267
|
|
268 printf_percent:
|
|
269 000001D8 B901000000 mov ecx, 1
|
|
270 000001DD E931FFFFFF jmp printf_loop
|
|
271
|
|
272
|
|
273 printf_done:
|
|
274 000001E2 61 popa
|
|
275 000001E3 5D pop ebp
|
|
276 000001E4 C3 ret
|
|
277
|
|
278
|
|
279
|
|
280 ;
|
|
281 ;void console_scroll()
|
|
282 ;
|
|
283 _console_scroll:
|
|
284 000001E5 60 pusha
|
|
285 000001E6 BEA0800B00 mov esi, 0xb8000+160
|
|
286 000001EB BF00800B00 mov edi, 0xb8000
|
|
287 000001F0 B9C0030000 mov ecx, 960 ;(2000-80)/2
|
|
288 console_scroll_loop:
|
|
289 000001F5 AD lodsd
|
|
290 000001F6 AB stosd
|
|
291 000001F7 E2FC loop console_scroll_loop
|
|
292 000001F9 66B82007 mov ax, 0x0720
|
|
293 000001FD B950000000 mov ecx, 80
|
|
294 console_scroll_loop2:
|
|
295 00000202 66AB stosw
|
|
296 00000204 E2FC loop console_scroll_loop2
|
|
297 00000206 61 popa
|
|
298 00000207 C3 ret
|
|
299
|
|
300 ;
|
|
301 ;void console_cls()
|
|
302 ;
|
|
303 _console_cls:
|
|
304 00000208 60 pusha
|
|
305 00000209 BF00800B00 mov edi, 0xb8000
|
|
306 0000020E 66B82007 mov ax, 0x0720
|
|
307 00000212 B9D0070000 mov ecx, 2000
|
|
308 console_cls_loop:
|
|
309 00000217 66AB stosw
|
|
310 00000219 E2FC loop console_cls_loop
|
|
311 0000021B 6800000000 push dword 0
|
|
312 00000220 E8DBFDFFFF call _writeCursorPosition
|
|
313 00000225 81C404000000 add esp, 4
|
|
314 0000022B 61 popa
|
|
315 0000022C C3 ret
|
|
316
|
|
317 ;
|
|
318 ;int putHex(dword number)
|
|
319 ;
|
|
320 _putHex:
|
|
321 0000022D 55 push ebp
|
|
322 0000022E 89E5 mov ebp, esp
|
|
323 00000230 60 pusha
|
|
324 00000231 8B4508 mov eax, [ebp+8] ;eax = number to print
|
|
325 00000234 31DB xor ebx, ebx ;we have not printed a character yet
|
|
326 00000236 B908000000 mov ecx, 8 ;counter for number of characters
|
|
327
|
|
328 putHex_loop:
|
|
329 0000023B 50 push eax
|
|
330 0000023C 51 push ecx
|
|
331
|
|
332 0000023D 49 dec ecx
|
|
333 0000023E C1E102 shl ecx, 2 ;edx=counter*4 (amount to shift by)
|
|
334 00000241 D3E8 shr eax, cl
|
|
335 00000243 250F000000 and eax, 0x0F
|
|
336 00000248 80F900 cmp cl, 0
|
|
337 0000024B 7409 jz putHex_notzero ;if number is 0
|
|
338 0000024D 3C00 cmp al, 0
|
|
339 0000024F 7505 jnz putHex_notzero
|
|
340 00000251 80FB00 cmp bl, 0
|
|
341 00000254 741F jz putHex_loop_end
|
|
342 putHex_notzero:
|
|
343 00000256 B301 mov bl, 1
|
|
344 00000258 0530000000 add eax, '0'
|
|
345 0000025D 3D39000000 cmp eax, '9'
|
|
346 00000262 7605 jbe putHex_dontadjust
|
|
347 00000264 0507000000 add eax, 'A'-'9'-1
|
|
348 putHex_dontadjust:
|
|
349 00000269 50 push eax
|
|
350 0000026A E8D4FDFFFF call _putc
|
|
351 0000026F 81C404000000 add esp, 4
|
|
352
|
|
353 putHex_loop_end:
|
|
354 00000275 59 pop ecx
|
|
355 00000276 58 pop eax
|
|
356 00000277 E2C2 loop putHex_loop
|
|
357
|
|
358 00000279 61 popa
|
|
359 0000027A 5D pop ebp
|
|
360 0000027B C3 ret
|
|
361
|
|
362
|
|
363 ;
|
|
364 ;int puts(char *str)
|
|
365 ;
|
|
366 _puts:
|
|
367 0000027C 55 push ebp
|
|
368 0000027D 89E5 mov ebp, esp
|
|
369 0000027F 56 push esi
|
|
370 00000280 50 push eax
|
|
371 00000281 8B7508 mov esi, [ebp+8] ;esi = to string
|
|
372 puts_loop:
|
|
373 00000284 AC lodsb
|
|
374 00000285 3C00 cmp al, 0
|
|
375 00000287 740E jz puts_done
|
|
376 00000289 50 push eax
|
|
377 0000028A E8B4FDFFFF call _putc
|
|
378 0000028F 81C404000000 add esp, 4
|
|
379 00000295 EBED jmp puts_loop
|
|
380
|
|
381 puts_done:
|
|
382 00000297 58 pop eax
|
|
383 00000298 5E pop esi
|
|
384 00000299 5D pop ebp
|
|
385 0000029A C3 ret
|
|
386
|
|
387
|
|
388
|
|
389
|
|
390
|
|
391
|
|
392 _putDecu:
|
|
393 0000029B 55 push ebp
|
|
394 0000029C 89E5 mov ebp, esp
|
|
395 0000029E 81EC18000000 sub esp, 24
|
|
396 000002A4 C745FC01000000 mov DWORD [ebp-4], 1
|
|
397 000002AB C645FB00 mov BYTE [ebp-5], 0
|
|
398 L2:
|
|
399 000002AF 8B5508 mov edx, DWORD [ebp+8]
|
|
400 000002B2 B8CDCCCCCC mov eax, -858993459
|
|
401 000002B7 F7E2 mul edx
|
|
402 000002B9 89D0 mov eax, edx
|
|
403 000002BB C1E803 shr eax, 3
|
|
404 000002BE 3B45FC cmp eax, DWORD [ebp-4]
|
|
405 000002C1 7305 jae L4
|
|
406 000002C3 E912000000 jmp L3
|
|
407 L4:
|
|
408 000002C8 8B45FC mov eax, DWORD [ebp-4]
|
|
409 000002CB 89C2 mov edx, eax
|
|
410 000002CD C1E202 sal edx, 2
|
|
411 000002D0 01C2 add edx, eax
|
|
412 000002D2 8D0412 lea eax, [edx+edx]
|
|
413 000002D5 8945FC mov DWORD [ebp-4], eax
|
|
414 000002D8 EBD5 jmp L2
|
|
415 L3:
|
|
416 000002DA 90 nop
|
|
417 L5:
|
|
418 000002DB 817DFC01000000 cmp DWORD [ebp-4], 1
|
|
419 000002E2 7705 ja L7
|
|
420 000002E4 E959000000 jmp L6
|
|
421 L7:
|
|
422 000002E9 8B5508 mov edx, DWORD [ebp+8]
|
|
423 000002EC 89D0 mov eax, edx
|
|
424 000002EE BA00000000 mov edx, 0
|
|
425 000002F3 F775FC div DWORD [ebp-4]
|
|
426 000002F6 8945F4 mov DWORD [ebp-12], eax
|
|
427 000002F9 8A45F4 mov al, BYTE [ebp-12]
|
|
428 000002FC 8845FB mov BYTE [ebp-5], al
|
|
429 000002FF B800000000 mov eax, 0
|
|
430 00000304 8A45FB mov al, BYTE [ebp-5]
|
|
431 00000307 0FAF45FC imul eax, DWORD [ebp-4]
|
|
432 0000030B 294508 sub DWORD [ebp+8], eax
|
|
433 0000030E 8B55FC mov edx, DWORD [ebp-4]
|
|
434 00000311 B8CDCCCCCC mov eax, -858993459
|
|
435 00000316 F7E2 mul edx
|
|
436 00000318 89D0 mov eax, edx
|
|
437 0000031A C1E803 shr eax, 3
|
|
438 0000031D 8945FC mov DWORD [ebp-4], eax
|
|
439 00000320 8D45FB lea eax, [ebp-5]
|
|
440 00000323 800030 add BYTE [eax], 48
|
|
441 00000326 81EC0C000000 sub esp, 12
|
|
442 0000032C B800000000 mov eax, 0
|
|
443 00000331 8A45FB mov al, BYTE [ebp-5]
|
|
444 00000334 50 push eax
|
|
445 00000335 E809FDFFFF call _putc
|
|
446 0000033A 81C410000000 add esp, 16
|
|
447 00000340 EB99 jmp L5
|
|
448 L6:
|
|
449 00000342 81EC0C000000 sub esp, 12
|
|
450 00000348 8A4508 mov al, BYTE [ebp+8]
|
|
451 0000034B 0530000000 add eax, 48
|
|
452 00000350 25FF000000 and eax, 255
|
|
453 00000355 50 push eax
|
|
454 00000356 E8E8FCFFFF call _putc
|
|
455 0000035B 81C410000000 add esp, 16
|
|
456 00000361 C9 leave
|
|
457 00000362 C3 ret
|
|
458
|
|
459
|
|
460
|
|
461
|
|
462 _putDec:
|
|
463 00000363 55 push ebp
|
|
464 00000364 89E5 mov ebp, esp
|
|
465 00000366 81EC18000000 sub esp, 24
|
|
466 0000036C 817D0800000000 cmp DWORD [ebp+8], 0
|
|
467 00000373 7919 jns L9
|
|
468 00000375 81EC0C000000 sub esp, 12
|
|
469 0000037B 682D000000 push 45
|
|
470 00000380 E8BEFCFFFF call _putc
|
|
471 00000385 81C410000000 add esp, 16
|
|
472 0000038B F75D08 neg DWORD [ebp+8]
|
|
473 L9:
|
|
474 0000038E C745FC01000000 mov DWORD [ebp-4], 1
|
|
475 00000395 C645FB00 mov BYTE [ebp-5], 0
|
|
476 L10:
|
|
477 00000399 8B4508 mov eax, DWORD [ebp+8]
|
|
478 0000039C 3B45FC cmp eax, DWORD [ebp-4]
|
|
479 0000039F 7305 jae L12
|
|
480 000003A1 E912000000 jmp L11
|
|
481 L12:
|
|
482 000003A6 8B45FC mov eax, DWORD [ebp-4]
|
|
483 000003A9 89C2 mov edx, eax
|
|
484 000003AB C1E202 sal edx, 2
|
|
485 000003AE 01C2 add edx, eax
|
|
486 000003B0 8D0412 lea eax, [edx+edx]
|
|
487 000003B3 8945FC mov DWORD [ebp-4], eax
|
|
488 000003B6 EBE1 jmp L10
|
|
489 L11:
|
|
490 000003B8 8B55FC mov edx, DWORD [ebp-4]
|
|
491 000003BB B8CDCCCCCC mov eax, -858993459
|
|
492 000003C0 F7E2 mul edx
|
|
493 000003C2 89D0 mov eax, edx
|
|
494 000003C4 C1E803 shr eax, 3
|
|
495 000003C7 8945FC mov DWORD [ebp-4], eax
|
|
496 L13:
|
|
497 000003CA 817DFC01000000 cmp DWORD [ebp-4], 1
|
|
498 000003D1 7705 ja L15
|
|
499 000003D3 E959000000 jmp L14
|
|
500 L15:
|
|
501 000003D8 8B5508 mov edx, DWORD [ebp+8]
|
|
502 000003DB 89D0 mov eax, edx
|
|
503 000003DD BA00000000 mov edx, 0
|
|
504 000003E2 F775FC div DWORD [ebp-4]
|
|
505 000003E5 8945F4 mov DWORD [ebp-12], eax
|
|
506 000003E8 8A45F4 mov al, BYTE [ebp-12]
|
|
507 000003EB 8845FB mov BYTE [ebp-5], al
|
|
508 000003EE B800000000 mov eax, 0
|
|
509 000003F3 8A45FB mov al, BYTE [ebp-5]
|
|
510 000003F6 0FAF45FC imul eax, DWORD [ebp-4]
|
|
511 000003FA 294508 sub DWORD [ebp+8], eax
|
|
512 000003FD 8B55FC mov edx, DWORD [ebp-4]
|
|
513 00000400 B8CDCCCCCC mov eax, -858993459
|
|
514 00000405 F7E2 mul edx
|
|
515 00000407 89D0 mov eax, edx
|
|
516 00000409 C1E803 shr eax, 3
|
|
517 0000040C 8945FC mov DWORD [ebp-4], eax
|
|
518 0000040F 8D45FB lea eax, [ebp-5]
|
|
519 00000412 800030 add BYTE [eax], 48
|
|
520 00000415 81EC0C000000 sub esp, 12
|
|
521 0000041B B800000000 mov eax, 0
|
|
522 00000420 8A45FB mov al, BYTE [ebp-5]
|
|
523 00000423 50 push eax
|
|
524 00000424 E81AFCFFFF call _putc
|
|
525 00000429 81C410000000 add esp, 16
|
|
526 0000042F EB99 jmp L13
|
|
527 L14:
|
|
528 00000431 81EC0C000000 sub esp, 12
|
|
529 00000437 8A4508 mov al, BYTE [ebp+8]
|
|
530 0000043A 0530000000 add eax, 48
|
|
531 0000043F 25FF000000 and eax, 255
|
|
532 00000444 50 push eax
|
|
533 00000445 E8F9FBFFFF call _putc
|
|
534 0000044A 81C410000000 add esp, 16
|
|
535 00000450 C9 leave
|
|
536 00000451 C3 ret
|
|
537
|
|
538
|
|
539
|
|
540
|