Связка Assembler и Delphi

Низкоуровневое программирование портов, микроконтроллеров и т.д.

Модератор: Andy

Ответить
Mark
Сообщения: 4
Зарегистрирован: 06 дек 2005, 21:45
Контактная информация:

Здравствуйте всем!

Требуется написать функцию сложения двух вещественных чисел. Я работаю с дельфийским ассемблером. Когда я делаю так:

Код: Выделить всё

mov eax, a
mov ebx, b
add eax, ebx
то мне прога благополучно сообщает, что тип не помещается в указанные операторы. По крайней мере я так понимаю. Но я совсем новичок в асме, поэтому могу ошибаться. Помогите пожалуйста.

И ещё: для функции деления двух целых чисел есть вот такой код:

Код: Выделить всё

mov eax, a
mov ebx, b
idiv eax, ebx
который с параметрами 8 и 4 даёт в результате... -8, что не есть правильно :-)

В общем, что я делаю не так? :) Всем заранее спасибо!
keeahn
Сообщения: 3
Зарегистрирован: 07 дек 2005, 15:36

Для работы с вещественными числами надо юзать FPU, либо SSE2.
Описание стандартных инструкций можно найти в любом пакте для программирования на ассемблере (в частности в MASM32->Opcodes).
Mark
Сообщения: 4
Зарегистрирован: 06 дек 2005, 21:45
Контактная информация:

Хм... ну с вещественными числами понятно. А почему же idiv мне выдаёт ложный результат? Синтаксис-то верен, вроде? Или тоже надо другую инструкцию применять?
keeahn
Сообщения: 3
Зарегистрирован: 07 дек 2005, 15:36

А если попробовать так:

Код: Выделить всё

mov eax,-8
mov ebx,4
xor edx,edx
idiv ebx
в edx по ходу должен после этого быть остаток, а в ax частное.
Ответить