Gui turbo assembler как пользоваться
Перейти к содержимому

Gui turbo assembler как пользоваться

  • автор:

 

Name already in use

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

GUI Turbo Assembler

Software Informer Virus Free award

GUI Turbo Assembler is an essential Integrated Development Environment for Assembly language. GUI Turbo Assembler comes integrated with Borland Turbo Assembler and Turbo Linker for assembling and building assembly codes. It is powered by DOSBox for handling Borland Turbo Assembler and Turbo Linker in 64-bit environment. The IDE is loaded with powerful feature like syntax highlighting, code folding along with the other regular features to work with any assembly source code. It supports compiling and building of assembly codes to windows executable with a single click.

The current version of IDE, boast of tab browsing, thereby allowing users to work with multiple files simultaneously. With its simple UI and powerful functionalities, it proves to be a great tool and an alternative to the command-line assembler and linker. Check changelog.txt, to know more about the new changes made over previous versions.

This package comes with Turbo Assembler 4.1, Turbo Linker 7.1 and DOSBox 0.74

GUI Turbo Assembler is developed using Microsoft .NET Framework 4.0 and you should have it pre-installed.

TASM Visual — IDE для компилятора Borland Turbo Assembler [Студентам]

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

Введение:
При работе на турбо ассемблере, программисты испытывают определенное неудобство ввиду отсутствия среды разработки. Познакомившись с имеющимися в мире вариантами таких сред, я разочаровался, так или иначе хороших продуктов не существовало. Одни были условно-платными, вторые с неработающими функционалом, другие просто старые. Выбирая тему свой курсовой я решил отойти от ассемблерского кода и силами .NET создать ту искомую среду разработки, которая удовлетворила бы большинство потребностей программистов Borland Turbo Assembler и может быть дала перспективы изучения и работы с tasm новичкам.

Цель работы:
Создание единой интегрированной среды разработки для компилятора Borland Turbo Assembler (16 и 32 –битных версий).

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

Скриншот среды:
image
image

Лабораторная работа №1 Начало работы на языке ассемблера

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

Язык ассемблера — это символическое представление машинного языка. Все процессы, происходящие на вашем компьютере, так или иначе, команды (инструкции) машинного языка. Отсюда понятно, что, несмотря на общее название, язык ассемблера для каждого типа компьютера свой. По-настоящему решить проблемы, связанные с аппаратурой невозможно без знания языка ассемблера.

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

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

Примечание: если вы используете редактор Word, сохраняйте файлы под фильтром «Текст DOS».

.MODEL SMALL

Message DB ‘Привет!’,13,10,’$’

mov dx,OFFSET Message

Int 21h

Int 21h

После того, как вы введете эту программу, сохраните ее на диске желательно в каталоге C:\Tasm\.

Трансляция. После того, как вы сохранили свой файл, вы захотите запустить программу. Однако, перед тем, как вы сможете ее запустить, вам потребуется преобразовать программу в выполняемый вид. Как показано на Рис.1, где изображен полный цикл создания программы (редактирование, ассемблирование, компоновка и выполнение), это потребует двух дополнительных шагов — трансляции и компоновки.

Рис 1. Полный цикл создания программы на языке ассемблера

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

Для ассемблирования файла Lab1.asm наберите команду:

TASM Lab1

и нажмите клавишу ENTER. Если вы не задали другое имя, файл Lab1.asm будет ассемблирован в файл Lab1.obj. (расширение имени файла можно не вводить, ассемблер подразумевает в этом случае, что файл имеет расширение .asm.) На экране вы увидите следующее:

Turbo Assembler Version 4.1 Copyright (C) 1988, 1996 by Borland International Inc (1)

Assembling file:Lab1.asm (2)

Error messages: None (3)

Warning messages: None (4)

Remaining memory: 389K (5)

1 — Турбо ассемблер, версия 4.1; авторские права фирмы Borland, 1988, 1996 гг.; 2 — ассемблирован файл Lab1.asm; 3 — сообщения об ошибках: нет; 4 — предупреждающие сообщения: нет; 5 — остается памяти: 389Кb

Если вы введете файл Lab1.asm в точности так, как показано, то вы не получите никаких предупреждающих сообщений или сообщений об ошибках. Если вы получаете такие сообщения, они появляются на экране наряду с номерами строк, указывающими строки, где содержатся ошибки. При получении сообщений об ошибках проверьте исходный код (текст) программы и убедитесь, что он выглядит точно так, как исходный код в нашем примере, а затем снова ассемблируйте программу.

