|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
29.01.2012, 15:05 | #1 |
Участник клуба
Регистрация: 30.07.2009
Сообщений: 1,601
|
FASM и WinAPI(WriteConsoleA)
Добрый день. Мне очень стыдно задавать такой вопрос. Я отходил от асм на время, надо было с++ изучить, теперь вернулся. Но как тогда застопорился на этой проблеме, так на ней и остался.
Я приведу простейший код. На масм(с корректировками) он работает, а вот fasm наотрез отказывается его выполнять. Находил много подобных моей тем, но все они остались нетронуты и ушли в небытие. Код:
Надеюсь этой темой однозначно решу общую проблему и уберу мысли о переходе с fasm на masm. Заранее благодарю. |
29.01.2012, 15:58 | #2 |
Форумчанин
Регистрация: 11.01.2012
Сообщений: 177
|
во-перых, не
invoke GetStdHandle, -11 а invoke GetStdHandle, STD_OUTPUT_HANDLE во-вторых, не mov DWORD[stdout], eax а просто mov [stdout], eax в-третьих, addr не нужен вообще и не забывает квадратные скобки invoke WriteConsoleA, [stdout], message, 6, cWritten, 0 FASM это вам не MASM тут всё чётко и без лишних дирректив, которые только замусоривают код программы в-четвёртых, прежде чем задавать такие глупые вопросы, надо посмотреть хотя парочку исходников (коих в папке FASM предостаточно) и подумать тем органом который вам заменяет мозг вместо sizeof() должно быть lstrlen, это же относится и к высокоуровневым языкам
progromore.i2p - первый русскоязычный портал программистов в скрытосети
|
29.01.2012, 16:31 | #3 |
Участник клуба
Регистрация: 30.07.2009
Сообщений: 1,601
|
Спасибо, я многое извлек из вашего поста. lstrlen - это вроде функция WinAPI? Я почему о sizeof заговорил. Дело в том, что ее я заметил в учебнике Крупника, она находилась в WriteConsoleA и узнавала длину массива символов. Буду проводить эксперименты с lstrlen. Еще раз спасибо.
|
29.01.2012, 16:48 | #4 |
Форумчанин
Регистрация: 16.01.2011
Сообщений: 325
|
_PROGRAMM_
Код:
|
29.01.2012, 17:23 | #5 |
Форумчанин
Регистрация: 23.04.2009
Сообщений: 346
|
Самое главное что я извлек из #2 это то, что мозг, который у ТС чем то заменен, несомненно заменен у автора #2 чувством собственной важности и илитарности.
lstrlen-то вот как раз и не нужна для подсчета длины статических строк, которая не изменяется все равно (size вроде в fasm, или же объявите длину как уже показано в посте выше) dword указывающий на разрядность записываемых данных должен бы быть очевиден тк регистр из которого пишутся данные и его разрядность и так определены однозначно, но для масм32 это, например не всегда справедливо и dword ptr нужен addr это что то типа директивы сложной адресации локальных или же глобальных переменных(в масм32). То есть если имеющуюся глобальную переменную можно записать и так: offset _glob(масм32) или _glob(fasm), то локальные переменные будут уже высчитываться отталкиваясь от ebp с помощь lea и push'иться в eax регистре (вероятно в fasm и не так - 'обратитесь к местному авторитету'(с)К&Р)
Нет, ну правда..
|
29.01.2012, 17:28 | #6 |
Форумчанин
Регистрация: 23.04.2009
Сообщений: 346
|
Ну и в секции .data нужно бы объявлять переменные не вопросительным знаком. Для неинициализированных переменных существует секция .data?
Нет, ну правда..
|
29.01.2012, 18:07 | #7 | |||
Форумчанин
Регистрация: 11.01.2012
Сообщений: 177
|
Цитата:
Цитата:
Цитата:
вообще в FASM этими диррективани лучше не пользоваться, так как это всего лишь обычные макросы, и введены они чтобы что не вызывать разрыв шаблона при переходе с MASM или TASM (царство ему небесное)
progromore.i2p - первый русскоязычный портал программистов в скрытосети
Последний раз редактировалось Rock-n-Rolla; 29.01.2012 в 18:11. |
|||
29.01.2012, 18:13 | #8 | ||||
Участник клуба
Регистрация: 30.07.2009
Сообщений: 1,601
|
Из-за того, что я учусь на будущее, этот вопрос просто так не оставлю.
Цитата:
Цитата:
Цитата:
Цитата:
-- Извините меня. Я ступил. Когда экспериментировал с lstrlen у меня ничего не получалось. Сейчас все исправил Код:
Всем спасибо. Дополнения к теме приветствуются. Последний раз редактировалось _PROGRAMM_; 29.01.2012 в 18:34. |
||||
29.01.2012, 19:24 | #9 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
Код:
Код:
Rock-n-Rolla всё правильно сказал, прежде чем задавать такие тупые вопросы, надо хотя головой немножно подумать или хотя бы заюзать поисковик. и вообще я люблю когда появляются такие форумчане (которые отвечают так, как должен был ответить модератор) |
29.01.2012, 21:24 | #10 |
Форумчанин
Регистрация: 23.04.2009
Сообщений: 346
|
ТС на моей памяти не флудил тупыми темами, сам сказал, что чувстсвует глупость своего вопроса, но ничего поделать с собой не может, почему бы не ответить ему без указания на какие либо недостатки?
В фасме .data .data? .text .import и прочие .ololo не знаю макросы они там или нет, но это всего лишь указание ассемблеру на создание секции в пе-модуле с заданными атрибутами. Да, возможностей больше, чем в масм32. Ну, а какие-то разрывы шаблонов при знании пе-структуры, думаю, ни с кем случиться не могут при переходе на фасм.
Нет, ну правда..
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Чем отличаеться fasm от fasm editor&? | TotKtoNado | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 5 | 07.11.2011 17:00 |
FASM + RegCreateKeyEx | WebbMan | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 6 | 01.08.2011 15:27 |
FASM арифметика | kka495 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 28.04.2011 17:06 |
FASM 1 курс | Sobaka_ru | Помощь студентам | 2 | 29.12.2010 18:10 |
LEA [FASM] | m32 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 10 | 03.10.2010 13:57 |