Вы здесь: HomeУрокиУрок 1 . Основы ассемблера.

Урок 1 . Основы ассемблера.

Приветствую всех на нашем сайте по языку ассемблера. Предлагаю вам серию уроков по ассемблеру. Все примеры к урокам приведены к компилятору TASM.

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

 

Регистры общего назначения

Сначала рассмотрим регистры общего назначения. Они называются АХ, ВХ, СХ и DX (Аккумулятор, База, Счетчик и Данные).  Кроме названий, они больше ничем другим не отличаются друг от друга, поэтому рассмотрим только первый регистр — АХ  . В свою очередь, регистр АХ может быть разделен  на два 8-битных регистра — АН и AL. Если мы заносим в регистр АХ значение 1234h, (12h в АН и 34h в AL), а значение  других регистров общего назначения называются по такому же принципу: ВХ который, в свою очередь, содержит ВН и BL и т.д.

 Сегментные регистры

Эту группу регистров можно отнести к регистрам состояния. Регистры из этой группы используются при вычислении реального адреса (адреса, который будет передан на шину адреса, с помощью которой процессор обращается к оперативной памяти).  Названия этих регистров соответствуют выполняемым функциям: CS (Code Segment, сегмент кода) вместе с IP  определяют адрес памяти, откуда нужно прочитать следующую инструкцию; аналогично регистр SS (Stack Segment, сегмент стека) в паре с SP (SS:SP) указывают на вершину стека. Сегментные регистры DS, ES, FS, и GS (Data, Extra, F и G сегменты) используются для адресации данных в памяти.

 Первая программа на ассемблере

И так приступим сразу к делу, напишем простую программу на ассемблере. Для этого мы будем использовать команду MOV которая заносит значения в регистр, или с регистра в память. Наша программа будет выводить на экран лишь один символ. который будут помешен в младшую часть регистра DX, то есть  в DLК примеру мы хотим внесли символ # в DL, для этого нужно прописать MOV DL,'#'  Чтоб вывести на экран символ для мы воспользуемся прерыванием dos под номером 21h. Про прерывания поговорим подробно чуть позже, а сейчас лишь скажу что в этот момент наша программа передает управление операционной системе в нашем случае это DOS. прерывание делается с  помощью команды INT.  Далее нам нужно создать файл с расширением asm, к примеру first.asm с таким содержимым:  

.MODEL SMALL  ;говорим сборщику модель программы 
CODE SEGMENT ;директива указывает на начала сегмента кода
ASSUME CS:CODE ;присваиваем сегментному регистру кода адрес сегмента нашего кода
START: ;точка с которой начинаться код программы

mov ah,2
mov dl,'#'
int 21h

mov ah,4ch
mov al,0
int 21h

CODE ENDS ;конец сегмента кода
END START ;и также говорим о окончании нашей программы

 К примеру если у Вас TASM размещен в корне диска С: (то есть прям на диске С:) и файл first.asm находиться в папке по адресу c:tasm\bin\first.asm тогда вызовете консоль (нажмите wint Клавиша Wint и R одновременно, в появившейся строке напишите CMD или нажмите Пуск а затем выполнить, и также наберите CMD ). Затем  в консоли введите  cd  C:\tasm\bin\ таким образом мы окажемся в папке C:\tasm\bin\ как видно на рисунке ниже.

уроки ассемблера. рис 1

Далее с помощью TASM собираем наш код. tasm first.asm , если все сделали верно то должно вывести сообщение что ошибок и предупреждений нет и файл  успешно собран:

Уроки ассемблера. сборка простой программы.

Затем у нас получился объектный файл который нужно еще будет собрать с помощью линкера в исполняемый файл exe .  В пакет Turbo assembler входит также и линкер TLINK. Чтоб собрать нам нужно линковщику лишь указать имя объектного файла(  tlink first.obj) 

 Уроки ассемблера. Сборка объектного файла в exe.

Мои поздравления! Теперь Вы собрали программу на ассемблере за пару простых шагов. Для того чтоб запустить ее просто введите в консоле имя программы и результат ее действия вы увидите на экране. Вот как это сделал я:

Уроки ассемблера. Выполнения исходного файла.

 

Собрать ассемблер программу онлайн 

Так же возможно собрать код языка ассемблер онлайн, прямо в вашем браузере. Для этого нужно перейти по ссылке на виртуальную машину VM-DOS которая работает прям в браузере. Подождать когда она погрузиться и можно приступать к работе с ней. 

1. С начало нужно набрать код. Для этого мы воспользуемся редактором EDITV, и укажем ему имя файла который мы хотим создать таким образом:  editv first.asm

assembler online. создание файла.

Затем мы откроется редактор.

assembler online. Редактор.

И затем в редакторе набираем код  программы который мы набирали раньше.

assembler online. Листинг программы.

Далее сохраняем клавишей F2 и выходим с редактора Alt+X. Затем с помощью TASM собираем наш кода ассемблера. Так как делали раннее (tasm first.asm). И если все верно то должен получится объектный файл.

assembler online. Сборка программы. Далее собираем объектный файл в исходный с помощью программы LINK. Для это го наберем link first.obj . На заданные вопросы ничего не отвечаем просто жмем энтер. Затем у нас получиться исходный файл который вы уже знаете как выполнить.

 assembler online. Сборка объектного файла.

 

assembler online. Выполнение исходного файла.

 

 

Желаю успехов Вам. По все вопросом пишите на почту или на форум.  

 

Комментарии   

+1 #1 Ярослав 02.04.2014 06:27
Здравствуйте.
У меня проблема: ввел текст программы из 'урока 1'. Когда пытался собрать программу из консоли, используя Ваши подсказки, консоль выдала ошибку:
**Fatal** Command line: Can't locate file: first.asm
Error messages: 1
Warning messages: none
Remaining memory: 420k

Быть может проблема в том, что в свойствах самого файла:first.asm написано:first. asm.txt(код записывал в блокноте)
Цитировать
+1 #2 alexandr 04.04.2014 05:53
Здравствуйте, "first.asm.txt" говорит о том что это файл с именем first.asm и расширением txt а расширение должно быть asm. Чтоб это исправить нужно зайти в меню и выбрать сохранить как, затем поставить тип файлов "все файлы" а имя first.asm и тогда сохраниться файл first с расширением asm
Цитировать
+2 #3 Димон 14.11.2014 18:58
Нравится.


Но это. Как зарегиться на сайт assembler.com.u a

Пишет Невозможно проверить приватный ключ.
Цитировать
+1 #4 Админ 19.11.2014 07:40
Спасибо что сообщили. Проблема устроенна. :-)
Цитировать

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


Защитный код
Обновить