Компоновка. После ассемблирования файла Lab1.asm вы продвинулись только на один шаг в процессе создания программы. Теперь, если вы скомпонуете только что полученный объектный код в выполняемый вид, вы сможете запустить программу.

Для компоновки программы используется программа TLINK, представляющая собой поставляемый вместе с Турбо ассемблером компоновщик. Введите командную строку:

TLINK Lab1

Здесь опять не требуется вводить расширение имени файла. Tlink по умолчанию предполагает, что этим расширением является расширение .obj. Когда компоновка завершится, компоновщик автоматически присвоит файлу с расширением .exe имя, совпадающее с именем вашего объектного файла (если вы не определили другое имя). При успешной компоновке на экране появляется сообщение:

Turbo Linker Version 3.0 Copyright (c) 1987, 1990 by by Borland International Inc.

В процессе компоновки могут возникнуть ошибки (в данной программе это маловероятно). Если вы получили сообщения об ошибках компоновки, (они выводятся на экран), измените исходный код программы так, чтобы он в точности соответствовал тексту программы в приведенном выше примере, а затем снова выполните ассемблирование и компоновку.

Запуск. Теперь программу можно запустить на выполнение. Для этого перейдите в каталог ‘C:\Tasm\’ наберите в командной строке Lab1 и нажмите ENTER. На экран выведется сообщение:

Это наиболее простой пример написания исходного кода и перевода его в исполняемый файл, где процессы ассемблирования и компоновки использованы без ключей. В приложении 1 и 2 к данной работе описаны ключи Tasm.exe и Tlink.exe. изучите их внимательно, попробуйте проделать выше перечисленные процессы уже с использованием некоторых ключей.

Как, известно, в процесс написания программы большую часть времени занимает отладка. В состав пакет ассемблирования программ входит также файл Td.exe — «Турбоотладчик». Вкратце основы работы с Турбоотладчиком состоит в следующем: для запуска и программы уже готового .exe-файла наберите в командной строке

 

Td Lab1

В появившемся окне Турбоотладчик сообщит о том, что загружена программа. Нажмите Enter, затем F5 и окно Турбоотладчика развернется во весь экран.

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

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

Предложения ассемблера бывают четырех типов:

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

макрокоманды — оформляемые определенным образом предложения текста программы, замещаемые во время трансляции другими предложениями;

директивы, являющиеся указанием транслятору ассемблера на выполнение некоторых действий. У директив нет аналогов в машинном представлении;

строки комментариев, содержащие любые символы, в том числе и буквы русского алфавита. Комментарии игнорируются транслятором.

Для простых программ, содержащих по одному сегменту для кода, данных и стека, хотелось бы упростить ее описание. Для этого в трансляторы MASM и TASM ввели возможность использования упрощенных директив сегментации. Но здесь возникла проблема, связанная с тем, что необходимо было как-то компенсировать невозможность напрямую управлять размещением и комбинированием сегментов. Для этого совместно с упрощенными директивами сегментации стали использовать директиву указания модели памяти MODEL, которая частично стала управлять размещением сегментов и выполнять функции директивы ASSUME (поэтому при использовании упрощенных директив сегментации директиву ASSUME можно не использовать). Эта директива связывает сегменты, которые в случае использования упрощенных директив сегментации имеют предопределенные имена, с сегментными регистрами (хотя явно инициализировать ds все равно придется).

Синтаксис директивы MODEL показан на рис. 2.

Рис. 2 Синтаксис директивы MODEL

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

Таблица 1. Упрощенные директивы определения сегмента

Начало или продолжение сегмента кода

Начало или продолжение сегмента инициализированных данных.

Начало или продолжение сегмента стека модуля. Параметр [размер] задает размер стека

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

При использовании директивы MODEL транслятор делает доступными несколько идентификаторов, к которым можно обращаться во время работы программы, с тем, чтобы получить информацию о тех или иных характеристиках данной модели памяти (см. табл.2).

Таблица 1. Модели памяти

Назначение модели

Код и данные объединены в одну группу с именем DGROUP. Используется для создания программ формата .com.

Код занимает один сегмент, данные объединены в одну группу с именем DGROUP. Эту модель обычно используют для большинства программ на ассемблере

Код занимает несколько сегментов, по одному на каждый объединяемый программный модуль. Все ссылки на передачу управления — типа far. Данные объединены в одной группе; все ссылки на них — типа near

Код в одном сегменте; ссылка на данные — типа far

Код в нескольких сегментах, по одному на каждый объединяемый программный модуль

Директивы определения сегментов .STACK, .CODE и .DATA определяют, соответственно, сегмент стека, сегмент кода и сегмент данных. Например, директива:

определяет стек размером в 200h (512) байт. Что касается стека, то это все, что вы сможете сделать. Необходимо просто убедиться, что в вашей программе имеется директива .STACK, и Турбо Ассемблер выделит для вас стек. Для обычных программ вполне подходит стек размером 200h, хотя в программах, интенсивно использующих стек (например, в программах, содержащих рекурсивные вызовы) может потребоваться стек большего размера.

Директива .CODE отмечает начало сегмента кода. Вы можете посчитать, что для Турбо Ассемблера достаточно очевидно, что все ваши инструкции относятся к сегменту кода. На самом деле Турбо Ассемблер позволяет вам (с помощью стандартных директив определения сегментов) использовать несколько сегментов кода, а директива .CODE указывает Турбо Ассемблеру, в какой именно сегмент надо поместить ваши инструкции. Определение сегмента кода еще проще, чем определение сегмента стека, так как аргументы для директивы .CODE указывать не требуется. Например:

sub ax,ax ; установить аккумулятор в значение 0

mov cx,100 ; число выполняемых циклов

Директива .DATA несколько более сложна. Как можно понять, директива .DATA отмечает начало сегмента данных. В этом сегменте следует размещать ваши переменные памяти. Например:

TopBoundary DW 100

Counter DW ?

ErrorMessage DB 0dh,0dh, ‘***Ошибка***’,0dh,0ah,’$’

Это довольно просто. Вся «сложность» директивы .DATA заключается в том, что до того, как вы будете обращаться к ячейкам памяти в сегменте, определенном с помощью директивы .DATA, нужно явно загружать сегментный регистр DS идентификатором @data. Так как сегментный регистр можно загрузить из регистра общего назначения или ячейки памяти, но в него нельзя загрузить константу, регистр DS обычно загружается с помощью последовательности из двух инструкций:

(Вместо регистра AX можно использовать любой общий регистр). Данная последовательность инструкций устанавливает DS таким образом, чтобы он указывал на сегмент данных, который начинается по директиве .DATA.

Директивы определения данных позволяют определить переменные в памяти различного размера:

«Hello world» on TASM или учим ассемблер как 20 лет назад

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

Чтобы что-то понять лучше нужно это делать, именно поэтому я нашёл книгу, которая мне немного поможет в этом — «Основы языка ассемблера» К.Г.Финогенов. Сегодня этому учебнику уже 20 лет, но защищенный режим процессора х86 по-прежнему не измена. Детище интел до сих пор на коне, что делает его привлекательным для изучения. А современные компьютеры позволяют довольно успешно эмулировать работу своих предков. В статье больше пойдет речь о том как можно подобрать инструмент для изучения ассемблера, и для примера мы соберем «Hello world» из книги.

TASM до сих пор изучают в некоторых университетах, поэтому будем считать что он справляется с образовательной целью. Где же взять исходники? В статье «MASM, TASM, FASM, NASM под Windows и Linux«, находим необходимый нам TASM, успешно работающий из Dosbox. Однако, мы не сможем проделать линкование, так как нам не будет хватать библиотеки DPMI16BI.OVL, которую необходимо поместить в папку с TASM.

Далее нам необходимо установить DOSbox — программа хороша тем, что одинаково успешно работает на Windows, Linux, Mac, а также сразу имеет установленную операционную систему. Если вы никогда не работали с DOSBox, то в интернете полно гайдов о том как её настроить для своей системы ( например настройка для linux). В целом настройка конфигурационного файла и горячих клавиш будет одинаковой на разных системах.

После того как вы добавите папку (жесткий диск) для вашей DosBox, нам необходимо будет создать файл ассемблера. (Также стоит помнить команды DOS для отображения файлов и перехода в каталог — DIR CD). Для графической навигации можете установить файловый менеджер вроде Norton Commander.

Создадим наш hello.asm в любом текстовом редакторе

Для простых случаев можно запускать транслятор и компоновщик TASM без параметров. После запуска tasm hello.asm в нашем каталоге появится два файла — hello.obj hello.map. Их легко можно открыть в редакторе и посмотреть что происходит с программой. После этого можно пропустить наш объектный файл через транслятор, чтобы получить исполняемый файл.

Что будет если забыть добавить файл-библиотеку Добавляем необходимую библиотеку и наслаждаемся результатом

Вот так довольно легко и просто можно настроить себе среду для обучения одного из intel ассемблера.

 

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *