Меню Рубрики

Установка tasm на dos

Ассемблер с нуля. Часть 3. Ассемблер для DOS.

Выбираем ассемблер для DOS.

Изучать практическое программирование мы начнём с написания простейших программ для древней 16 битной операционной системы MS-DOS. В этом нам поможет ассемблер для DOS — TASM (Turbo Assembler) от Borland. Для того времени — это самый популярный ассемблер с прекрасным функционалом и возможностями, в состав которого входит прекрасный для того времени отладчик TD (Turbo Debuger).

Вы узнаете основы кодирования на ассемблере, которые вы с небольшими корректировками и изменениями сможете использовать при создании современных 32 и 64 битных приложений для Windows.

Как указывалось ранее, одной из наших задач является усвоение навыков обучения программирования на любом языке программирования. Поэтому в DOS кроме ассемблера мы напишем простейшую программу на Си и попробуем сравнить полученный результат с ассемблерным кодом, используя отладчик и дизассемблер.

DOSBox или чистый DOS.

Среда — операционная система MS-DOS. Мы обойдёмся виртуальной машиной, приспособленной для современного пользователя — DOSBox. Можно воспользоваться поддержкой MS-DOS программ, которая имеется в операционках Windows до восьмой версии, но более полную совместимость с MS-DOS программами, которые мы будем использовать обеспечит только DOSBox.

Если Вы любитель даунгрейда, любите только «натуральное» то никто не против использования реальной операционки MS-DOS. Установить операционную систему DOS на старую или современную машину вам поможет Google. Мы можем рекомендовать посетить сайт любителей MS-DOS и древнего железа ms-dos.biz.

Необходимое программное обеспечение.

Основной софт, который нам понадобиться, чтобы бегло изучить ассемблер для DOS:

  • TASM 2.0 (Turbo Assembler ver. 2.0)- 16 битный ассемблер для DOS фирмы Borland;
  • TC 2.0 (Turbo C 2.0) — среда программирования и компилятор Си фирмы Borland;
  • TD (Turbo Debugger) — отладчик фирмы Borland;
  • SR (Sourcer) — популярный дизассемблер для DOS;
  • IDA (Interractive Disassembler — DOS версия) — ещё один популярный дизассемблер;
  • T-HELP — перечень прерываний (функций) MS-DOS в удобном виде.
  • Hiew — очень популярный в свое время в среде программистов и хакеров редактор DOS с расширенными возможностями. Позволяет дизассемблировать код налету, вносить изменения и снова ассемблировать изменённый файл;
  • TASMED — удобная среда программирования на ассемблере для DOS.

Устанавливаем пакет программ.

Об установке и использовании DOSBox поговорим в отдельном цикле статей. Не будем обсуждать и остальные программы. Если интересно, то Гугл в помощь. У нас конкретная цель — понимание сути программирования на примере изучения ассемблера.

Скачиваем архив DOS-1.rar и разархивируем. Должна появиться папка DOS, а в ней три директории: C, D, DOSBox. Заходим в пмпку DOSBox и кликаем на DOSBox.exe. Запустится эмулятор и автоматически — Norton Comander 5.0. Все необходимые программы установлены и настроены для наших целей. Директории C, D смонтированы как диски C:\, D:\ для удобства работы. На указанных дисках вы найдёте множество дополнительных утилит для удобства программирования в системе MS-DOS.

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

источник

Ассемблер с нуля. Часть 5. Turbo Assembler.

Turbo Assembler — удачный пакет разработки DOS программ.

Изучать ассемблер мы начнём со знаменитого TASM. В годы господства MS-DOS Турбо ассемблер от Borland был одним из самых распространённых средств создания программ, составляя конкуренцию MASM. Очень продуманный и приятный ассемблер, создающий хороший код. Скачать TASM можно с нашего сайта — ссылка на архив в конце статьи.

Мы создадим простейшую программу и на её примере рассмотрим основные этапы разработки приложений. Программа после запуска выведет на экран сообщение «Hello World!» и завершится. Вначале не будем пользоваться средой программирования TASMED, а сделаем всё ручками, используя текстовый редактор и Турбо Ассемблер.

Этапы создания программы с использованием TASM.

