Поиск:

Ответ в темуСоздание новой темы Создание опроса
> библиотека, как создать и пользовать 
:(
    Опции темы
котъ
Дата 15.2.2005, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 29.9.2004

Репутация: нет
Всего: нет



господа профи !!!!!
объясните популярно новичку КАК СОЗДАТЬ библиотеку из
отработанных небольших программ и КАК ПОТОМ ВСТАВИТЬ
эти фрагменты в другую прогу !????????
Заколебался уже писать проги по 2-3 кб , в которых много
отработанных кусков !!!!!!!!

Я использую MASM 6.11 !!!!!!!
Пишу пока только .com программы.
Если можно то на примере :
допустим что нужно создать библиотеку в которой ТРИ отработанных
фрагмента :

sceg segment
org 100h
start:
; определение даты -- ПЕРВЫЙ ФРАГМЕНТ !!!!!!
mov ah,2ah
int 21h
........
........
; какие то дополнительные действия
........
........
; установка графического режима
mov al,12h
mov ah,00
int 10h
; построение координатной сетки--ВТОРОЙ ФРАГМЕНТ !!!!!
........
........
........
; преобразование чисел для вывода строки в графическом режиме---
----------ТРЕТИЙ ФРАГМЕНТ !!!!
.........
.........
.........
; завершение
mov ax,4c00h ; завершение программы
int 21h
mess1 db .......
mess2 db .......
.........
cseg ends
end start

Как создать библиотеку из указанных трех фрагментов ?
Как потом эти фрагменты вставить в новую аналогичную программу ????
Для работы с MASM 6.11 !!!!!
Спасибо !!!!!!!
PM MAIL   Вверх
Akina
Дата 15.2.2005, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



Цитата
Как создать библиотеку

1) убрать org, start и end start
2) объявить процедуры как public
3) скомпилить в obj (masm)
4) собрать в либу (lib или около того)

Цитата
Как потом эти фрагменты вставить в новую аналогичную программу

1) описАть в программе процедуры как external
2) использовать как будто текст вставлен в программу
3) при линковке указать еще и созданную ранее либу с этими функциями

Есть вариант и попроще - инклюдить в текст программы файлы с процедурами


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
котъ
Дата 16.2.2005, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 29.9.2004

Репутация: нет
Всего: нет



СПАСИБО !!!!!
СЕГОДНЯ ПОПРОБУЮ!!!!!
PM MAIL   Вверх
Akina
Дата 16.2.2005, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



Рекомендация - каждую подпрограмму оформлять отдельным модулем, компилять отдельно и пихать в либу. Ибо если в модуле 3 функции, при вызове любой из них прилинкуется все три.
И не запутайся с сегментами и константами, используй локальные метки и протчая - а то пересечешься с основной прогой и будет тебе щастье по выискиванию глюков...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
oleg1973
Дата 18.2.2005, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: нет
Всего: 34



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

proc Myproc
    enter
    somecode....
    return
endp

фасм имеет удобное свойство, не компилировать процедуры которые не вызываются


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
котъ
Дата 24.2.2005, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 29.9.2004

Репутация: нет
Всего: нет



Akina !!!!!! oleg1973 !!!!!!!

попробовал оба способа
INCLUDE ---- работает !!!!!! , правда на простейших примерах .
одно неудобство ----- приходится следить за метками и менять их,
если фрагмент вставляется в прогу многократно .

public и external почему то не получилось, не проходит lib.exe
может у меня masm611 кривой --- скачал его у Калашникова
по его же рекомендации.

НЕ ЯСНО только -- зачем использовать public и external ,
если инклюдирование проще !!!!!!
Какие приемущества и недостатки у каждого способа ?????/



PM MAIL   Вверх
Akina
Дата 24.2.2005, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



Цитата
INCLUDE ---- работает !!!!!! , правда на простейших примерах .
одно неудобство ----- приходится следить за метками и менять их,
если фрагмент вставляется в прогу многократно .

Работает всегда. Программить надо по-человечески просто. Использовать локальные метки. Использовать условное подключение.

Цитата
public и external почему то не получилось, не проходит lib.exe
может у меня masm611 кривой --- скачал его у Калашникова
по его же рекомендации.

А я думаю что тебе все-таки неплохо доку по синтаксису почитать. Для данного диалекта Асма.

Цитата
зачем использовать public и external ,
если инклюдирование проще !!!!!!
Какие приемущества и недостатки у каждого способа ?????/

Пока ты кропаешь поделки размером в сотню байт - инклюдь и не забивай себе голову. А когда дело дойдет до мультисегментного кода в десятки-сотни килограмм, да еще не дай Бог вмногером кодить - ты сдохнешь под своими инклюдами.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
котъ
Дата 24.2.2005, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 29.9.2004

Репутация: нет
Всего: нет



Akina !!!!!!!!!!!!!!
полностью с тобой согласен , что я еще чайник !!!!!!!!!!
вот и пытаюсь учиться !!!!!!!!
ты бы хоть похвалил , а то всего обругал !!!! -- может и правильно....

Ты вот пишешь ---INCLUDE Работает всегда.Программить надо по-человечески просто. Использовать локальные метки. Использовать условное подключение.

Ну так поясни коротко и популярно , что это такое .
Тебе ведь не трудно пояснить на простом примере.

А относительно public и external привел бы подробно простейший пример----
----- например вставка в программу фрагмента из одной команды
типа mov a,b но со всеми этапами. Для DOS.
Очень тебе буду благодарен !!!!!!!!!!!

Ведь кого не спросишь ---- то все и смеются !!!!!! говорят дурак я
что ассемблер учу !!!!! советуют всякие паскали бийсики и прочее!
А по ассемблеру спецов днем с огнем не сыщешь !!!!!

