Как запустить программу на ассемблере

В этом документе кратко описан процесс установки учебной среды на основе ассемблера MASM под ОС Windows, а также порядок работы с ней.

Установка MASM

  1. Скачайте архив c MASM с сайта arch32.cs.msu.su.
  2. Распакуйте архив в каталог C:masm32 (необходимо использовать именно такой путь). Убедитесь, что в каталоге C:masm32 оказались каталоги bin , lib , include .
  3. Создайте где-либо в удобном месте рабочий каталог для ваших программ, например, C:asm или D:studysem2 . Рабочий стол Windows или папка «Мои документы» не являются подходящими местами для рабочего каталога — проследите, чтобы в полном пути к каталогу не было русских букв или пробелов. Далее таким каталогом будет считаться C:work .
  4. Скачайте файл prompt.bat и положите его в ваш рабочий каталог.

Простейшая программа

Для следующего шага вам потребуется текстовый редактор, пригодный для работы с программным кодом. Заметим, что Microsoft Word или встроенный в Windows редактор WordPad являются текстовыми процессорами и для работы с программным кодом непригодны. Редактор Notepad (Блокнот) подходит для работы с текстовыми файлами (plain text), но неудобен в качестве программистского редактора — в нем отсутствует подсветка синтаксиса и другие стандартные для таких редакторов функции.

Удобная разработка и отладка программ на Turbo Assembler в Windows 10 без консоли

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

Примечание: Если вы решили скачать Notepad2, при первом запуске установите ширину табуляции (Tabulator width) в значение 8 при помощи меню Settings > Tab Settings.

Создайте в вашем рабочем каталоге файл hello.asm следующего содержания:

include console.inc .code Start: mov ecx, 5 again: outstrln ‘Hello World’ dec ecx jnz again exit end Start

Примечание: В Notepad2 при сохранении введите имя файла hello.asm , и подсветка синтаксиса включится автоматически.

Эта программа выводит пять раз строчку “Hello World” на экран. Для вывода текста используется макрос outstrln , который определен в файле console.inc .

Трансляция и запуск программы

Дважды щелкните по файлу prompt.bat , который вы скачали на шаге установки. Откроется окно командной строки. Убедитесь, что все сделано правильно, набрав команду dir и нажав Enter . Вы должны увидеть, что в текущем каталоге (вашем рабочем каталоге) находятся файлы hello.asm и prompt.bat :

C:work>dir Volume in drive C has no label. Volume Serial Number is C00A-56A9 Directory of C:work 03/05/2017 11:16 AM . 03/05/2017 11:16 AM .. 03/05/2017 11:11 AM 158 hello.asm 03/05/2017 10:29 AM 81 prompt.bat 2 File(s) 239 bytes 2 Dir(s) 133,457,559,552 bytes free

Примечание для тех, кто никогда прежде не работал с командной строкой. Взаимодействие с ней устроено следующим образом: командная строка выводит приглашение (в примере выше это C:work> ), далее пользователь вводит команду (выше — dir ) и нажимает клавишу Enter , после чего на экране появляется вывод команды, то есть результат ее работы.

Assembler. Введение [#1]

Для запуска программы требуется ее оттранслировать. Первый шаг — запуск ассемблера MASM, который построит по исходному тексту програмы объектный файл:

Читайте также:
Как загрузить программу на ноутбук без дисковода

C:work>ml /c /coff hello.asm Microsoft (R) Macro Assembler Version 6.14.8444 Copyright (C) Microsoft Corp 1981-1997. All rights reserved. Assembling: hello.asm

Аргумент /c инструктирует ассемблер выполнить только трансляцию в объектный файл, без компоновки (которую мы выполним чуть позже). Аргумент /coff указывает формат объектного файла — COFF (Common Object File Format).

В рабочем каталоге появится файл hello.obj . Запустите компоновщик:

C:work>link /subsystem:console hello.obj Microsoft (R) Incremental Linker Version 5.12.8078 Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

Аргумент /subsystem:console говорит компоновщику, что нужно построить консольное Windows-приложение.

В рабочем каталоге появится файл hello.exe . Это исполняемый файл, который уже можно запустить:

C:work>hello Hello World Hello World Hello World Hello World Hello World

Как это устроено

Командный файл prompt.bat запускает окно командной строки и задает переменные окружения так, чтобы программы ml и link были доступны без указания пути к ним, а пути к include- и lib-файлам MASM также были известны.

Пути заданы жестко, поэтому и требовалось распаковать архив в строго определенный каталог.

Командный файл для упрощения запуска

Когда вам надоест каждый раз набирать три команды для трансляции и запуска программ, создайте такой командный файл (назвать его можно, например, mkr.bat — то есть make/run):

Использовать его можно будет следующим образом:

C:work>mkr hello.asm Assembling: hello.asm Hello World Hello World Hello World Hello World Hello World

Несколько комментариев по устройству этого командного файла:

Файл mkr.bat можно или копировать в каждый каталог, где вы планируете размещать исходные тексты программ на ассемблере, или поместить его в каталог C:masm32bin , и тогда выполнять его будет можно из любого каталога, при условии, что вы запустили командную строку при помощи prompt.bat .

Итог

То, что получилось в итоге — это простейшая система программирования, состоящая из транслятора (ассемблера MASM), текстового редактора (Notepad2 или иного, если вы его предпочли) и примитивной системы сборки на единственном командном файле.

Несмотря на простоту этой системы, она основывается на тех же общих принципах, что и более сложные системы программирования. Подробнее с этим вы сможете познакомиться на втором курсе.

Источник: warmland.ru

Assembler – Урок 0: Установка компилятора и запуск первой программы через DOSBox

В данном курсе планируется разобрать основные особенности программирования на самой простой реализации assembler – TASM. Этих знаний лично мне вполне хватило, чтобы на отлично сдать ЭВМ в институте и закончить все лабораторные работы. Во многих уроках будет домашние задание по их мотивам.

Для начала давайте установим наш старенький компилятор.
Ссылка

Почему именно vk.com?

Я прекрасно понимаю, что это ещё тот колхоз делиться файлами через обсуждения VK, но кто знает, во что может превратиться эта маленькая группа в будущем.

После распаковки файлов, советую сохранить их в папке Asm на диск C, чтобы иметь меньше расхождений с представленным тут материалом.

Для запуска компилятора нам так же потребуется эмулятор DOSBox. Он и оживит все наши компоненты. Скачаем и установим его!
Ссылка

В папке Asm я специально оставил файл code.asm. Именно на нём мы и потренируемся запускать нашу программу. Советую сохранить его копию, ибо там хранится весь код, который в 99% случаев будет присутствовать в каждом вашем проекте.

s_s segment s_s ends d_s segment d_s ends c_s segment assume ss:s_s, ds:d_s, cs:c_s begin: mov ax, d_s mov ds, ax mov ax, 0 ; Your code needs to be here mov ah, 4ch int 21h c_s ends end begin

Читайте также:
Как сделать чит машину в кар паркинг без программ

Итак. Запускаем наш DOSBox и видим следующее:

Для начала нам нужно смонтировать диск, на который вы сохранили вашу папку Asm. У меня это диск C, поэтому я прописываю следующую команду:

mount d: c:asm

Здесь d: это не реальный диск на вашем компьютере, а виртуальный. С таким же успехом вы можете назвать его i или s. А вот C это наоборот реальный диск. Мы прописываем путь до наших файлов ассемблера.

Теперь, откроем смонтированный диск:

Прописав команду dir, вы сможете увидеть все файлы, которые там хранятся. Здесь можно заметить и наш файл CODE с расширением ASM, а так же дату его создания.

И только теперь мы начинает запускать наш файл! Бедные программисты 20 века, как они только терпели всё это? Пропишем следующую команду:

tasm code.asm

После мы увидим следующее сообщение, а наша директория пополнится новым файлом с расширением OBJ.

Теперь пропишем ещё одну команду:

tlink code.obj

В нашей папке появилась ещё пара файлов – CODE.MAP и CODE.EXE. Последний как раз и есть исполняемый файл нашего кода assembler.

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

td code

Этот старинный интерфейс насквозь пропитан духом ушедшей эпохи старых операционных систем. Тем не менее…

Нажав F7 или fn + F7 вы сможете совершить 1 шаг по коду. Синяя строка начнёт движение вниз, изменяя значения регистров и флагов. Пока это всего лишь шаблон, на которым мы потренировались запускать нашу программу в режиме дебага. Реальное “волшебство” мы увидим лишь в следующих уроках. Пока давайте лишь ознакомимся с имеющимися разделами.

CS

Code segment – место, где turbo debug отражает все найденные строки кода. Важное замечание – все данные отражаются в TD в виде 16-ричной системы. А значит какая-нибудь ‘12’ это на самом деле 18, а реальное 12 это ‘C’. CS аналогичен разделу “Begin end.” на Pascal или функции main.

DS

Data segment, отражает пока все мусорные данные, которые обнаружил TD. Справа мы видим их символьную (char) интерпретацию. В будущем мы сможем увидеть здесь наш “Hello, world”, интерпретируемый компилятором в числа, по таблице ASCII. Хорошей аналогией DS является раздел VAR, как в Pascal. Пока будем считать, что это одно и тоже.

SS

Stack segment – место хранения данных нашего стека. Возможно, вы уже слышали о такой структуре данных. Если нет, обязуюсь пояснить в последующих статьях.

Регистры

Все эти ax, bx, cx, si, di, ss, cs и т. д. – это наши регистры, которые используются как переменные для хранения данных. Да, это очень грубое упрощение. Переменные из Pascal и регистры Assembler это не одно и тоже, но надеюсь, такая аналогия даёт более чёткую картину. Здесь мы сможем хранить данные о циклах, арифметических операциях, системных прерываниях и т. д.

Флаги

Все эти c, z, s, o, p и т.д. это и есть наши флаги. В них хранится промежуточная информация о том, например, было ли полученное число чётным, произошло ранее переполнение или нет. Они могут хранить результат побитого сдвига. По опыту, могу сказать, на них обращаешь внимание лишь при отладке программы, а не во время штатного исполнения.

Читайте также:
Составить программу которая подсчитывает количество слов

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

Ещё одно замечание. Если вы измените данные исходного файла с расширением .ASM, то вам придётся совершить все ранее описанные операции вновь, ибо обновив например code.asm вы не меняете code.obj или code.exe.

Маленькая шпаргалка для заметок:

  1. mount d: c:asm – создаём виртуальный диск, где корень –папка asm
  2. d: — открываем созданный диск
  3. tasm code.asm – компилируем исходный код
  4. tlink code.obj – создаём исполняемый файл
  5. td code – запускаем debug
  6. F7 – делаем шаг в программе

Буду ждать комментарии от всех, кому интересен Assembler. Чувствую, я где-то мог накосячить в терминологии или обозначении того или иного элемента. Но статья на Habr отличный повод всё повторить.

Источник: temofeev.ru

Создание проекта на языке ассемблера в Microsoft Visual Studio Express 2010

Создание проекта консольного или оконного Windows-приложения не отличается от рассмотренного для языков программирования Си и C++.

После того, как в Visual Studio появилось окно проекта (в левой части появившегося окна отображается Обозреватель решений), для добавления нового файла программы в проект выбираем по правой кнопке мыши на папке Файлы исходного кода меню Добавить->Создать элемент.
Microsoft Bisual StudioВ появившемся окне выбираем Файл C++ (.cpp), задаем имя файла и вручную добавляем к нему расширение asm. Нажимаем кнопку Добавить.
Проект на языке ассемблера в Visual Studio

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

Далее необходимо сообщить среде разработки, что данный файл является программой на языке ассемблера, и для корректного включения его в проект требуется использовать Microsoft Macro Assembler. Для этого выбираем для проекта (по правой клавише мыши) опцию Настройки построения.

Настройки построения

Microsoft Macro Assembler

В появившемся окне ставим галочку для masm (Microsoft Macro Assembler) и нажимаем OK.
Теперь нужно проверить, что для файла на языке ассемблера установился соответствующий инструмент сборки. По правой кнопке мыши для файла с расширением .asm выбираем опцию Свойства.

Свойства проекта

В появившемся окне для выбранного файла отмечаем инструмент сборки Microsoft Macro Assembler.

Инструмент сборки

Для построения проекта выбираем меню Отладка->Построить решение.

Построить решение

В случае успешного построения в нижней части окна отображается Построение: успешно 1.

Построить решение

Для запуска приложения выбираем меню Отладка->Начать отладку.

Запуск приложения на выполнение

Результат выполнения

Результат выполнения программы:

Изменить тип приложения с консольного на оконное

Изменение платформы приложения

Чтобы убрать консоль (поменять тип приложения с консольного на оконное, или наоборот) необходимо обратиться к меню Свойства проекта, вызванного по правой кнопке мыши.
В появившемся окне выбрать раздел Компоновщик->Система, и в разделе Подсистема поменять тип с Консоль на Windows (или наоборот).

Выбор консольного или оконного приложения

Запуск оконного приложения

Повторная сборка и запуск программы на выполнения выдадут следующий результат (консоли нет):

Подсветка синтаксиса языка ассемблера

Для того, чтобы включить подсветку синтаксиса языка ассемблера в Microsoft Visual Studio Express 2010 необходимо загрузить файл usertype и распаковать его в папку

C:Program Files (x86)Microsoft Visual Studio 10.0Common7IDE

Для подключения подсветки синтаксиса выбираем меню Сервис->Параметры

Подсветка синтаксиса ассемблера

В появившемся окне выбрать Текстовый редактор->Расширение файла и вручную добавляем расширение asm. Нажимаем кнопку Добавить, затем — OK.

Добавление расширения файла asmРасширение файла asmПосле перезапуска Microsoft Visual Studio Express 2010 подсветка синтаксиса языка ассемблера будет активна.

Комментариев к записи: 23

Источник: prog-cpp.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru