Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
arzrav
73 / 74 / 4
Регистрация: 25.09.2012
Сообщений: 212
1

Передача параметров функциям

01.02.2013, 15:45. Просмотров 805. Ответов 7
Метки нет (Все метки)

Доброго времени суток! Уважаемые форумчане, подскажите, почему вот так можно:

Assembler
1
2
3
4
5
6
.data
    a dd 0.2f
...
.code
...
    fld a
А вот так нельзя:

Assembler
1
2
3
.code
...
    fld 0.2f
Выдает ошибку "error A2050: real or BCD number not allowed".

И даже так нельзя:
Assembler
1
2
3
.code
...
    fld 3E4CCCCDh
Выдает ошибку "error A2001: immediate operand not allowed".

Не понимаю что это - особенности компилятора или что-то другое.
Буду признателен любой помощи.

Использую masm32.

Добавлено через 30 минут
До меня вроде бы дошло. fld требует адрес по которому находится значение.
Например
Assembler
1
fld dword ptr ds:[00403000]
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2013, 15:45
Ответы с готовыми решениями:

Передача параметров
Нужно написать COM программу,чтобы при вводе с командной строки,она считывала параметр(имя файла) и...

Передача параметров блоком
Как передать в процедуру блоком 2й массив? (в данном случае массив x1). ведь после передачи блока ...

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

Передача параметров в процедуру
Доброго времени суток. Нужна ваша помощь, знатоки! Возникла нужда в изучении процедур и передачи в...

передача параметров dll fasm
Если у кого есть пример дайте плз. Проблема такая: как передать параметры в длл на фасме и из нее в...

7
Vadimych
635 / 478 / 12
Регистрация: 10.01.2011
Сообщений: 1,047
01.02.2013, 15:47 2
FLD—Load Floating Point Value
D9 /0 FLD m32fp Valid Valid Push m32fp onto the FPU register stack.
DD /0 FLD m64fp Valid Valid Push m64fp onto the FPU register stack.
DB /5 FLD m80fp Valid Valid Push m80fp onto the FPU register stack.
D9 C0+i FLD ST(i) Valid Valid Push ST(i) onto the FPU register stack.
То есть, значение должно быть в памяти либо в регистре FPU.
1
Mikl___
Автор FAQ
13380 / 6383 / 630
Регистрация: 11.11.2010
Сообщений: 11,543
01.02.2013, 16:07 3
arzrav,
если нельзя, но очень хочется, тогда
Assembler
1
2
push 3E4CCCCDh; = 0.2
fld dword ptr [esp]
после вычислений не забудь выровнять стек!
1
arzrav
73 / 74 / 4
Регистрация: 25.09.2012
Сообщений: 212
01.02.2013, 18:13  [ТС] 4
Цитата Сообщение от Mikl___ Посмотреть сообщение
arzrav,
если нельзя, но очень хочется, тогда
Assembler
1
2
push 3E4CCCCDh; = 0.2
fld dword ptr [esp]
после вычислений не забудь выровнять стек!
Выровнять стек в данном случае это вот так, правильно?

Assembler
1
add esp, 4
0
Mikl___
Автор FAQ
13380 / 6383 / 630
Регистрация: 11.11.2010
Сообщений: 11,543
01.02.2013, 18:21 5
arzrav,
можно add esp,4 можно pop ecx если содержимое ecx не важно
push 0.2 можно еще вот так db 68h / dd 0.2
1
arzrav
73 / 74 / 4
Регистрация: 25.09.2012
Сообщений: 212
01.02.2013, 18:39  [ТС] 6
Цитата Сообщение от Mikl___ Посмотреть сообщение
push 0.2 можно еще вот так db 68h / dd 0.2
Я долго ломал голову над этой фразой, но её сакральный смысл так и не постиг, уж извините
Объясните, пожалуйста, более подробно, что здесь имелось в виду.
0
Mikl___
Автор FAQ
13380 / 6383 / 630
Регистрация: 11.11.2010
Сообщений: 11,543
01.02.2013, 18:45 7
моделируем команду push pi/1800 берем в руки калькулятор pi/1800=0.0017453292519943295769236907684886
код push = 68h дальше чтобы не переводить 0.0017453292519943295769236907684886 в шестнадцатеричный вид пишем dd 0.0017453292519943295769236907684886 и пусть компилятор пишет за нас
Assembler
1
2
3
4
 команды
db 68
dd 0.0017453292519943295769236907684886
команды
1
arzrav
73 / 74 / 4
Регистрация: 25.09.2012
Сообщений: 212
01.02.2013, 19:18  [ТС] 8
Mikl___, попробовал - работает. Круто, я и не знал, что такие финты можно в секции кода проделывать.
0
01.02.2013, 19:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.02.2013, 19:18

Передача параметров через регистры процесора
Написать программу используя подпрограмму-(программа изменяет все буквы на большие)!!!Передача...

Передача параметров в функцию asm вставкой в C++ Builder 2010
Всем привет! Есть функция static void _stdcall. Вызов её происходит неявно, поскольку указатель...

Внешняя процедура, выполняющая сложение двух чисел (передача параметров через стек)
Помогите, пожалуйста!!!! Написать прорамму с внешней процедурой, выполняющую сложение 2 чисел с...


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

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

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