Создание программы, которая будет работать в операционной системе MS-DOS включает в себя следующие шаги:

  1. Написание кода(текстовый редактор или среда разработки).
  2. Трансляция (tasm.exe).
  3. Компановка или линковка (link.exe).
    Результат вышеназванных действий — создание исполняемого файла (EXE или COM). Далее следует:
  4. Отладка (отладчик Turbo Debugger, дезассемблер Sourcer или >Строка в консоли «tasm ?» выведет справку.

Рассмотрим поподробнее каждый из этапов.

  1. Код пишем на ассемблере. Можно использовать простой текстовый редактор. Основное требование — кодировка ASCII. Большинство текстовых редакторов, как простых, так и более сложных во времена DOS работали с текстом указанной кодировки.
  2. Трансляция (компиляция) представляет собой перевод языка программирования в машинный код. В результате трансляции получается объектный файл с расширением OBJ. В TASM трансляция выполняется с помощью tasm.exe.
  3. Компановка (линковка) программы выполняет две задачи:
  • Соединение объектных файлов между собой.
  • преобразование из формата объектного файла в формат исполняемого файла (в системе MS-DOS — это файлы с расширением COM, EXE).В результате линковки создаётся исполняемый файл. В TASM компоновка выполняется с помощью tlink.exe.

Трансляция и линковка.

Зачем создание программы разделено на две части — трансляцию и линковку:

  1. Для того, чтобы дать возможность разделить работу по написанию кода на определённое число программистов — каждый пишет свой набор функций и сохраняет код в виде объектного файла. Затем объектные файлы соединяются
    и получается полноценный программный продукт.
  2. Чтобы можно было скрывать исходный код программ, продавая «полуфабрикат» — объектный файл (*.obj).
  3. Для ускорения просчёта машиной больших по объёму программ. Во времена дефицита мощности процессоров это было важно. Если проект большой, то предварительно скомпилированная часть кода (уже проверенная и отлаженная) существенно разгружала компьютер.
  4. Для совместимости использования различных ассемблеров (masm, tasm) — объектный файл стандартный и компонуется (линкуется) различными видами ассемблеров.
  5. Для быстрого и удобного переноса кода, написанного на ассемблере в программы на Си, C++. Такая же история: *.obj файлы, генерированные TASM замечательно воспринимается Turbo C, Turbo C++ и другими линкерами языков высокого уровня.

К слову сказать, не все ассемблеры имеют «двухпроходный» подход к созданию кода. Например, Fasm (очень хороший ассемблер), создаёт программу одним действием. *.obj файл не создаётся. Это несколько усложняет вставки написанного на Fasm кода в проекты, созданные другими средствами разработки программ. В принципе, это основной недостаток Fasm, с лихвой перекрывающийся остальными его достоинствами.

Впрочем, в настоящее время всё выглядит немного иначе. Царствуют на рынке среды разработки программ, подходящие к вопросам совместимости эгоистично (Embarcadero RAD Studio, MS Visual Studio).

Для удобства создания программ, можно создать отдельные «батники», куда вписать команды трансляции и компоновки.

Скачать TASM можно по нашей ссылке.

Вы можете скачать TASM по ссылке с нашего сайта. Кроме TASM для DOS в архиве вы найдёте все необходимые программы для разработки приложений в операционной системе MS-DOS, которые Вам понадобятся при прохождении нашего курса обучения.

В директории «TASM» имеются необходимые «батники» (ASM-COM.BAT, ASM-EXE.BAT, COMPLEX.BAT) для создания исполняемых файлов *.com, *.exe, сборки кода из нескольких ассемблерных (*.asm) файлов. Для их правильного использования, необходимо, чтобы файлы с кодом на ассемблере имели следующие имена:

  • prg.asm (ASM-COM.BAT, ASM-EXE.BAT).
  • prg.asm, prg1.asm (COMPLEX.BAT).

Более подробно — в следующей статье, где мы напишем нашу первую программу на ассемблере.

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

источник

MASM, TASM, FASM, NASM под Windows и Linux

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

Используется для создания драйверов под Windows.

По ссылке переходим на сайт и скачиваем пакет (masm32v11r.zip). После инсталляции программы на диске создается папка с нашим пакетом C:\masm32. Создадим программу prog11.asm, которая ничего не делает.

Произведём ассемблирование (трансляцию) файла prog11.asm, используя ассемблер с сайта masm32.


Ключ /coff используется здесь для трансляции 32-битных программ.
Линковка производится командой link /subsystem:windows prog11.obj (link /subsystem:console prog11.obj)

MASM — один из немногих инструментов разработки Microsoft, для которых не было отдельных 16- и 32-битных версий.

Также ассемблер версии 6. можно взять на сайте Кипа Ирвина kipirvine.com/asm, автора книги «Язык ассемблера для процессоров Intel».

Кстати, вот ссылка на личный сайт Владислава Пирогова, автора книги “Ассемблер для Windows”.

Далее скачаем MASM (версия 8.0) с сайта Microsoft по ссылке. Загруженный файл носит название «MASMsetup.exe». При запуске этого файла получаем сообщение -«Microsoft Visual C++ Express Edition 2005 required».

Открываем этот файл архиватором (например 7zip). Внутри видим файл setup.exe, извлекаем его, открываем архиватором. Внутри видим два файла vc_masm.msi,vc_masm1.cab. Извлекаем файл vc_masm1.cab, открываем архиватором. Внутри видим файл FL_ml_exe_____X86.3643236F_FC70_11D3_A536_0090278A1BB8. Переименовываем его в файл fl_ml.exe, далее, произведём ассемблирование файла prog11.asm, используя ассемблер fl_ml.exe.

Также MASM можно найти в папке с Visual Studio (у меня VS 10) вот здесь: C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\ml.exe.

Для того, чтобы запустить на 32- или 64-разрядной системе и создавать программы, работающие как под 32-, так и под 64-разрядной Windows, подходит MASM32 (ml.exe, fl_ml.exe). Для того, чтобы работать на 32- и 64-разрядных системах и создавать программы, работающие под 64-разрядной Windows, но неработающие под 32-разрядной нужен ассемблер ml64.exe. Лежит в папке C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\amd64 и вот здесь — C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\x86_amd64.

Программный пакет компании Borland, предназначенный для разработки программ на языке ассемблера для архитектуры x86. В настоящее время Borland прекратила распространение своего ассемблера.

Скачать можно, например, здесь. Инсталлятора нет, просто извлекаем программу. Вот исходник из книги Питера Абеля (рис. 3.2) «Язык Ассемблера для IBM PC и программирования».

Выполним ассемблирование (трансляцию) файла abel32.asm.

Корректность работы программы можно проверить, произведя линковку (tlink.exe) объектного файла и запустив полученный файл в отладчике.

Как было сказано выше, MASM можно использовать для работы с 16-битными программами. Выполним ассемблирование (трансляцию) программы abel32.asm с помощью ассемблера MASM:

Ключ /coff здесь не используется.
Линковка производится файлом link16.exe

В статье Криса Касперски «Сравнение ассемблерных трансляторов» написано, что «FASM — неординарный и весьма самобытный, но увы, игрушечный ассемблер. Пригоден для мелких задач типа „hello, world“, вирусов, демок и прочих произведений хакерского творчества.»

Скачаем FASM с официального сайта. Инсталлятора нет, просто извлекаем программу. Откроем fasm editor — C:\fasm\fasmw.exe. В папке C:\fasm\EXAMPLES\HELLO есть файл HELLO.asm.

Откроем файл HELLO.asm из fasmw.exe. Изменим строку include ‘win32ax.inc’ на строку include ‘c:\fasm\INCLUDE\WIN32AX.INC’. Запускаем из меню Run → Run.

Вот ссылки на ресурсы, посвященные FASM:

Для того, использовать FASM в Linux (у меня Ubuntu), скачаем соответствующий дистрибутив (fasm-1.71.60.tgz), распакуем его, в папке у нас будет бинарный файл fasm, копируем этот файл в /usr/local/bin для того, чтобы можно было запускать его из консоли, как любую другую команду.Выполним ассемблирование программы hello.asm из папки fasm/examples/elfexe/hello.asm.

Корректность работы программы можно проверить в отладчике.

Nasm успешно конкурирует со стандартным в Linux- и многих других UNIX-системах ассемблером Gas.

Nasm в Linux можно установить его с помощью менеджера пакетов или из командной строки: в дистрибутиве Debian (Ubuntu) командой apt-get install nasm, в дистрибутивах Fedora, CentOS, RedHat командой yum install nasm.

Создадим программу, которая 5 раз выводит сообщение “Hello”. Пример взят из книги Андрея Викторовича Столярова “Программирование на языке ассемблера NASM для ОС UNIX”. Учебник, а также библиотека “stud_io.inc” есть на личном сайте автора.

Выполним ассемблирование и линковку и запустим файл hello.asm.

Для 64bit необходимо использовать команду nasm -f elf64 hello.asm

NASM для Windows можно установить, скачав соответствующий дистрибутив с соответствующего сайта.

Ассемблирование:
nasm -f bin имя_файла.asm -o имя_файла.com

Ссылки на ресурсы, посвященные Nasm:

Стандартный ассемблер практически во всех разновидностях UNIX, в том числе Linux и BSD. Свободная версия этого ассемблера называется GAS (GNU assembler). Позволяет транслировать программы с помощью компилятора GCC.

Из учебников удалось найти только книгу на английском «Programming from the ground up». На русском удалось найти только одну главу из книги С. Зубкова «Assembler для DOS, Windows и UNIX».

Возьмем пример программы, которая ничего не делает, с сайта. Создадим программу gas.s

Выполним ассемблирование (трансляцию), линковку и запуск программы:

Если в данной программе изменить _start на main, то можно выполнить ассемблирование (трансляцию) и линковку компилятором gcc.

Выполним ассемблирование (трансляцию), линковку и запуск программы:

Выводы: если вы изучаете программирование под Windows, то вы можете остановить свой выбор на Masm; Tasm больше не поддерживается, но для обучения по старым классическим учебникам подойдёт.
Под Linux Gas подойдет тем, кто использует GCC, а тем, кому не нравится синтаксис Gas, подойдёт Nasm.

источник

Ассемблер с нуля. Часть 4. Кратко об MS-DOS.

Операционная система MS-DOS — необходимый минимум.

Программирование на языке низкого уровня подразумевает знание операционной системы, для которой пишутся приложения. Операционная система MS-DOS — Microsoft Disk Operating System. Её основные назначение, как и всех операционных систем — обеспечить взаимодействие между софтом и железом, человеком и компьютером. Операционная система — это основная программа, которая как минимум должна быть запущена на машине. Ниже упрощённо описан необходимый минимум, который необходимо знать о системе, чтобы начать программировать.

Файлы, папки, диски.

Операционная система MS-DOS работает с файлами, папками (по сути — подвиды файлов), дисками.
Файлы делятся на виды:
1. Исполняемые файлы.
2. Файлы данных.
(Кстати, опять мы встречаемся с двумя понятиями: кодом и данными).
Файлы могут взаимодействовать друг с другом. Программа может состоять из одного исполняемого файла, а может включать в себя множество файлов.

Память.

Как код, так и данные в компьютере присутствуют в следующих видах памяти:

  1. Долговременной памяти — работает медленно, но имеет большой объём, сохраняет информацию после перезагрузки операционной системы (жёсткий диск компьютера).
  2. Кратковременной (оперативной) памяти — работает быстро, имеет небольшой объём, не сохраняет информацию после перезагрузки операционной системы (т.н. «оперативка»).
  3. Кэш процессора — память, являющаяся составной частью процессора, работает очень быстро, имеет небольшой объём, не сохраняет информацию после перезагрузки операционной системы (физически обычно встроен в процессор).

Процессор компьютера напрямую способен работать только с оперативной памятью. Операционная система делит оперативную память на различные участки по предназначению. В одни участки она записывает свои функции и данные, другие оставляет для пользовательских программ.

При запуске исполняемого файла операционная система, кроме всего прочего, «проецирует» файл, то есть переписывает его с жёсткого диска в оперативную память. Но переписывает не копируя, а делая записи в определённой последовательности, в определённые места и в определённом объёме.

Пока это всё, что нужно знать об оперативной памяти начинающему программисту. Такие часто используемые понятия для работы с памятью в операционной системе MS-DOS, как cm, xms, ems, umb нам, для создания ассемблерного кода, не понадобятся. Для написания 32 и 64 битных Windows приложений они тем более не нужны.

Структура памяти операционной системы MS-DOS.

Файлы данных и исполняемые файлы.

Файлы данных в операционной системе MS-DOS могут иметь различные (практически любые) расширения (TXT, INI, MAC, ASM, CPP). С файлами данных работают исполняемые файлы.

Информация в исполняемых файлах разбивается на сегменты. Один сегмент в системе MS-DOS не может превышать 64 Кбайта. Связано это с особенностями работы железа.
Исполняемые файлы в системе MS-DOS бывают трёх видов, которые соответствуют расширениям:

Рассмотрим их поподробнее:

  1. Файлы с расширением .COM состоят из одного сегмента, в котором размещаются код, данные и стек. В результате получаем крохотную, «сжатую» программу, размер которой не может превышать 64 Кбайта. В формате COM для системы MS-DOS можно писать любые программы — хватило бы места для данных и кода. Отдельные программы (обработчики прерываний, резидентные программы) обычно пишутся в формате COM.
  2. Файлы с расширением EXE для кода, данных и стека имеют отдельные сегменты. Число сегментов данных и кода не ограничено, что даёт возможность создания исполняемых файлов большого размера, не ограничивая объёмы кода и данных.
  3. Файлы с расширением BAT — «батники». Они также выполняют определённые действия, однако не являются полноценными исполняемыми программами. В батнике можно записать алгоритм запуска определённых файлов типа СОМ или EXE в определённой последовательности и при определённых условиях. Это очень удобно и экономит уйму времени, исключая монотонные и многочисленные действия пользователя.

Ядро системы MS-DOS.

Операционная система MS-DOS в своём минимальном стандартном виде состоит из следующих файлов:

Причём файлы AUTOEXEC.BAT и CONFIG.SYS для запуска операционной системы не обязательны. Эти файлы являются предшественниками реестра Windows и содержат текстовые записи, позволяющие настроить загрузку системы при запуске (организовать меню загрузки, распределить память, запустить отдельные драйверы и программы).

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

источник

Читайте также:  Установка заднего бампера логан 2010

Добавить комментарий