|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июн 27, 2004 17:20:14 Вывожу на экран число 12345 ....... .data buf db 15 dup(?) ifmt db "%d",0 dig dd 12345 ........ .code ........ invoke wsprintf, ADDR buf, ADDR ifmt, dig invoke WriteConsoleA, stdout, ADDR buf, sizeof buf, ADDR cWritten,0 А если заменить "dig dd" на "dig dw" то как тогда надо изменить ifmt чтобы можно было вывести на экран? |
|
|
Дата: Июн 27, 2004 18:11:20 wsprintf тут не причём. invoke ложит в стек DWORD'ы, так что если написать dig dw - что тогда будет в стеке? |
|
|
Дата: Июн 27, 2004 18:19:44 ясно, а как тогда мне вывести word? |
|
|
Дата: Июн 27, 2004 18:27:38 не все-таки че-то не понял, че он туда положит? положит указатель на word, тока в чем разница, не понял |
|
|
Дата: Июн 27, 2004 19:19:37 ладно, понял надо переписать значение из word в dword и его толкать в стек .data dig dw 12345 dig2 dd ? ...... .code xor eax,eax mov ax, dig mov dig2, eax invoke wsprintf, ADDR buf, ADDR ifmt, dig2 |
|
|
Дата: Июн 27, 2004 19:35:35 · Поправил: S_T_A_S_ [ crazz : все-таки че-то не понял, че он туда положит? положит указатель на word, ] Чтобы invoke положил в стек указатель, надо написать offset или ADDR. (ADDR указывают случае, если адрес нужно вычислять командой LEA, в вашем случае правильней писать offset, т.к адрес известен во время компиляции). В случае с dig, в стек поместится значение. > надо переписать значение из word в dword и его толкать в стек И лучше это делать так: .data dig dw 12345 ...... .code movsx eax, word ptr dig invoke wsprintf, offset buf, offset ifmt, eax |
|
|
Дата: Июн 27, 2004 19:55:33 спасибо за помощь |
|
|
Дата: Июн 28, 2004 18:59:50 А вот другой вопрос. Чем можно преобразовать число с точкой в строку? По-моему, wsprintf не поможет. |
|
|
Дата: Июн 28, 2004 19:06:32 ага, wsprintf про флоаты не знает. а вот msvcrt.dll - знает |
|
|
Дата: Июн 28, 2004 19:46:20 SolidCode Поиск по форуму. |
|
|
Дата: Окт 4, 2004 05:32:32 ssx ага, wsprintf про флоаты не знает. а вот msvcrt.dll - знает А эта библиотека всегда есть в свеже-поставленной Винде любой версии? |
|
|
Дата: Окт 4, 2004 05:47:40 SolidCode "MSVCRT.DLL exists on every Windows 95 with a new service pack installed, or with Microsoft Internet Explorer 4 or later, and on all other Windows 4.x or later (Windows 98, Windows NT 4, or later)." |
|
|
Дата: Окт 4, 2004 12:44:42 CRTDLL.DLL есть даже в Win95 Gold, и в ней есть swprintf. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.205 |