|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Окт 7, 2003 00:44:45 Глянул в MASM32 цикл FOR Он выглядит так For Variable<1,2,3,4,5> Endm А можно ли как-нибудь сделать так: For Variable=1 to 5 Спасибо. |
|
|
Дата: Окт 7, 2003 00:49:32 Может лучше использовать While со счётчиком? |
|
|
Дата: Окт 7, 2003 00:56:29 CyberRat For Variable=1 to 5 Использовать VB..? К сожалению, ни FASM, ни MASM не поддерживают использование регулярных выражений в макросах :). |
|
|
Дата: Окт 7, 2003 01:07:49 Да уж, привычка вторая натура. Дело в том что я изучая MASM32 решил написать некоторое подобие компилируемого Бейсика. Вернее сказать конвертер из одного синтаксиса в другой. А затем компиляцию полученного файла с помощью ML. Даже название уже придумал - "Parazite Basic". Так что, скорее всего, все мои следующие вопросы будут иметь схожий характер. Не обижайтесь если что не так. Смеяться тоже нежелательно. А то я надуюсь :) Можете ли вы можете предложить что нибудь схожее. Может простой цикл через CX? |
|
|
Дата: Окт 7, 2003 01:22:42 Я делал так (вместо ECX можно использовать другой регистр): mov ecx,Min .while ecx<=Max push ecx mov Variable,ecx ... pop ecx add ecx,Step .endwПолучается цикл от Min до Max с шагом Step. Не очень красиво с mov, зато не приходится постоянно использовать push и pop. |
|
|
Дата: Окт 7, 2003 01:36:24 Хм, в принципе неплохое тело. Спасибо. А с FOR, значит, прийдётся растаться? |
|
|
Дата: Окт 7, 2003 01:57:48 · Поправил: Sk. Inc. С каким FOR? Если ты имеешь в виду тот, который в MASM'e, то это макрокоманда, и на самом деле, при компиляции, все что находится внутри ее (между for и endm) копируется столько раз, сколько цифер в <>, с заменой Variable на эту цифру. Пример: For Variable<1,2,3,4,5> invoke GetDlgItem,hDlg,Variable EndmРазложится при компиляции в код: invoke GetDlgItem,hDlg,1 invoke GetDlgItem,hDlg,2 invoke GetDlgItem,hDlg,3 invoke GetDlgItem,hDlg,4 invoke GetDlgItem,hDlg,5 |
|
|
Дата: Окт 7, 2003 02:05:06 Что такое макрос я впринципе уже понял. Ну ладно, знач не судьба. Но ведь while это тоже макрос. Под простым циклом через CX я имел ввиду как это делалось в ДОСе. |
|
|
Дата: Окт 7, 2003 02:18:14 Да, while тоже макрос, но его отличие в том, что он разложится при компиляции на команды сравнения/установки_флагов (cmp, test, or и т.д.) и на условные переходы (je, jne, jl, jz и т.д.). Поэтому цикл будет выполняться не в процессе компиляции как у for, а в процессе выполнения программы. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.069 |