Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Магия регистра EBX ? Проблема с использованием регистра EBX 
:(
    Опции темы
VAV
  Дата 21.1.2004, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 10.10.2002
Где: Мурманская обл. г . Мончегорск

Репутация: нет
Всего: нет



Привет Усем.
Столкнулся я пока с не понятной мне проблемой.
Пишу прогу на асме (MASM32 v.8). Прога - просто диалог с парой кнопок. Пользую Win 98.
Все ОК! Но когда я её допишу, то работать она будет Win 2000 и Win NT.
Пускаю её на Win 2000... и фигня происходит - вылетае в Win 2000 server, и вываливает
ошибку в Win 2000 pro. sp4.
После проверки выяснил, что глючить начинает, как только используется регистр EBX.
Я воще думал EBX - регистр общего назначения?
Сторожилы, просветите оболдуя... wink.gif

PM MAIL   Вверх
Serzh
Дата 21.1.2004, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 30.9.2003
Где: SPb

Репутация: нет
Всего: нет



да общего... вот тока что ты там делаешь - тебе виднее.
может на 98 прокатывает глюк, а в nt нет
PM MAIL WWW ICQ   Вверх
acp
Дата 22.1.2004, 03:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 4.2.2003
Где: Владимир

Репутация: нет
Всего: 2



Цитата
После проверки выяснил, что глючить начинает, как только используется регистр EBX

Скорее всего, он у тебя используется где-то ещё. А где - невозможно сказать без кода.

Для диалога из двух кнопок, апишные функции, в принципе, одни и те же. Так что большой разницы между NT и 98 здесь нет. Другое дело, если ты используешь какие-то другие функции апи.

Как пример. У меня было интереснее. Программа работала под 2k, глючила под XP. Дело оказалось, всего-навсего, в более строгом подходе 2k к открытию/закрытию хэндлов.

P.S. или у меня глюк, или подобную тему я уже где-то видел... :/

Это сообщение отредактировал(а) acp - 22.1.2004, 03:14
PM WWW ICQ   Вверх
oleg1973
Дата 22.1.2004, 03:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 7
Всего: 34



а точно евх? может евр?


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
VAV
Дата 22.1.2004, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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

PM MAIL   Вверх
Chingachguk
Дата 22.1.2004, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



кажется, DlgProc - процедура обработки сообщений. Она вызывается вин и далее управление переходит к дефолтному win-обработчику. В каком-то смысле это тоже апи-функция, только ты пишешь как-бы довесок к ней. По соглашению вин апи не портят такие регистры как ebx, ebp...


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
VAV
Дата 22.1.2004, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 10.10.2002
Где: Мурманская обл. г . Мончегорск

Репутация: нет
Всего: нет



Цитата(Chingachguk @ 22.1.2004, 07:05)
По соглашению вин апи не портят такие регистры как ebx, ebp...

Все работает если не использовать EBX, ECX ...(и како то ещё, которые я тыкал во время поиска ошибки).
Глюк то не в одной проге. Писал по быстрому шаблон кряка. Тоже диалог, код - раз два и усе!
Застрял на ентих же регистрах(буть они не ладны)
PM MAIL   Вверх
acp
Дата 22.1.2004, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 4.2.2003
Где: Владимир

Репутация: нет
Всего: 2



2VAV
Chingachguk же написал - восстанавливай...
PM WWW ICQ   Вверх
VAV
Дата 22.1.2004, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 10.10.2002
Где: Мурманская обл. г . Мончегорск

Репутация: нет
Всего: нет



Усё понял... исправлюсь...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0615 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.