Форум программистов, компьютерный форум, киберфорум
FASM
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
160 / 17 / 0
Регистрация: 14.09.2010
Сообщений: 464
Записей в блоге: 6
1
FASM

Синтаксис: точка в теле макроса struc и звёздочка в описании параметров макроса

17.09.2010, 01:01. Показов 2104. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Код
struc XXXX { 
  .: ; это что имеется ввиду???
;.....
  .hwnd         dd ?  
  .lpVerb       dd ?  
  .lpFile       dd ?  
;.....
  .. = $ - . ; это новая переменная минус длина структуры?

  macro .Runzz hWnd*,pFilename*,pParameters* \{  ; что за звёздочки?
    \local ..okay 
    invoke RtlZeroMemory,.,.. ; тут как насколько я понял экземпляры структуры используются?
    mov [.cbSize],.. 
; итд..
Что можно называть точками??? И для чего можно использовать * в асме?
Если точки одна или две допустимо использовать как имя переменной, тогда мне понятно.

Добавлено через 10 минут
Код
section '.code' executable
start:
        invoke MessageBox,NULL,'',..,MB_OK
exit:
        invoke ExitProcess,NULL

section '.data' readable
.. db 'z',0
впринцыпе две точки можно, но одну нельзя... в макросах чтоль это допустимо? хотелось бы тогда поподробнее об этом.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.09.2010, 01:01
Ответы с готовыми решениями:

Вызов макроса в теле другого макроса
Добрый день! Есть макрос (главный) в теле которого вызывается другой макрос. При выполнении...

Как перевести синтаксис макроса VBA (Excel) в синтаксис Visual FoxPro
Здравствуйте! Скажите пожалуйста, как перевести синтаксис записанного макроса в excel в синтаксис...

Кавычки в теле макроса
Кавычки в теле макроса, как их умудрился юзер написать?? MsgBox "Строка «" & strF & "» найдена в...

Оператор ## и переменная в теле макроса
Добрый день. Столкнулся с такой проблемой, к примеру: #define SQUARE(val) val * 3##val Если...

6
64 / 63 / 3
Регистрация: 16.11.2009
Сообщений: 156
17.09.2010, 12:49 2
1) Одна точка в теле макроса struc заменяется названием реализации струтуры. То-есть если объявить структуру my XXXXX, в теле структуры будет поле с именем "my". А в примере это создает метку "my:", но по-моему это лишнее - структуры сами создают метки со своим именем.
2) В фасме многие символы могут быть в названии переменных. Поэтому две точки это обычное название. В данной структуре XXXXX.. создает не переменную, а compile time constant равную длине структуры.
3) Звездочка после названия аргумента макроса говорит о том, что аргумент обязателен. Если макрос вызвать без аргументов помеченых звёздочками компилер сообщит об ошибке.
1
160 / 17 / 0
Регистрация: 14.09.2010
Сообщений: 464
Записей в блоге: 6
18.09.2010, 18:34  [ТС] 3
1. compile time constant
2. Звездочка после названия аргумента макроса говорит о том, что аргумент обязателен
Пожалуй этого ни в мануале и нигде вообще не написано! Весьма информативный пост!
0
64 / 63 / 3
Регистрация: 16.11.2009
Сообщений: 156
19.09.2010, 00:16 4
Это есть в мануале, но написано мутно, коротко и разбросано по всему тексту. Плохая документация - главный минус фасма.
Константы описаны в Introduction->AssemblySyntax->ConstantsAndLables. Обязательные аргументы к макросам в InstructionSet->PreprocessorDirectives->Macroinstructions.
1
160 / 17 / 0
Регистрация: 14.09.2010
Сообщений: 464
Записей в блоге: 6
19.09.2010, 04:08  [ТС] 5
Цитата Сообщение от Orwomoi Посмотреть сообщение
Это есть в мануале, но написано мутно, коротко и разбросано по всему тексту.
Золотые слова! =)
0
160 / 17 / 0
Регистрация: 14.09.2010
Сообщений: 464
Записей в блоге: 6
22.09.2010, 03:53  [ТС] 6
Код
start:
        invoke MessageBox,0,file,'',MB_OK
exit:
        invoke ExitProcess,NULL

section '.data' readable
        file 'c:\boot.ini':0,1
А почему это не правильно?
Хотелось бы пример как и где можно file использовать.
... и всётаки не понял почему байт нельзя тут инвокнуть?
0
64 / 63 / 3
Регистрация: 16.11.2009
Сообщений: 156
22.09.2010, 17:50 7
Директива "file" вставляет байты в то место, где написана. Но её нельзя использовать как операнд.
Assembler
1
2
3
4
5
6
invoke MessageBox,0,fl,'',MB_OK ;отправить адрес метки
;другой пример
mov eax,dword [fl] ;так-как у метки нет директивы размера надо указывать dword
 
section '.data' readable
fl        file 'c:\boot.ini':0,4 ;fl метка для четырех байт, что появится на месте file после препроцессинга. Не понимаю почему, но dd, dw, db тут не ставятся, а если поставить, будет ошибка
Добавлено через 15 минут
Вот способ указать размер памяти:
Assembler
1
2
3
4
5
6
label fl byte
file 'd:\file.txt':0,43h ;это будет строка
label var dword
file 'd:\file.txt':0,4h  ;это перемнная размера dword
;Теперь
mov eax,[var] ;работает без подсказок
1
22.09.2010, 17:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.09.2010, 17:50
Помогаю со студенческими работами здесь

Запуск макроса из макроса ИЛИ повторение одного и того же кода
Excel Есть код в 10 строк (назовем его "блок"), который повторяется 5 раз в модуле (макросе)....

Вызов макроса по имени макроса в ячейке
Добрый вечер форумяне! существует ли такая возможность, что бы кликнув по определенной ячейке...

Передача параметров из макроса в bash скрипт
Очень нужна ваша помощь, скажите пожалуйста, как передать параметры из макроса в bash скрипт? Всем...

Передача параметров из макроса в форму при её вызове
здравствуйте, как это делается? спасибо


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru