Архив рубрики: Программы

Программы на языке Ассемблер

VM DOS

VM DOS

Подождите пока DOS машина подсчитает оперативную память(640К), затем введите дату и время, либо просто нажмите энтер  два раза. И все , можно приступать к работе. 

На диске A находиться TASM с помощью него можно собрать код ассемблера. Также есть редактор текста EDITV, с его помощью Вы можете  создавать и редактировать текстовые файлы.

К примеру чтоб собрать файл asm(допустим hello.asm) , для этого мы пишем tasm hello.asm. Если в файле нет ошибок мы получаем hello.obj, далее нам нужно слинковать этот файл, это сделаем с помощью линкера от Майкрософт (link.exe он также есть на нашей машине) для этого просто вводим link hello затем все оставляем по умолчанию нажимая энтер и на выходе получаем hello.exe. Набрав hello.exe мы увидим результат действия собранной нами программы на ассемблере.

Для редактирования нужно просто ввести EDITV и имя файла. К примеру мы хотим отредактировать hello.asmeditv hello.asm и можно с легкостью редактировать текст.

Также на диске B есть компилятор языка Си от майкрософт. Также там присутствует батник для сборки кода для этого ван нужно всего навсего ввести cc.bat hello.c  и exe файл готов! Для редактирования также можно использовать EDITV. К примеру находясь на диска А введите: editv b:hello.c .

Данная виртуальна машина эмитирует PC XT . Она поддерживает до 640 кБайт оперативной памяти, также дискеты размером примерно 360 КБ. Подробней о машине можно узнать на сайте jsmachines.net

Желаю Вам успехов в программировании. До встречи на сайте ассемблера.​

TASM

TASM

Turbo Assembler (TASM) — программный пакет компании Borland, предназначенный для разработки программ на языке ассемблера для архитектуры x86. Кроме того, TASM может работать совместно с трансляторами с языков высокого уровня фирмы Borland, такими как Turbo C и Turbo Pascal.  

TASM совместим с MASM, может транслировать его исходники. Начиная с версии 3.0 есть поддержка объектно ориентированности. к сожалению на настоящий момент tasm не поддерживаеться, последння версия была выпущена в 1996 году, а последний патч к ней в 2002.

Так же на нашем сайте есть возможность написать программу прям в браузере. Для этого нужно перейти на страницу виртуальной DOS машины и дождаться ее полной загрузки и можно работать с TASM прям в вашем браузере. На виртуальной машине есть редактор, файл asm с кодом «Hello world» для TASM и конечно же иметься сам TASM и линкер. Желаю успехов Вам!​

Пример программы «hello world» на TASM

.model small
.stack 100h                             ;выделяем под стек в 256 байт
.data 
mesg     db «Hello World! $»   ;затем объявляем переменную 
.code
main:


mov ax, @data ;настраивается сегментный регистр
mov ds, ax
mov ah, 09
mov dx, offset mesg ;вывод сообщения
int 21h
mov ah, 01;ждет нажатия кнопок
int 21h
mov ax,4c00h ;выход
int 21h

 end main

MASM

MASM

Macro Assembler (MASM) — ассемблер для процессоров семейства x86. Первоначально был произведён компанией Microsoft для написания программ в операционной системе MS-DOS и был в течение некоторого времени самым популярным ассемблером, доступным для неё. Это поддерживало широкое разнообразие макросредств и структурированность программных идиом, включая конструкции высокого уровня для повторов, вызовов процедур и чередований (поэтому MASM — ассемблер высокого уровня). Позднее[когда?] была добавлена возможность написания программ для Windows. MASM — один из немногих инструментов разработки Microsoft, для которых не было отдельных 16- и 32-битных версий.

FASM

FASM

flat assembler (fasm) — свободно распространяемый многопроходной ассемблер, написанный Томашем Грыштаром (польск. Tomasz Grysztar). fasm написан на самом себе, обладает небольшими размерами и очень высокой скоростью компиляции, имеет богатый и ёмкий макро-синтаксис, позволяющий автоматизировать множество рутинных задач.[2][3] Поддерживаются как объектные форматы, так и форматы исполняемых файлов. Это позволяет в большинстве случаев обойтись без компоновщика. В остальных случаях нужно использовать сторонние компоновщики, поскольку таковой вместе с fasm не распространяется.

Помимо базового набора инструкций процессора и сопроцессора fasm поддерживает наборы инструкций MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, SSE4a, AVX и 3DNow!, а также EM64T и AMD64 (включая AMD SVM и Intel SMX).

NASM

NASM

NASM (Netwide Assembler) — свободный (LGPL и лицензия BSD) ассемблер для архитектуры Intel x86. Используется для написания 16-, 32- и 64-битных программ.

Полное его название netwide assembler, что в переводе означает расширенный ассемблер.

NASM был первоначально написан Саймоном Тэтхемом совместно с  Джулиан Холлом. В настоящее время поддерживается небольшой группой  программистов во главе с Н. Питер Анвином.  Он доступен как бесплатное программное обеспечение в соответствии с условиями упрощенной (2-пункт) лицензии BSD . 

NASM может работать кроме  х86 на  такие архитектура  как PowerPC и SPARC. Но к сожалению код генерирует к х86. Также nasm поддерживает кроме DOS и Windows еще и FreeBSDKolibriOS  и конечно же Linux
Еще Netwide assembler отличается тем что он очень хорошо документирован.

Пример кода программы на NASM:

org 100h             ; адрес смещения для ком программы

SECTION .code    

mov ah,9h           ;функция дос вывода не экран

mov dx, hello     ;указываем в dx адрес нашего сообщения которое выведем

int 21h                  ;и делаем прерывание дос

mov ah,0x4C      ;эта функция завершает программу     

mov al,0               ;код возврата 0     

int 0x21        ;вызываем ядро операционной системы

SECTION .data    

hellodb ‘Hello world!’,’$’


Затем этот файл сохраняем в файл с расширением asm. К примеру сохраним файл с полным именем hello.asm и положим в одну папку с программой затем запустим программу с колючем  «hello.asm -o  hello.com» и в итоге получим com программу для dos. Подробней можно увидит на рисунке ниже.  Сначала мы зашли в папку с ассемблером и нашим кодом с консоли а затем собрали и выполнили собраний файл. 


В книге Рудольф Марек. Ассемблер на примерах. Базовый курс. можно найти примеры на NASM к OS LINUX а также более подробно изучить его синтаксис.