![]() |
|
|
![]()
|
|
| VAV |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 10.10.2002 Где: Мурманская обл. г . Мончегорск Репутация: нет Всего: нет |
Привет Усем.
Столкнулся я пока с не понятной мне проблемой. Пишу прогу на асме (MASM32 v.8). Прога - просто диалог с парой кнопок. Пользую Win 98. Все ОК! Но когда я её допишу, то работать она будет Win 2000 и Win NT. Пускаю её на Win 2000... и фигня происходит - вылетае в Win 2000 server, и вываливает ошибку в Win 2000 pro. sp4. После проверки выяснил, что глючить начинает, как только используется регистр EBX. Я воще думал EBX - регистр общего назначения? Сторожилы, просветите оболдуя... |
|||
|
||||
| Serzh |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 30.9.2003 Где: SPb Репутация: нет Всего: нет |
да общего... вот тока что ты там делаешь - тебе виднее.
может на 98 прокатывает глюк, а в nt нет |
|||
|
||||
| acp |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 4.2.2003 Где: Владимир Репутация: нет Всего: 2 |
Скорее всего, он у тебя используется где-то ещё. А где - невозможно сказать без кода. Для диалога из двух кнопок, апишные функции, в принципе, одни и те же. Так что большой разницы между NT и 98 здесь нет. Другое дело, если ты используешь какие-то другие функции апи. Как пример. У меня было интереснее. Программа работала под 2k, глючила под XP. Дело оказалось, всего-навсего, в более строгом подходе 2k к открытию/закрытию хэндлов. P.S. или у меня глюк, или подобную тему я уже где-то видел... :/ Это сообщение отредактировал(а) acp - 22.1.2004, 03:14 |
|||
|
||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 7 Всего: 34 |
а точно евх? может евр?
-------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| VAV |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 10.10.2002 Где: Мурманская обл. г . Мончегорск Репутация: нет Всего: нет |
.386
.model flat, stdcall ;32 bit memory model option casemap :none ;case sensitive include Macros.asm include Copy_Arh.inc .code start: invoke GetModuleHandle,NULL mov hInstance,eax invoke InitCommonControls invoke DialogBoxParam,hInstance,IDD_DIALOG1,NULL,addr DlgProc,NULL invoke ExitProcess,0 ;################################################################# DlgProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM LOCAL StrBuf[100] :byte LOCAL wYear:DWORD,wMonth:DWORD,wDay:DWORD mov eax,uMsg .if eax==WM_INITDIALOG invoke CreateFile,ADDR FileName,GENERIC_READ,NULL,NULL,OPEN_EXISTING,NULL,NULL ;// Открываем филе mov hFile,eax .if hFile==INVALID_HANDLE_VALUE invoke MessageBox,hWin,SADD("Not File !!!"),SADD("Eror!"),MB_OK return FALSE .else invoke GetFileTime,hFile,ADDR CreationTime,ADDR LastAccessTime,ADDR LastWriteTime ;invoke FileTimeToLocalFileTime,ADDR LastWriteTime,ADDR LocalFileTime invoke FileTimeToSystemTime,ADDR LastWriteTime,ADDR SystemTime .if eax==0 invoke MessageBox,hWin,SADD("Не может взять(конвертировать)время изменения Филе !!!"),SADD("!!!"),MB_OK return FALSE .endif .endif invoke CloseHandle,hFile .elseif eax==WM_COMMAND mov eax,wParam and eax,0000FFFFh .if eax==1002 ;----------------------------- рабочий вариант ------------------------------------------------------ invoke SendDlgItemMessage,hWin,1001,LB_ADDSTRING,0,SADD("Привет, как дела") mov ax,SystemTime.wYear cwde mov wYear,eax mov ax,SystemTime.wMonth cwde mov wMonth,eax mov ax,SystemTime.wDay cwde mov wDay,eax invoke wsprintf,ADDR StrBuf,SADD("%#04u_%#02u_%#02u"),wYear,wMonth,wDay ;----------------------------- Нерабочий вариант в Win 2000 ---------------------------------------- ; mov ax,SystemTime.wYear ; cwde ; mov edx,eax ; ; mov ax,SystemTime.wMonth ; cwde ; mov ebx,eax ; ; mov ax,SystemTime.wDay ; cwde ; invoke wsprintfa,ADDR StrBuf,SADD("%#04u_%#02u_%#02u"),edx,ebx,eax ;--------------------------------------------------------------------------------------------------- invoke SendDlgItemMessage,hWin,1001,LB_ADDSTRING,0,ADDR StrBuf ;......................... ;......................... ;......................... ;......................... .endif .elseif eax==WM_CLOSE invoke EndDialog,hWin,0 .else mov eax,FALSE ret .endif mov eax,TRUE ret DlgProc endp end start |
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
кажется, DlgProc - процедура обработки сообщений. Она вызывается вин и далее управление переходит к дефолтному win-обработчику. В каком-то смысле это тоже апи-функция, только ты пишешь как-бы довесок к ней. По соглашению вин апи не портят такие регистры как ebx, ebp...
-------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| VAV |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 10.10.2002 Где: Мурманская обл. г . Мончегорск Репутация: нет Всего: нет |
Все работает если не использовать EBX, ECX ...(и како то ещё, которые я тыкал во время поиска ошибки). Глюк то не в одной проге. Писал по быстрому шаблон кряка. Тоже диалог, код - раз два и усе! Застрял на ентих же регистрах(буть они не ладны) |
|||
|
||||
| acp |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 4.2.2003 Где: Владимир Репутация: нет Всего: 2 |
2VAV
Chingachguk же написал - восстанавливай... |
|||
|
||||
| VAV |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 10.10.2002 Где: Мурманская обл. г . Мончегорск Репутация: нет Всего: нет |
Усё понял... исправлюсь...
|
|||
|
||||
![]()
|
| Правила форума "Asm: Общие вопросы" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |