Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.51/47: Рейтинг темы: голосов - 47, средняя оценка - 4.51
9 / 6 / 1
Регистрация: 03.03.2018
Сообщений: 59
TASM

Многофайловая компиляция программы типа COM с применением EXE2BIN

10.02.2020, 18:16. Показов 9666. Ответов 27

Студворк — интернет-сервис помощи студентам
Всем добрый вечер. Ребятушки, не совсем уверен что писАть надо именно сюда но всё же. Проблема: не могу сконвертировать exe в com (Да такой я извращенец в 2020)

Ассемблируется и главный файл и дополнительный нормально. Собирается в exe тоже отлично. А дальше вот никак.Собственно где то я ошибаюсь. Хочу добавить что exe2bin изначально в досе не было, скачал с old-dos.ru. Хочу разобраться в сем вопросе с божией помощью и с вашею.От себя добавлю что в содомии и разврате замечен не был и на вас уповаю благостно. Спасибо за внимание.

PS: Может батюшку для освящения пригласить надо было? А то сегодня мода такая пошла что всё освящають.....
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.02.2020, 18:16
Ответы с готовыми решениями:

Многофайловая компиляция
parta.c #include <stdio.h> void report_count(); void accumulate(int); int count = 0; int main(void) {

многофайловая сруктура программы
есть многофайловая программа, вычисляющая определенный интеграл разными методами, нужно сделать: 1. что бы после подсчета интеграла...

Решение с применением множественного типа данных
Из множества целых чисел 1..100 выделить множество чисел, являющихся, в свою очередь, квадратами целых чисел.

27
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
16.02.2020, 12:27
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от LAO_OAL Посмотреть сообщение
Как сказал один человек - 640кб должно хватить всем.
Если верить Тиму Патерсону, то в самой Microsoft не хватало 640кб для LINK.EXE, чтобы пересобрать сам компоновщик из исходников.
Пришлось для этой задачи содержать не совместимую с IBM микроЭВМ на 8086 с более разумной организацией адресного пространства.

Не по теме:

Цитата Сообщение от LAO_OAL Посмотреть сообщение
В свое время учился не слишком хорошо,потому что во времена моей учёбы были одни гопники,и собственно учёбы как таковой не было.
Вы учились в середине 1990-х ?

0
16.02.2020, 13:15

Не по теме:

LAO_OAL, у меня было почти так же. В ВУЗе это учили, преподаватели были хорошие, но компьютера не было, и как ни странно, для нашего потока не было часов в компьютерном классе. В основном запоминал теорию. Через 10 лет после ВУЗа - в 2005 - устроился на работу, где компьютеры были (Искра 1030М, i286, i486). Для экстренной нахватки практики открыл книги и набирал из них программы. Как раз это были
- ассемблер
Нортон П., Соухэ Д. Язык ассемблера для IBM PC.
Хижняк П.Л. Пишем вирус и ... антивирус.
Р.А.Ашинянц, М.И.Козлов, А.Д.Кошелев Справочник по видеосредствам IBP PC и IBM PS/2 (адаптеры CGA, EGA и VGA).
- Pascal
Московские олимпиады по программированию
Агеев М.И. и др. Библиотека алгоритмов
Петзольд. Программирование в Windows (реально в книге всё на C, но это же вызовы WinAPI, которые безразлично из чего вызывать)
- C
Керниган и Ричи. Язык C (Хулиган Ричи)
Касаткин Профессиональное программирование на языке СИ
Ал. Стивенс. Техника программирования на Turbo C.

В общем-то, я понимал итоговую цель изучения - ПО стенда проверки ТЭЗов (электронных плат из изделий). Стенд сделали без меня, а ПО отсутствовало. Был образец подобного стенда с программой на modula2, так же была готова часть электроники для стенда - из состава автотестера одной из ЭВМ. В итоге, за 1 год в перерывах между поездками мы всё сделали - и стенд и первую версию ПО. ПО я потом улучшал по мере работы. И за стендом именно я и работал. ПО было для DOS, т.к. перейти на WinXP не смог, да и с оборудованием было понятнее, как работать из DOS - книг было больше.

При обучении сразу выделил направления:
- экстренная нахватка синтаксиса Pascal, встроенного ассемблера
- нахватка алгоритмов
- нахватка работы с COM-портом
- нахватка принципов построения интерфейса на основе стековых окон (они проще слоёных окон)

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

Потом были микроконтроллеры PIC, AVR. С PIC не заладилось из-за программатора, а для AVR вышла книжка, в которой объяснялись как сделать программатор и где скачать программу для заливки. На AVR делал небольшие приспособы на разборных макетках - наиболее сложная - стенд для тестирования платы с динамической памятью к565ру5 (регенерация, запись+чтение, отправка диагностики через COM-порт на компьютер).

Потом, однокурсник, работающий по специальности (АСУ ТП), зазвал меня программировать ПЛК. И теперь тоже работаю по специальности - КИПиА - и пару раз в год пишу программы для ПЛК и ПР.

А всё началось с набора из книг. Именно набора, а не копирования готового, как у ТС в теме
Хижняк П.Л. "Пишем вирус... и антивирус" - не работает код из книги
я потом нашёл источник кода и опечатки в нём
https://sciencestory.ru/pishem-virus-i-antivirus/

В общем - выбирайте цель и успехов в начинании.

0
16.02.2020, 15:50

Не по теме:

Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
в 2005 - устроился на работу, где компьютеры были (
, i286, i486)
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
ПО было для DOS, т.к. перейти на WinXP не смо
Установить XP на "Искру" было бы проблематично...


Не по теме:

Цитата Сообщение от LAO_OAL Посмотреть сообщение
Должен отметить,что операционная система на 3-ёх дискетах и программы по 500 байт- 60Килобайт меня очень удивили.
Небольшие системы и сейчас более или менее активно разрабатываются.
Например, Contiki: https://github.com/contiki-ng/contiki-ng/wiki
По сравнению с ней, Kolibri - настоящий монстр, занимающий целую дискету!

Минимальный размер современного линуксового ( в т.ч. андроидовского ) бинарника - десятки байт, для Windows 10 - примерно столько же, но, т.к. напрямую вызывать функции ядра в Windows не принято, в практически полезной программе для Windows нужно место для таблицы импорта или её замены.

0
9 / 6 / 1
Регистрация: 03.03.2018
Сообщений: 59
17.02.2020, 09:11  [ТС]
Лучший ответ Сообщение было отмечено politoto как решение

Решение

Простите , что долго отсутствовал. Да, сейчас попробовал с masm v 3.0 и link v 1.10 и всё заработало.Интересно как по разному ведут себя компиляторы, хотя язык один и тот же. Есть тема для изучения!

Не по теме:


Цитата Сообщение от politoto Посмотреть сообщение
Вы учились в середине 1990-х ?
Я учился в 2004-2009. Это был колледж. К сожалению вышки у меня нет( А так как я в то время жил в глубинке, это был Ульяновск, то гоп-культура и прочая блатота там процветала довольно долго. Сейчас я переехал, но мне кажется даже сейчас там остались пережитки тех времён. Мой друг с дальнего востока, утверждает что у них 90-ые и не прекращались.



Добавлено через 3 минуты

Не по теме:


Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Искра 1030М, i286, i486
всегда испытывал необъяснимую тягу к старым компьютерам. Может всему виной то что отец в детстве приволок ЕС-1840 кажется откуда то и работал на нём. А я просто сидел сзади и пялился в монитор ничего не понимая



Добавлено через 1 минуту

Не по теме:

А старые ДВК кто нибудь помнит? Есть на форуме тема или подраздел "с ностальгией?" или что нибудь подобное ? :) я бы окунулся в воспоминания

0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8675 / 4512 / 1670
Регистрация: 01.02.2015
Сообщений: 13,949
Записей в блоге: 14
17.02.2020, 09:58
Лучший ответ Сообщение было отмечено politoto как решение

Решение

Возьмите компилятор по-современнее - masm 6.14 или masm 6.15 с сайта http://masm32.com/
Он содержит в своём составе link16 для компоновки DOS программ.
В чём сила - с комфортом работаете в текстовом редакторе из Windows, при общении на форуме легко копируется исходник.
Минус есть - для России в DOS используется кодировка CP866, а в Windows CP1251 - это приводит к кракозябрам при выводе русского текста. Но проблема решаема - перед компиляцией перекодировать исходник.

Тут пояснял по использованию masm32 для DOS и запуска в эмуляторе DOS (это упрощённый эмулятор, много проще DOSBox)
http://www.cyberforum.ru/asm-b... st13357060
Продублировать все согласные буквы
Тут пояснения по настройте текстового редактора SciTE, которым я пользуюсь
VMware с WinXP не переходит в графический режим для DOS программ по int 10h
Для большинства случаев вам с лихвой хватит msdos и DOSBox, но в некоторых случаях может потребоваться полноценная DOS - тогда или загружать её с CD-ROM/флешки или организовывать на виртуальной машине. Тут пояснения по VirtualBox
Драйвер RAM-диска (эмуляция дискеты)

И не задерживайтесь в DOS - уже даже masm32 уходит, т.к. ему на смену пришла линейка под x64 - ml64, fasm, nasm.
2
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
18.02.2020, 16:05
Цитата Сообщение от LAO_OAL Посмотреть сообщение
Интересно как по разному ведут себя компиляторы, хотя язык один и тот же.
Утилиты разные, и языки у них разные.
Но, на самом деле, за 30 лет поменялось не так уж много.

Попробовал получить объектник для сборки .COM ассемблером от последней Visual Studio 19
Code
1
2
3
4
5
Microsoft Windows [Version 10.0.18362.657]>ml  /omf /Flconout$.lst /c tcom.asm
Microsoft (R) Macro Assembler Version 14.24.28315.0
Copyright (C) Microsoft Corporation.  All rights reserved.
 
 Assembling: tcom.asm
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Microsoft (R) Macro Assembler Version 14.24.28315.0         02/18/20 17:53:13
tcom.asm                                                     Page 1 - 1
 
 
                                .model tiny
 0000                           .code
                                org 256
 0100                           go:
 0100  BA 0000 R                mov dx, offset my
 0103  B4 09                    mov ah,9
 0105  CD 21                    int 33
 0107  C3                       retn
 
 0000                           .data
 0000 68 69 24                  my db 'hi$'
                                end go
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Microsoft (R) Macro Assembler Version 14.24.28315.0        02/18/20 17:53:13
tcom.asm                                                     Symbols 2 - 1
 
 
 
 
Segments and Groups:
 
                N a m e                 Size     Length   Align   Combine Class
 
DGROUP . . . . . . . . . . . . .        GROUP
_TEXT  . . . . . . . . . . . . .        16 Bit   0108     Word    Public  'CODE'
_DATA  . . . . . . . . . . . . .        16 Bit   0003     Word    Public  'DATA'
 
 
Symbols:
 
                N a m e                 Type     Value    Attr
 
@CodeSize  . . . . . . . . . . .        Number   0000h
@DataSize  . . . . . . . . . . .        Number   0000h
@Interface . . . . . . . . . . .        Number   0000h
@Model . . . . . . . . . . . . .        Number   0001h
@code  . . . . . . . . . . . . .        Text     DGROUP
@data  . . . . . . . . . . . . .        Text     DGROUP
@fardata?  . . . . . . . . . . .        Text     FAR_BSS
@fardata . . . . . . . . . . . .        Text     FAR_DATA
@stack . . . . . . . . . . . . .        Text     DGROUP
go . . . . . . . . . . . . . . .        L Near   0100     _TEXT
my . . . . . . . . . . . . . . .        Byte     0000     _DATA
 
           0 Warnings
           0 Errors
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8675 / 4512 / 1670
Регистрация: 01.02.2015
Сообщений: 13,949
Записей в блоге: 14
18.02.2020, 16:31
Всё-таки разница есть.
При компиляции исходника вируса из книги Хижняка при помощи masm 5, masm 6, tasm - получаются разные результаты. На более свежих masm не проверял, может быть останется, как masm 6. Это приводило к неработоспособности антивируса из той же книги.
Можно проверить по теме
Хижняк П.Л. "Пишем вирус... и антивирус" - не работает код из книги

В основном, разница появляется из-за оптимизации переходов, замены инструкций lea на mov.

Менялся синтаксис. masm 5 и tasm поддерживают резервирование переменных v db (?), а вот masm 6 уже требует только v db ?

А в качестве курьёза добавлю о существующем наборе оптимизирующих макросов для FASM у разрабов KolibriOS - они оптимизируют (заменяют) до неузнаваемости исходный код. Например, mov eax, 1 заменяется на xor eax, eax / inc eax и ещё много всего.
0
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
17.03.2020, 14:36
Цитата Сообщение от Constantin Cat Посмотреть сообщение
Любой *LINK может создать *.СОМ, все зависит от используемых ключей.
Ты самых ранних LINK-ов от Майкрософта не видел.

Добавлено через 12 минут
Цитата Сообщение от politoto Посмотреть сообщение
Если верить Тиму Патерсону, то в самой Microsoft не хватало 640кб для LINK.EXE, чтобы пересобрать сам компоновщик из исходников.
Это адресное пространство отведенное под ОЗУ у IBM PC 640 килобайт. Но это не значит, что физической ОЗУ там будет тоже 640 килобайт. На самой первой IBM PC было воткнуто 9 микросхем динамического ОЗУ 4116, что давало ... всего 16 кило ОЗУ. Не удивительно, что Тим Паттерсон или Майкрософт не могли что-то там пересобрать.
Сам я IBM PC с 16 кило не видел, такие в нашу страну наверное вообще не попадали. Но вот странную материнку на которой стоял уже 386-й проц, но микросхемами в DIP-корпусах было натыкано только 512 кило ОЗУ видел.
А вот 640 кило для того чтобы пересобрать компоновщик это за глаза, за уши и еще останется. По моему ты автоматически спроектировал слова Паттерсона на IBM PC с 640 кило ОЗУ, потому-что представить, что были еще и IBM PC с огрызками ОЗУ затруднителько.

Добавлено через 9 минут
Во, вспомнил. INT 11h - конфигурация компьютера. В ней два бита - это было количество ОЗУ. В оригинальной IBM PC блоками по 16 килобайт. Т.е. в самых первых IBM PC байт конфигурации был сделан в предположении, что больше 64 кило (не 640, а 64 !!!) никогда и не будет.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.03.2020, 14:36

Решение задач с применением пользовательского типа Запись
Исходные данные задачи содержат не менее 5 записей. Необходимо организовать пользовательский тип ЗАПИСЬ, одномерный массив и переменную...

Написать программу, которая решает задачу с применением подпрограммы типа function
Помогите решить задачу z=\sum_{i=1}^{40}*sin({x}_{i})+\sum_{i=1}^{50}*cos{y}_{i} Масивы Х(40),У(50) вывести в общепринятом виде. ...

Составление программы с применением функции
Привет. Помогите составить программу: Составить программу с применением функции, которая выводит двухзначные числа из диапазона от 60 до...

Составление программы с применением процедур
Привет. Помогите составить программу: Составить программу с применением процедур, которая выводит трёхзначные числа, сумма цифр которых...

Разработка JavaScript-программы с применением слоев
Не могли бы помочь? Рисунок разбит на горизонтальные и вертикальные прямоугольники, часть из которых не видна. По нажатию кнопки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru