Следующая новость
Предыдущая новость

Погружение в ассемблер. Осваиваем арифметические инструкции

08.07.2020 13:22
Погружение в ассемблер. Осваиваем арифметические инструкции

Содержание статьи

  • Предыдущие статьи
  • Пишем вспомогательную подпрограмму
  • Учимся складывать и вычитать
  • Осваиваем инструкцию умножения
  • Разбираемся с инструкцией деления
  • Логический и арифметический сдвиги, циклический сдвиг
  • Три логические инструкции плюс одна бесполезная
  • Знакомимся с инструкциями инкремента и декремента
  • Пишем простую игрушку «Угадай число»
  • Выводы
  • Инструкции и операторы

Прочитав эту статью, ты научишься пользоваться арифметическими и логическими инструкциями, а также инструкциями сдвига. Попутно узнаешь, как создавать подпрограммы. А в конце напишешь простенькую игрушку «Угадай число».

Предыдущие статьи

  • Погружение в assembler
  • Делаем первые шаги в освоении асма

Большинство тех инструкций, о которых ты узнаешь из этой статьи, принимают на входе два аргумента. Каждый отдельно взятый аргумент — это либо регистр, либо память, либо константа. Почти все их сочетания допустимы: регистр-регистр, регистр-память, память-регистр, регистр-константа, память-константа. Единственное недопустимое сочетание — память-память.

Регистры могут быть 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.

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

1 год

7690 р.

1 месяц

720 р.

Я уже участник «Xakep.ru»

Источник

Последние новости