Главная / Ассемблер / Примеры (исходники) /

Вычитание в Ассемблере


Лучшие книги по Ассемблеру Лучшие книги по Ассемблеру

Сделал подборку не новых, но проверенных книг по программированию на языке ассемблера. Если вы также как и я любите погружаться на низкий уровень, в те закоулки мира программирования, куда не всем путь открыт, то посмотрите. Возможно, что-то вам понравится. Подробнее...

Ранее я рассказывал о сложении двух чисел в ассемблере. Там же я сказал, что сложив число с отрицательным числом, можно выполнить и вычитание. Однако в исходных кодах всё-таки было бы более понятно, если бы для вычитания использовалась отдельная команда, чтобы не запутаться. И такая команда есть - это команда SUB, которая вполне пригодна для большинства случаев, когда надо вычесть одно число из другого.

Большая часть из того, что было сказано для команды сложения, справедливо и для команды вычитания. Поэтому здесь только простые примеры, без дополнительных разъяснений.

MOV  AL, 10
SUB  AL, 7    ; AL = 3

Здесь мы сначала в регистр AL помещаем число 10, а затем используем команду SUB, чтобы вычесть из значения в регистре AL число 7. В итоге в AL будет результат - число 3.

Ещё один пример:

MOV  BL, 1
SUB  BL, 2    ; BL = 255

Этот пример более сложный с точки зрения программирования. С точки зрения математики он также простой - из числа 1 мы вычитаем число 2, результатом будет -1. Однако представление отрицательных чисел в памяти компьютера имеет свои особенности, поэтому в регистре BL будет число 255, которое является числом -1, если старший разряд используется для определения знака числа.

Кроме того, в данном случае флаг SF будет установлен, так как результатом будет число со знаком.

Вычитание в Ассемблере

В некоторых случаях для вычитания используется команда SBB. Её можно использовать, например, для вычитания 64-разрядных чисел на 32-разрядных процессорах, или 32-разрядных чисел на 16-разрядных процессорах.

На этом пока всё. Подключайтесь к группе Основы программирования в Телеграм, или к другим каналам (ссылки ниже), чтобы ничего не пропустить.



Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su