Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Команды преобразования типов данных




Как уже отмечалось выше, в арифметических командах размеры операндов должны быть согласованы.

Пусть, например, требуется сложить число, находящееся в регистре BX (слово) с числом, которое находится в регистре AL (байт). Поскольку в командах сложения и вычитания операнды должны иметь одинаковый размер, необходимо число, находящееся в регистре AL расширить до слова и записать его, например, в регистр AX. Если мы имеем дело с числами без знака, либо с положительными числами со знаком, то для расширения такого числа достаточно к нему слева приписать незначащие нули (в данном примере выполнить команду MOV AH,00H). Для отрицательных чисел со знаком необходимо слева приписать единицы. Для изменения размера числа с учетом его знака и применяются команды преобразования типов данных (команды распространения знака).

Команда расширения байта до слова CBW (от англ. Convert Byte to Word – преобразовать байт в слово) преобразует байт, находящийся в регистре AL, в слово, находящееся в регистре AX, путем распространения значения старшего бита регистра AL на регистр AH. Сама команда операндов не имеет (местонахождение операнда и результата строго фиксировано).

Пример использования команды:

 

MOV AL,37

CBW; В AX будет 0025H (+37 как слово)

MOV AL,-37

CBW; В AX будет FFDBH (–37 как слово)

 

Для рассмотренного выше примера сложения байта и слова, фрагмент кода будет выглядеть следующим образом:

 

CBW

ADD BX,AX

 

При делении также возникает необходимость расширения слова до двойного слова. Команда CWD (от англ. Convert Word to Double word – преобразовать слово в двойное слово) преобразует слово, находящееся в регистре AX, в двойное слово, которое находится в паре регистров DX и AX путем распространения значения старшего бита регистра AX на регистр DX.

Например:

;Числа без знака

MOV BX,5B2EH

MOV DX,0000H

DIV BX

;Числа co знаком

CWD

IDIV BX

 

Вопросы для самопроверки

1. Определить значение флагов CF, OF, SF и ZF после выполнения арифметических операций:

MOV AX,4EF0H

ADD AL,3

ADD AH,95

2. Определить значение флагов CF, OF, SF и ZF после выполнения арифметических операций:

MOV AX,5А12H

SUB AL,23

SUB AH,-70

3. Написать фрагмент кода, который реализует нахождение куба беззнакового числа, значение которого хранится в регистре AL.

4. Какое значение будет находиться в регистре AX при выполнении данного фрагмента программы?

MOV AX,4EEBH

MOV BL,10H

MUL BL

5. Какое значение будет находиться в регистре AX при выполнении данного фрагмента программы?

MOV AX,3A9BH

MOV BL,185H

DIV BL

6. Напишите последовательность команд, в которой умножается 7 на -2, а результат записывается в 16-разрядную переменную otv.

7. Напишите последовательность команд, в которой складываются числа 15 и -21, а результат записывается в 8-разрядную переменную otv.

 

 





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 586 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Студент может не знать в двух случаях: не знал, или забыл. © Неизвестно
==> читать все изречения...

2806 - | 2369 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.