Урок 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 с таким содержимым: ​

view source

Print?

01.MODEL SMALL  ;говорим сборщику модель программы
02CODE SEGMENT ;директива указывает на начала сегмента кода
03ASSUME CS:CODE ;присваиваем сегментному регистру кода адрес сегмента нашего кода
04START: ;точка с которой начинаться код программы
05 
06mov ah,2
07mov dl,'#'
08int 21h
09 
10mov ah,4ch
11mov al,0
12int 21h
13 
14CODE ENDS ;конец сегмента кода
15END START ;и также говорим о окончании нашей программы

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

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

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

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

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

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

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

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

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

Редактор EDITV

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

assembler online. Набираем код программы в редакторе.

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

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

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

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

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

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

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

    Быть может проблема в том, что в свойствах самого файла:first.asm написано:first. asm.txt(код записывал в блокноте)

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

Ваш адрес email не будет опубликован.