Как осуществить передачу массива типа double (или float) из C в ASM ?

программирование си ассемблер ASM

В программе на си вызывается функция из модуля на ассемблере, функция передает сам массив и количество элементов в нем.
Ответы:
В модуле на asm нужно подсчитать суму элементов массива.
Имя массива в c это указатель на первый (в смысле нулевой) элемент массива.
это я и так знаю.а вот как с этим указателем в tasm работать
как с любыми указателями
 Mov bp,sp
PTR equ [bp+4]
PTR - псевдоним для указателя
Чтобы к этому массиву обратиться, его адрес нужно загрузить в регистры.
Не понятно, какой это режим (16/32?), и, если 16бит, то это близкий или далёкий указатель?
Если близкий указатель на 16bit, то
mov di,адрес-массива
и обращаться потом по [di]
этот di потом увеличивать на сколько нужно, на два или четыре, в зависимости от размера эл–та в массиве
если 16бит далёкий указатель, то вместо "mov di," писать "les di,"
это загрузит не только di, но и es
обращаться потом по es:[di], инкрементировать только di
Если 32бит указатель, то практически любой регистр, хоть ecx загрузить адресом массива и по [ecx] обращаться


17 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.