Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Ассемблер? Это просто! Учимся программировать


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Советник
Рейтинг: 11043
∙ повысить рейтинг »
Коцюрбенко Алексей aka Жерар
Статус: Советник
Рейтинг: 4067
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 1822
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Assembler (Ассемблер)

Номер выпуска:1534
Дата выхода:19.01.2013, 14:30
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:65 / 21
Вопросов / ответов:3 / 4

Консультация # 62939: Привет! Скажите можно ли с помощью masm32 кампилить 16 разрядные dos приложения или он этого уже не поддерживает и нужно использовать что-то типа masm 6.12. Проблема в том, что путь к masm32 уже прописан в переменных среды и не хочется их туда сюда гонять. И еще вопрос. Есть набор процедурок. Как из этих процедурок сделать библиотеку, чтобы по...


Консультация # 64940: Вопрос по FASM - Win32: Объявляю структуру: struct mmm a db ? b dd ? c dw ? ends Хочу создать и проинициализировать массив структур: m1 mmm <1,\'2\',3>, <11,\'22\',33>, <111,\'222\',333> Не выходит - ругается на макрос. В чём тут дело? И ещё вопрос. Есть ли как...
Консультация # 128115: здравствуйте, уважаемые профессионалы! Помогите пожалуйста справиться с задачей! Очень срочно! Протабулировать функцию у = а(х+b) а=3; b=1; 1 < x < 10; Шаг изменения x=1 Просьба учитывать, что знания ассемблера очень маленькие, его изучение только начато! Заранее огромное спасибо!...

Консультация # 62939:

Привет! Скажите можно ли с помощью masm32 кампилить 16 разрядные dos приложения или он этого уже не поддерживает и нужно использовать что-то типа masm 6.12. Проблема в том, что путь к masm32 уже прописан в переменных среды и не хочется их туда сюда гонять.
И еще вопрос. Есть набор процедурок. Как из этих процедурок сделать библиотеку, чтобы потом компилить ее вместе с основной прогой? Я пока использую include *.inc. Как перегнать их в *.obj, а потом подключать по необходимости? Какие компоненты masm-а нужно использовать и с какими параметрами? Если можно пример.

Дата отправки: 16.11.2006, 23:27
Вопрос задал: Oxaid
Всего ответов: 2
Страница онлайн-консультации »


Консультирует Вiктор (Студент):

Здравствуйте, Oxaid!
1) masm32 не рассчитан на 16-битные дос-приложения (я думаю).
2) когда вы используете include , то нужный текст просто вставляется в файл. Т.е. при трансляции получается как бы один большой временный файл. А использование *.lib - это немного другое. По сути, в *.lib собраны один или несколько *.obj. А использование процедуры, находящейся в другой *.obj немного отличается от include.
см. приложение (Код для ТАSМ, но суть та же)
пишете код процедуры, указываете её как public, ассемблируете, получаете например sub.obj
пишете код главной программы, указываете там процедуру как extrn (с указанием типа), ассемблируете, получаете например main.obj
потом скармливаете линкеру main.obj, sub.obj
и линкер должен сделать вам рабочую main.exe (если всё правильно)
extrn указывает что будет вызов/прыжок на код, которого нет в данном модуле. И в main.obj будет указано прямым текстом что надо например _vfaa (если открыть 16-ричным редактором, то можно там найти это название).
public указывает что код данного модуля будет вызваться извне. И поэтому символьное название функции будет в sub.obj.
Линкер посмотрит что к чему и всё свяжет, как будто код процедуры и главной программы были в одном файле.

для того чтобы сделать *.lib -файл, надо взять sub.obj и используя программу LIB.EXE из пакета масм. Я сейчас не помню синтаксиса, надо указать ей название *.lib файла, который мы хотим создать, и названия *.obj-файлов, которые мы хотим туда добавить. (можно также удалять *.obj-файлы из библиотеки, если надо). Посмотрите синтаксис набрав "LIB.EXE /?" или "LIB.EXE -?" или "LIB.EXE /h", что-то подобное.

Использовать *.lib файл можно так же, как и *.obj - указывать его линкеру.

Приложение:

Консультировал: Вiктор (Студент)
Дата отправки: 17.11.2006, 01:03
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует IceWolf:

Здравствуйте, Oxaid!
Компилятор 16-разрядный код генерирует, а вот линкер придется взять из старого масма(если нужен-напишите в мини форум,я пришлю). Чтобы сделать код 16-разрядным можно, например, указать .286 (16-разрядный процессор), или указать после segment use16 (если нужны инструкции 80386).
Пишем программу, все внешние(из другого модуля) имена объявляем: extrn имя:тип,
а в другом модуле бъявляем их директивой public .Так же поступаем со вторым модулем, третьим, четвёртым и т.д. Компилируем каждый модуль: ml модуль.asm /c (/c-не линковать), линкуем: link модул1.obj модуль2.obj ..... (для .com-программы указываем /t). Передача параметров возможна через регистры, через стек, через общую область памяти. Подробней советую посмотреть, например, у Юрова.

Приложение:

Консультировал: IceWolf
Дата отправки: 17.11.2006, 01:52
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 64940:

Вопрос по FASM - Win32:

Объявляю структуру:

struct mmm
a db ?
b dd ?
c dw ?
ends

Хочу создать и проинициализировать массив структур:

m1 mmm <1,\'2\',3>, <11,\'22\',33>, <111,\'222\',333>

Не выходит - ругается на макрос. В чём тут дело?

И ещё вопрос.
Есть ли какие-нибудь инструменты для FASMа при работе
в консоли WinXP(в FARе): редакторы, дебагеры, IDE?

Дата отправки: 30.11.2006, 15:01
Вопрос задал: Andreir
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Евгений Иванов (Специалист):

Здравствуйте, Andreir!

m1 mmm 10 dup (<1,\'2\',3>)

Консультировал: Евгений Иванов (Специалист)
Дата отправки: 30.11.2006, 16:08
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 128115:

здравствуйте, уважаемые профессионалы! Помогите пожалуйста справиться с задачей! Очень срочно!

Протабулировать функцию у = а(х+b) а=3; b=1; 1 < x < 10; Шаг изменения x=1

Просьба учитывать, что знания ассемблера очень маленькие, его изучение только начато! Заранее огромное спасибо!

Дата отправки: 19.03.2008, 14:01
Вопрос задал: Lestatka
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Лысков Игорь Витальевич (Старший модератор):

Здравствуйте, Lestatka!
Программа в приложении. Расчитывает значения функции и записывает в массив.
Предполагается, что все величины - двубайтные слова.
Удачи в освоении ассемблера!

Приложение:

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 19.03.2008, 15:23
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное