Инструкция 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 (преобразовать байт в слово).



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

Яндекс.Метрика