|
Как стать программистом Как устроен компьютер. Что такое программа. Как написать свою программу. И многое другое узнаете вы из этой книги. Получить бесплатно! |
Инструкция CBW
Инструкция CBW в Ассемблере выполняет преобразование байта в слово. Синтаксис:
CBW
Эта команда не имеет операндов. Флаги не изменяются.
Чтобы преобразовать байт в слово, инструкция CBW использует следующий алгоритм:
- Если старший бит регистра AL равен 1, то записать в регистр AH число 255 (0FFh),
- иначе записать в АН число 0.
Преобразование байта в слово
Первый вопрос - зачем это надо?
Для положительных чисел, пожалуй, в этом смысла нет. Однако для чисел со знаком это может быть полезно. Команда CBW расширяет длину целого числа со знаком, то есть из байта делает слово. При этом знаковый разряд из регистра AL переносится в регистр AH, байт (AL) превращается в слово (АХ), а знак числа сохраняется (см. алгоритм выше).
Поясню на примере. Допустим, у нас есть число 5, которое мы записали в регистр AL (байт). Тогда, чтобы преобразовать байт в слово нам достаточно просто поместить в регистр AX число 0.
Но если мы имеем дело с отрицательными числами, то всё становится сложнее. Например, мы записали число -5 в регистр AL. Тогда в этом регистре будет шестнадцатеричное число FB. Если мы просто поместим в регистр AX число 0, то получим слово:
00FB
и это будет число 251 в десятичной системе, а не -5, как мы бы хотели. Потому что число (слово) -5 в шестнадцатеричной системе - это
FFFB
Поэтому, если требуется быстро преобразовать отрицательное число размером с байт в отрицательное число размером со слово, то лучше использовать инструкцию CBW. Эта инструкция обычно используется совместно с командами деления.
Машинный код команды CBW - 98h.
Если вы не очень хорошо понимаете, о чём я говорил выше, то изучайте статьи из раздела Представление данных.
Пример:
.model tiny
.code
ORG 100h
start:
MOV AH, 0
MOV AL, -5 ;AL = -5, AX = 00FB = 251
CBW ;AX = FFFB = -5
RET
END start
Напоследок, как всегда, о происхождении аббревиатуры CBW.
CBW - это Convert Byte to Word (преобразовать байт в слово).
|
Подписаться на Дзен-канал
Вступить в группу "Основы программирования" Подписаться на рассылки по программированию |