0 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 55
|
|||||||||||||||||||||||||||||||
1 | |||||||||||||||||||||||||||||||
библиотека на масм32 для программ высокого уровня18.01.2013, 22:35. Показов 5157. Ответов 77
Метки нет (Все метки)
помогите бедному студенту, который самостоятельно осваивает масм32. пишу библиотеку на асме для языков высокого уровня, например для с++ пишу, но надо чтобы и не только для него работало все
в общем, библиотека 5.dll должна содержать функции калькулятора для больших чисел, наткнулась на то, что не могу результат передать на выход функции, подсказали сделать через это: eax = указатель на final и типа так заработает, это надо делать в самом конце кода(здесь только сложение) подскажите каким образом надо это сделать, код рабочий был без библиотеки вот такой
моя библиотека, тот же код, но под библиотеку сделан 5.ASM
stdafx.h
dll и прочее создается спокойно, но понимаете, оно работает не так надо чтобы возвращалась сумма этих чисел функции, ну и скажите правильно ли у меня все написано, к тому же интересует момент с num1WORD и другими массивами DWORD - не подходит, нам нужен целочисленный т.е. мона взять BYTE, но подойдет ли он для числа из 600цифр например, думаю вряд ли(((( подскажите что писать, в нете не нашла кроме этих 2х ничего про это прочитала туточки http://www.cta.ru/cms/f/342704.pdf Добавлено через 8 минут прописывала в консоли ml /c /coff 5.asm link /DLL /SUBSYSTEM:WINDOWS /DEF:"5.def" "5.obj"
0
|
18.01.2013, 22:35 | |
Ответы с готовыми решениями:
77
Макроязык для эмуляции языков высокого уровня. Для чего применяется Каррирование в языках высокого уровня? Программирование на языках высокого уровня Компилируемый язык высокого уровня |
64 / 64 / 0
Регистрация: 06.10.2011
Сообщений: 299
|
|
19.01.2013, 01:49 | 2 |
mov eax, result
ret Добавлено через 1 минуту я чета не особо в твоем коде но у тебя он вроде начинается сохранение всех регистров popad а перед выходом их восстановлением popad, вот он ничего в eax и не возвращает
0
|
0 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 55
|
|
19.01.2013, 01:50 [ТС] | 3 |
вы уверенны, что это заработает??? мне надо финал в результат вообще-то, тоесть вместо резалт прописать финал?
lea eax, final ибо финал оч большой)))
0
|
64 / 64 / 0
Регистрация: 06.10.2011
Сообщений: 299
|
|
19.01.2013, 01:57 | 4 |
вот работающий (вроде только что сляпал) пример дллки складыющей два целых числа
через lib сделал. но дллку можно было просто подгрузить из кода, получить адрес функции и ее вызвать
0
|
0 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 55
|
|||||||||||
19.01.2013, 01:57 [ТС] | 5 | ||||||||||
при загрузки длл в с++ ругается((( пишет 1>d:\student\asm\bin\длл\test\test\test.cpp(15): warning C4129: s: неизвестная escape-последовательность 1>d:\student\asm\bin\длл\test\test\test.cpp(15): warning C4129: B: неизвестная escape-последовательность
0
|
64 / 64 / 0
Регистрация: 06.10.2011
Сообщений: 299
|
|
19.01.2013, 02:00 | 6 |
разбери мой пример, удостоверься что дллка у тебя правильно сделана, тогда вопрос обозначится более узко, а даже такой не особо длинный код долго разбирать, еще повезло что заметил popad в конце. принято чтоб api фукции сохраняли неизменными регистры ebx esi edi остальные могут разрушаться.
0
|
0 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 55
|
|
19.01.2013, 02:02 [ТС] | 7 |
так я могу и сама, поймите, что числа могут быть очень большие, например 600 циферок
Добавлено через 58 секунд ок, щас гляну и скажу))
0
|
64 / 64 / 0
Регистрация: 06.10.2011
Сообщений: 299
|
|
19.01.2013, 02:03 | 8 |
то есть проблема в том что код не работает.
600 цифирок значит какой то массив есть, указатель на этот массив, определенным образом для дллки сформированный, надо передать в дллку
0
|
0 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 55
|
|||||||||||
19.01.2013, 02:18 [ТС] | 9 | ||||||||||
посмотрела я код нашла то, что нет прототипа функции
сделала так
D:\student\asm\BIN>ml /c /coff 5.asm Microsoft (R) Macro Assembler Version 6.14.8444 Copyright (C) Microsoft Corp 1981-1997. All rights reserved. Assembling: 5.asm 5.asm(49) : error A2005: symbol redefinition : reserved Добавлено через 5 минут код работает, но его надо переделать в длл, ну и у меня это не получилось) вот код рабочий
0
|
64 / 64 / 0
Регистрация: 06.10.2011
Сообщений: 299
|
|
19.01.2013, 02:22 | 10 |
5.asm(49) : error A2005: symbol redefinition : reserved
чета не по глазам где в 49 строке переопределение происходит .stack 256 - стека не мало? как то не доводилось этой директивой пользоваться
0
|
0 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 55
|
|
19.01.2013, 02:27 [ТС] | 11 |
код же есть, строчки подписаны
Добавлено через 4 минуты .stack 256 а сколько в стеке делать? ну на той проге мне хватало, простая прога работала))) нам на занятиях говорили, что это тупо так надо делать и никаких тонкостей не говорили....у нас препод вообще ничего не объяснял...все по форумам да книгам собирала в свою голову
0
|
64 / 64 / 0
Регистрация: 06.10.2011
Сообщений: 299
|
|
19.01.2013, 02:32 | 12 |
нисколько не делай. пусть компилятор сам сделает сколько надо. в программе конечно хватало, а при вызове дллки могло и не хватить
Добавлено через 1 минуту возьми мою дллку - там все просто, хорошо разберись как она работает, скомпиль ее. и потом вставь в нее свой код.
0
|
0 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 55
|
|
19.01.2013, 02:35 [ТС] | 13 |
0
|
64 / 64 / 0
Регистрация: 06.10.2011
Сообщений: 299
|
|
19.01.2013, 02:40 | 14 |
хм. да там объяснять почти нечего. просто потому что винда так сделана.
0
|
0 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 55
|
||||||
19.01.2013, 02:41 [ТС] | 15 | |||||
0
|
64 / 64 / 0
Регистрация: 06.10.2011
Сообщений: 299
|
|
19.01.2013, 02:42 | 16 |
как будто в программе которая дллку подгружает появилась эта подпрограмма. ее вызываешь передаешь ей два параметра, она их складывает и возвращает в регистре eax, остальные регистры не разрушаются можно их не сохранять
0
|
0 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 55
|
|
19.01.2013, 02:43 [ТС] | 17 |
0
|
64 / 64 / 0
Регистрация: 06.10.2011
Сообщений: 299
|
|
19.01.2013, 02:45 | 18 |
скомпили твою дллку чуть там подправил посмотри. у меня установлен масм32 по умолчанию
1
|
0 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 55
|
|
19.01.2013, 02:45 [ТС] | 19 |
он не хочет твою длл грузить в с++
вот такие дела(( так что в твоей косяки...она не подходит для высокого уровня
0
|
64 / 64 / 0
Регистрация: 06.10.2011
Сообщений: 299
|
|
19.01.2013, 02:47 | 20 |
это директива компилятору выравнять начало кода по границе кратной 8 байтам, чтоб вызов фукции происходил по началу микросхемы памяти что контроллеромпамяти делается быстрее чем по неровной границе - вот так примерно
1
|
19.01.2013, 02:47 | |
19.01.2013, 02:47 | |
Помогаю со студенческими работами здесь
20
Ищу Програмиста Высокого уровня! Пересесть с языков высокого уровня на С++ Библиотека для отрисовки линий уровня функции от 2-ух переменных Выходной ток высокого уровня у SN74ALS08 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |