Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2011, 18:54   #1
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию Ошибка в User.inc

Добрый вечер. Перейду сразу к делу. У меня опять проблема с подключением файлов .inc . Вроде бы все, как в книге. Правда, немножко по-другому. Мне нужно вывести любое число.
Код:
.386
.model flat, stdcall
option casemap:none 
include \myasm\include\windows.inc
include \myasm\include\user32.inc
include \myasm\include\kernel32.inc
includelib \myasm\lib\user32.lib
includelib \myasm\lib\kernel32.lib
BUFSIZE edu 15
.data
buf BYTE BUFSIZE dup(?)
imf '%d',0
namber DWORD 25400
Vsize DWORD ?
Handle DWORD ?

.code
start:
invoke GetStdHandle, STD_OUTPUT_HANDLE;
mov Handle, eax
invoke wsprintf, ADDR buf, ADDR Namber, namber
invoke WriteConsoleA, Handle, ADDR buf, BUFSIZE, ADDR Vsize,NULL
invoke ExitProcess, 0
end start
Скриншот я прикрепил. Больше всего интересует первая ошибка.
Изображения
Тип файла: jpg Ошибка.jpg (192.4 Кб, 155 просмотров)

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 12.05.2011, 22:01   #2
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

_PROGRAMM_,BUFSIZE equ 15, не edu.
vadimych вне форума Ответить с цитированием
Старый 13.05.2011, 01:40   #3
HmL
Пользователь
 
Регистрация: 13.05.2011
Сообщений: 17
По умолчанию

Код:
imf '%d',0
не указан размер

Код:
invoke wsprintf, ADDR buf, ADDR Namber, namber
2 ошибки:
1. При использовании директивы option casemap:none Namber и namber являются разными словами.
2. Нужно получить адрес формата строки для преобразования (ADDR imf), а не адрес преобразуемого числа.
HmL вне форума Ответить с цитированием
Старый 14.05.2011, 09:31   #4
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Спасибо Вам.

--

Странно. Первая ошибка все равно осталась. (как я понял, ошибка в user32.inc в строке 9, но я думаю, что это из-за кода)
Код:
.386
.model flat, stdcall
option casemap:none 
include \myasm\include\windows.inc
include \myasm\include\user32.inc
include \myasm\include\kernel32.inc
includelib \myasm\lib\user32.lib
includelib \myasm\lib\kernel32.lib
BUFSIZE equ 15
.data
buf BYTE BUFSIZE dup(?)
imf BYTE'%d',0
namber DWORD 25400
Vsize DWORD ?
Handle DWORD ?

.code
start:
invoke GetStdHandle, STD_OUTPUT_HANDLE;
mov Handle, eax
invoke wsprintf, ADDR buf, ADDR imf, namber
invoke WriteConsoleA, Handle, ADDR buf, BUFSIZE, ADDR Vsize,NULL
invoke ExitProcess, 0
end start

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог

Последний раз редактировалось _PROGRAMM_; 14.05.2011 в 09:38.
_PROGRAMM_ вне форума Ответить с цитированием
Старый 14.05.2011, 16:51   #5
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Может ошибка в файле User32.inc? Хотя после предыдущей своей темы я не уверен.
Вот еще один скриншот ошибки.
Изображения
Тип файла: jpg Безимени-2.jpg (174.2 Кб, 111 просмотров)

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 14.05.2011, 20:46   #6
HmL
Пользователь
 
Регистрация: 13.05.2011
Сообщений: 17
По умолчанию

Какая ОС?
В коде ошибок не вижу + он нормально компилируется.
Покажите файл user32.inc. Попробуйте собрать программу не через Far.
HmL вне форума Ответить с цитированием
Старый 14.05.2011, 22:07   #7
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

У вас конфликтует определение функции wsprintfA из windows.inc с определением (прототипом) этой же функции из user32.inc. Скорее всего эти два инклюда взяты из разных сборок компилятора. Проверьте оба и сделайте одинаково. Например так:

Код:
wsprintfA PROTO C :DWORD,:VARARG
wsprintf equ <wsprintfA>
Вообще не очень понимаю, зачем прототип этой функции оказался в windows.inc. Но, тем не менее, он там обосновался уже давно. Причём в последних версиях уже даже какая то борьба за эту функцию на уровне условной компиляции между инками началась.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 15.05.2011, 11:20   #8
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Цитата:
У вас конфликтует определение функции wsprintfA из windows.inc с определением (прототипом) этой же функции из user32.inc. Скорее всего эти два инклюда взяты из разных сборок компилятора. Проверьте оба и сделайте одинаково. Например так:
Спасибо Вам большое.
Цитата:
Какая ОС?
Я думаю это неважно. Мне говорить о ней стыдно.

Hml, Выложите, пожалуйста, свой Windows.inc и User32.inc. Вдруг кто-то попадет на эту тему с поиска.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 15.05.2011, 11:51   #9
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

_PROGRAMM_, это ведь у Вас пример из Крупника? Поставили бы нормальный
masm32, и не мучились с этими миазмами.
vadimych вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DeviceIOControl в user-mode? chechestor Win Api 2 22.12.2010 11:51
Создание User form Zhene4ka2607 Помощь студентам 6 21.05.2009 18:59
Создание User form Zhene4ka2607 Microsoft Office Excel 4 21.05.2009 17:37
User list RKS Работа с сетью в Delphi 8 10.09.2007 13:42