Форум программистов, компьютерный форум, киберфорум
Наши страницы
FASM
Войти
Регистрация
Восстановить пароль
 
New Asm
0 / 0 / 0
Регистрация: 15.09.2017
Сообщений: 9
1

Как правильно писать процедуру с использованием функции Windows?

16.10.2017, 12:44. Просмотров 298. Ответов 3
Метки нет (Все метки)

Как правильно писать процедуру с использованием функции Windows?

Пробую писать процедуры на FASM.
Простые процедуры получаются, а вот процедура с функцией Windows не компилируется.

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
format PE GUI
include 'F:\ASM\fasmw17164\INCLUDE\win32ax.inc'
 
.code
  start:
 
       call wsp                                                
 
       invoke  MessageBox,HWND_DESKTOP,stri, 'Test',MB_OK,
       invoke  ExitProcess,0
 
    wsp:
        invoke wsprintf, stri, patt, [tst]
        ret
 
  .end start
 
     tst     dd 50h
     patt    db 'Test = %u',0
     stri     db '                  ',0
Как правильно написать, чтобы работало?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2017, 12:44
Ответы с готовыми решениями:

Как правильно писать сайты с использованием php
добрый день. долго время писал на c++(qt)/java Сейчас необходимо написать...

Как правильно писать обращение к функции
Доброго времени суток. Ответе пожалуйста на такие вопросы: 1. Кнопка, на...

Как правильно при определении функции писать название компоненте?
Добрый день, Перелопатил код проекта и решил засунуть повторяющиеся части...

Как писать правильно?
switch (true) { case ($a == $aa and $b == $bb): case ($a == $ab and...

Как писать правильно?
Привет, форумчане... Мой вопрос, больше к профессионалам. Какой из этих двух...

3
R71MT
3716 / 1343 / 292
Регистрация: 29.07.2014
Сообщений: 2,393
Записей в блоге: 5
16.10.2017, 13:52 2
Цитата Сообщение от New Asm Посмотреть сообщение
invoke wsprintf, stri, patt, [tst]
укажи cinvoke (добавь "с" спереди)
printf не очищает за собой стек, поэтому у тебя адрес возврата подменяется
0
New Asm
0 / 0 / 0
Регистрация: 15.09.2017
Сообщений: 9
16.10.2017, 14:08  [ТС] 3
Работает!
Спасибо!

Добавлено через 2 минуты
Работают и call n stdcall одинаково, в чём между ними разница не знаю.
0
Jin X
4188 / 1343 / 158
Регистрация: 14.12.2014
Сообщений: 2,545
Записей в блоге: 7
Завершенные тесты: 2
16.10.2017, 17:47 4
Можно сделать вывод сразу в консоль вот так:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
format  PE Console
entry   start
 
include 'win32axp.inc'
 
.code
 
start:
 
        mov     eax,1
        cinvoke printf, <'Hello world number %i',10>, eax
        invoke  ExitProcess, 0
 
section '.idata' import data readable
 
library kernel32, 'kernel32.dll',\
        msvcrt, 'msvcrt.dll'
 
        import_kernel32
 
import  msvcrt,\
        printf, 'printf'
 
        all_api
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2017, 17:47

Как на писать правильно ?
В одномерном массиве, состоящем из N вещественных элементов, вычислить: 1) ...

Как правильно перекомпилировать под windows функции connect, accept, bind?
компилятор пишет ошибку &quot;переопределение. другая кмпоновка&quot; смотрю про...

Как правильно писать условия (if)
Почему выводит последний метод, хотя не должен выводить его, не так ли? ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru