|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Ноя 1, 2003 18:38:08 Приветствую всех! Помогите разобраться. Так работает: msg_loop: invoke GetMessage, msg, 0, 0, 0 or eax,eax jz end_loop invoke TranslateMessage,msg invoke DispatchMessage,msg jmp msg_loop end_loop: invoke ExitProcess, [msg.wParam] А так не работает: msg_loop: invoke GetMessage, msg, 0, 0, 0 if ~eax ; <----- тут выдаёт "invalid value" invoke ExitProcess, [msg.wParam] end if invoke TranslateMessage, msg invoke DispatchMessage, msg jmp msg_loop По докам вроде всё правильно. Может просто я торможу, хелп плиз. |
|
|
Дата: Ноя 1, 2003 19:25:37 if работает до компиляции, т.е. с их использованием можно определять какие куски кода засовывать в исполняемый файл. Таким образом нельзя использовать их для проверки условий возникающих во время выполнения программы. Для этого есть макросы __IF и т.п. Они определены во включаемых файлах. |
|
|
Дата: Ноя 1, 2003 22:50:23 · Поправил: 640kb Выдержки из доков: ... "You should note that "if" directive is processed at assembly stage and therefore it doesn't affect any preprocessor directives..." ... if count>0 mov cx,count rep movsb end if... Если я правильно понимаю, то это: if count>0именно проверка условия возникшего во время выполнения проги. |
|
|
Дата: Ноя 1, 2003 23:20:59 Нет, здесь сказано, что эта команда не влияет на директивы препроцессора, и выполняется в момент трансляции. Т.е. она не влияет на определения типа equ и fix. Эта конструкция if count>0 mov cx,count rep movsb end if скомпилирует mov cx,count rep movsb только если ранее была объявлена числовая константа count больше нуля. Так если числовая константа была объявлена count = 3, то этот кусок кода попадёт в программу mov cx,3 rep movsb Хочу обратить внимание на то, что count это не переменная а константа. |
|
|
Дата: Ноя 2, 2003 11:41:58 Спасибо, стало понятно. В принципе я уже немного разобрался с макросами .if, .еndif и т.д., но ещё привыкнуть нужно. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.064 |