Как стать программистом Как устроен компьютер. Что такое программа. Как написать свою программу. И многое другое узнаете вы из этой книги. Получить бесплатно! |
Инструкция 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 (преобразовать байт в слово).
Подписаться на Дзен-канал
Вступить в группу "Основы программирования" Подписаться на рассылки по программированию |
Первые шаги в программирование
Главный вопрос начинающего программиста – с чего начать? Вроде бы есть желание, но иногда «не знаешь, как начать думать, чтобы до такого додуматься». У человека, который никогда не имел дело с информационными технологиями, даже простые вопросы могут вызвать большие трудности и отнять много времени на решение. Подробнее... |