Добавлено @ 15:27
я пытался у Калашникова найти , но как то не совсем понятно , о чем он
пишет !!!!! все вирусы рассматривает и оболочки , а фундаментального
простейшего материала мало дает .
PM MAIL   Вверх
котъ
Дата 24.2.2005, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 29.9.2004

Репутация: нет
Всего: нет



КСТАТИ , я неплохо шарю в аналоговой технике , так что и ты можешь
у меня в этом спрашивать , если интересно, конечно.
PM MAIL   Вверх
Akina
Дата 24.2.2005, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



Цитата
ты бы хоть похвалил , а то всего обругал

а за что? за то что тебе лень воспользоваться поиском и читать гору манов? расчитываешь что тебе будут разъяснять значение терминов "локальные метки" и "условное подключение"? да ни в жисть... этого добра (разъяснений то есть) в Инете - горы. Только бери. Начни, к примеру, отсюда.

Цитата
относительно public и external привел бы подробно простейший пример

см. выше. там ВСЕ есть.

Цитата
говорят дурак я что ассемблер учу

Если это оправдано целью - они неправы. Учить ради того чтобы хоть чем-то заняться или на случай "а вдруг пригодится" - тоже можно. Впрочем сначала сделать, а потом придумать зачем оно сделано - как-то странно...

Хочешь чтобы тебя похвалили? Разберись в этом вопросе (что как делается, когда что разумнее, какие есть грабли и как их обойти) и напиши небольшую, компактную, с примерами, статейку в ФАК. Вот это будет дело достойное...

И эта... одного восклицательного знака вполне достаточно.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
котъ
Дата 25.2.2005, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 29.9.2004

Репутация: нет
Всего: нет



Akina !!!!!!
спасибо за совет !!!
в общем то ты прав !!!!------ мне немного лень !
я ваще то спец по аналогу , но программирую и микроконтроллеры.
а ассемблер необходим для обработки данных с МК на компе.
другие языки почему то не интересны , а тут некая аналогия
с микроконтроллерами , да и машину можно изучить--- это самое
главное !!!!!! . И ваще то получается.

В плане локальных меток я действительно не искал -- грешен .

Но в плане public и external действительно немного помучался !!!!!!
Вот здесь то не грешил !!!!!!! но не получается !!!!!!
Просто везде где читал написано общими словами без понятных
примеров.
Вот и попросил тебя здесь подробнее разьяснить .
Пограммирую только с октября прошлого года и мне бы было интересно
узнать твое мнение относительно готовых уже работающих программ.
Можно тебя попросить просмотреть их и дать рецензию ??????-------
------- там все с коментариями , быстро будет.
Может изменишь свое мнение и с public & external поможешь разобраться.
PM MAIL   Вверх
котъ
Дата 25.2.2005, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 29.9.2004

Репутация: нет
Всего: нет



кстати, объясни пожалуйста --- можно ли пользоваться материалом писанным для TASM ---- для MASM6.11 в сети почти ничего нет

PM MAIL   Вверх
Akina
Дата 25.2.2005, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



Хрен с тобою.
Пример:

Файл 1.asm
Код

cseg    segment
assume  cs:cseg, ds:cseg
extrn   change:near
        org 100h
start:
        lea dx,mess
        mov ah,9
        int 21h
        lea bx,messnum
        call change
        lea dx,mess
        mov ah,9
        int 21h
        int 20h
mess    db 'Message '
messnum db '1',0dh,0ah,24h
cseg    ends
end     start


Файл 2.asm
Код

cseg   segment
assume ds:cseg
public change
change proc near
       inc byte ptr ds:[bx]
       ret
change endp
cseg   ends
       end


Сборка (для TASM 3.1):
tasm 1.asm -> 1.obj
tasm 2.asm -> 2.obj
tlink /t 1.obj+2.obj -> 1.com
td 1.com -> возможность посмотреть в трассере что получилось в коде, и на экране - как работает.
Добавлено @ 12:29
Цитата
можно ли пользоваться материалом писанным для TASM ---- для MASM6.11 в сети почти ничего нет

а доку по МАСМу почитать???


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
котъ
Дата 25.2.2005, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 29.9.2004

Репутация: нет
Всего: нет



Akina !
СПАСИБО !!!!!! ДОБРЫЙ ТЫ ЧЕЛОВЕК !!!
А ПРОГИ МОИ ХОЧЕШЬ ПОСМОТРЕТЬ ??/
Я CТАРАЛСЯ , МОЖЕТ ЧО ОРИГИНАЛЬНОЕ СЛЕПИЛ по своему невежеству-
--- бывает и такое , МОЖЕТ И НЕ ОЧЕНЬ .
Ваще то я не совсем дурак и своих разработок -- в аналоге, правда --
у меня не один десяток .
Кстати , зря ты на меня наехал , в сети действительно TASM и указания
на локальные метки и прочее в его как бы эмуляции MASMа-----
------может я не совсем грамотно выразился , но все равно не ясно до конца - будут ли эти кирпичи работать в чистом MASMе 611 ????
просто у меня опыта работы очень мало, вот и не могу сразу ориентироваться. Потому не злись сильно на вопросы , которые тебе
кажутся глупыми.
PM MAIL   Вверх
Akina
Дата 25.2.2005, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



а попробуй, ёлы-палы... только собирай в ДОС-окне, чтобы матюги компилера-линкера видеть...

Насчет смотреть - ежели вправду, то не люблю рыться в чужом коде. У прынципе. Пока не подопрет, конечно... если полагаешь что твои реально работающие программы кому-то могут быть полезны и/или интересны - ну выклади ты их с исходниками на всеобщее оборзение, благо халявных сервантов под паги счас как грязи... тебе ж даже скрипты под то не надобны... а тут (али еще где) УРЛу соответственно.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.4788 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.