Вопрос № 71774: Здравствуйте!По мотивам тамы резидентов попробовал напипсать следю код. НО он не работает :(. объясните пожалуйста где ошибка...Вопрос № 71842: Здраствуйте, уважаемые эксперты!
У меня вопрос по ассемблеру в частности по WinAPI.
1. Как вывести системное время прямо в окно программы(если можно подробно)
2. Можно ли на ассемблере с помощью WinAPI создавать такие формы как Label в De...Вопрос № 71891: Здрасвуйте!
Скажите как проверить чётное число или нет?!!...
Вопрос № 71.774
Здравствуйте!По мотивам тамы резидентов попробовал напипсать следю код. НО он не работает :(. объясните пожалуйста где ошибка
Приложение:
Отправлен: 20.01.2007, 09:20
Вопрос задал: ATZATZ (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Евгений Иванов
Здравствуйте, ATZATZ!
А что именно вы хотите получить? Искажение регистров вы получили, это точно, поэтому наверное, система и зависает. Сохраняйте все регистры через PUSHA.
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор) Россия, Нижний Новгород Тел.: +78313145721 Организация: M2Media.ru Адрес: Нижний Новгород, ул.Малая Ямская WWW:Eugene Ivanov ICQ: 214889076 ---- Ответ отправлен: 20.01.2007, 15:58
Отвечает: Стас
Здравствуйте, ATZATZ!
1) Получается что вы запретили все 21 функции кроме 9, и ту подменили... Честно говоря не знаю как поведет себя система, но наверняка это будет похоже на зависание, ведь даже выход из проги (ah=4ch) не сработает и прога вылетит с ошибкой.
2) Вызов call dword ptr cs:[vect_21h] не корректен. Вот представте что должно произойти:
вы делаете длинный call, в стек идут (ДВА!!!) регистры CS:IP дальше начинает работать int21, по окончании в нем стоит iret который извлекает из стека ТРИ!!! регистра CS:IP:флаги. Ошибка. Правильно pushf:call dword...
Тут надо заметить что выходить из своей обработки следует сохраним флаги которые вам дала int21, а то программы не получат сообщения об ошибках (CF) или получат ложные сообщения об ошибках.
3) jmp dword ptr cs:[vect_21h] КРАЙНЕ не корректен так как у текущей проги по этому адресу ничего нет. Адрес int21 остался в резиденте.
4) может еще чтото я пропустил, смотрите...
Приложение:
Ответ отправил: Стас (статус: Специалист)
Ответ отправлен: 21.01.2007, 03:33 Оценка за ответ: 5 Комментарий оценки: Спасибо Стас!Особенно за pushf/iret!
Вопрос № 71.842
Здраствуйте, уважаемые эксперты!
У меня вопрос по ассемблеру в частности по WinAPI.
1. Как вывести системное время прямо в окно программы(если можно подробно)
2. Можно ли на ассемблере с помощью WinAPI создавать такие формы как Label в Delphi (очень удобно им пользоваться в Delphi).
С глубоким уважением Stalker.
sub edi,edi ;=FALSE
mov esi,[Skin]
call SetState,ebx
or edi,eax
Call GetLocalTime,ofs newTime
call PrintTime,[hDCMain],edi
;add
jmp @@exit0
;--------------------------------------------------------------
; Выводит в DC текущее время
; IN -> hdc - DC для вывода
; fPaint = FALSE - не перерисовывать, если нет изменений
; = TRUE - перерисовывать всё
;
proc PrintTime
ARG hDC:dword,fPaint:dword
USES esi,edi,ebx
mov esi,[Skin]
mov edi,ofs tCrdOut0
sub eax,eax
mov ebx,eax
mov ax,[(t SYSTEMTIME edi+LenCrdOut0+LenCrdIn0+size SYSTEMTIME).wHour]
cmp [fPaint],0
jnz @@m1
cmp ax,[(t SYSTEMTIME edi+LenCrdOut0+LenCrdIn0).wHour]
jz @@m2
@m1:
cmp [Ini.f12or24],FALSE
jnz @@m1_0
cmp al,13
jc @@m1_0
sub al,12
@m1_0:
mov bl,10
div bl
mov ebx,eax
sub ah,ah
LenCrdIn0 = 10*4
time SYSTEMTIME ?
newTime SYSTEMTIME ?
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор) Россия, Нижний Новгород Тел.: +78313145721 Организация: M2Media.ru Адрес: Нижний Новгород, ул.Малая Ямская WWW:Eugene Ivanov ICQ: 214889076 ---- Ответ отправлен: 20.01.2007, 19:41
Отвечает: QDSota
Здравствуйте, Stalker-vir!
2) В ассемблере есть стандартный класс STATIC - аналог label.
Создать текст:
invoke CreateWindowEx,0,ADDR LabelClass,ADDR Caption,WS_CHILD+WS_VISIBLE,x,y,width,height,hwnd,hCode,hInstance,NULL
...
LabelClass db "Static",0
Caption db "Заголовок вашего окна",0
hwnd dd HWND_окна_куда_ставиться_текст
hCode dd КОД_передаваемый_материнскому_окну_для_обработки_событий
--------- Открыть глаза навстречу солнцу
Ответ отправил: QDSota (статус: Профессионал) Россия, Зеленоград Тел.: 8-916-53-43-916 ICQ: 84611301 ---- Ответ отправлен: 23.01.2007, 09:35
Вопрос № 71.891
Здрасвуйте!
Скажите как проверить чётное число или нет?!!
Отправлен: 21.01.2007, 01:54
Вопрос задал: chikanok (статус: 3-ий класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Евгений Иванов
Здравствуйте, chikanok!
Проверяй нулевой бит.
test ax, 1
jz чётное
успехов.
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор) Россия, Нижний Новгород Тел.: +78313145721 Организация: M2Media.ru Адрес: Нижний Новгород, ул.Малая Ямская WWW:Eugene Ivanov ICQ: 214889076 ---- Ответ отправлен: 21.01.2007, 01:59