Содержание статьи
- Другие статьи курса
- Пишем вспомогательную подпрограмму
- Учимся складывать и вычитать
- Осваиваем инструкцию умножения
- Разбираемся с инструкцией деления
- Логический и арифметический сдвиги, циклический сдвиг
- Три логические инструкции плюс одна бесполезная
- Знакомимся с инструкциями инкремента и декремента
- Пишем простую игрушку «Угадай число»
- Выводы
- Инструкции и операторы
Другие статьи курса
- Зачем учить ассемблер в 2020 году
- Делаем первые шаги в освоении асма
- Как работают переменные, режимы адресации, инструкции условного перехода
- Учимся работать с памятью
- Работаем с большими числами и делаем сложные математические вычисления
- Сокращаем размер программы
- Пишем клон игры Flappy Bird, который уместится в бутсектор
- Пишем бейсик и умещаем его в 512 байт
Большинство тех инструкций, о которых ты узнаешь из этой статьи, принимают на входе два аргумента. Каждый отдельно взятый аргумент — это либо регистр, либо память, либо константа. Почти все их сочетания допустимы: регистр-регистр, регистр-память, память-регистр, регистр-константа, память-константа. Единственное недопустимое сочетание — память-память.
Регистры могут быть 16- или 8-битными. 16-битные регистры: AX
, BX
, CX
, DX
, SI
, DI
, BP
и SP
. 8-битные регистры: AH
, AL
, BH
, BL
, CH
, CL
, DH
и DL
.
Пишем вспомогательную подпрограмму
У всех программ, которые мы с тобой сейчас напишем, есть повторяющееся действие: вывести результат на экран. Чтобы не писать код для этого действия каждый раз заново, давай напишем для него подпрограмму.
Что такое подпрограмма? Это кусок кода, который выполняет какую-то небольшую задачу. К подпрограмме обычно обращаются через инструкцию call
. Все подпрограммы заканчиваются инструкцией ret
(RETurn).
Пока это все, что тебе нужно знать о подпрограммах. Конечно, по-хорошему, когда пользуешься подпрограммами, надо бы понимать еще несколько вещей, в частности что такое указатель стека и как он меняется при обращении к подпрограмме. Но пока, в рамках текущего урока, давай просто условимся, что если тебе надо нарисовать на экране букву, просто вставляй в свой код вот такую инструкцию.
Реализация подпрограммы call display_letter
представлена ниже. Сохрани ее в файл library.asm
.
Важно! В конец всех программ, которые мы напишем, тебе надо будет вставлять код из library.asm
. К чему это приведет? Все программы будут заканчиваться выходом в командную строку, и у них будут подпрограммы для вывода символа на экран (из регистра AL
) и для считывания символа с клавиатуры (результат помещается в регистр AL
).
Учимся складывать и вычитать
В качестве аргументов для инструкции сложения давай задействуем регистр AL
и константу.
Эта программа выводит на экран цифру 7
. Потому что 4 + 3 = 7
.
В качестве аргументов для инструкции вычитания давай возьмем регистр AL
и константу.
Эта программа выводит на экран цифру 1
. Потому что 4 – 3 = 1
.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»