Преобразование типов в ассемблере.

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

Преобразование отрицательных типов

Преобразование отрицательных типов выполняется путём копирования знакового бита на всю старшую часть. Для такого преобразования предназначена команда MOVSX (копирование со знаковым расширением). Первый операнд — слово, второй операнд — байт:

movsx cx,[y] ;CX = y

Существуют ещё две команды для преобразования отрицательных типов: CBW (Convert Byte to Word — преобразовать байт в слово) и CWD (Convert Word to Double word — преобразовать слово в двойное слово). Команда CBW преобразует байт, находящийся в регистре AL, в слово в регистре AX. Команда CWD преобразует слово, находящееся в регистре AX, в двойное слово в регистрах DX:AX. Эти команды удобно использовать вместе с командами умножения и деления. Например:

 mov al,[y]
    cbw          ;AX = y
    cwd          ;DX:AX = y

Преобразование положительных типов

Для преобразования положительных чисел необходимо просто заполнить все старшие биты нулями. Такое преобразование можно выполнить с помощью обычной команды MOV. Например:

mov bl,[x]       ;x объявлен как байт
    mov bh,0     ;BX = x
;Или вот так:
    mov bl,[x]
    sub bh,bh    ;BX = x

Также в системе команд процессора существует специальная команда — MOVZX (копирование с нулевым расширением). Первый операнд команды имеет размер 16 бит (слово), а второй — 8 бит (байт). Тот же результат можно получить так:

movzx bx,[x] ;BX = x

 
Поделиться в facebook
Facebook
Поделиться в twitter
Twitter
Поделиться в vk
VK
Поделиться в google
Google+
Поделиться в email
Email

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Группа в VK

Помощь проекту

Обнаружили опечатку?

Сообщите нам об этом, выделите текст с ошибкой и нажмите Ctrl+Enter, будем очень признательны!

Свежие статьи

Похожие статьи

Команды работы с битами.

Команды работы с битами.

Работать с отдельными битами операндов можно, используя логические операции и сдвиги. Также в системе команд x86 существуют специальные команды для работы с битами: это команды

 
Основы создания макросов в Assembler.

Основы создания макросов в Assembler.

Макросы — это шаблоны для генерации кода. Один раз создав макрос, можно использовать его во многих местах в коде программы. Макросы делают процесс программирования на

 
Синтаксис объявления меток.

Синтаксис объявления меток.

Метка в ассемблере – это символьное имя, обозначающее ячейку памяти, которая содержит некоторую команду. Метка может содержать следующие символы: Буквы (от A до Z и

 
Локальные переменные.

Локальные переменные.

Локальные переменные в Assembler используются для хранения промежуточных результатов во время выполнения процедуры. В отличие от глобальных, эти переменные являются временными и создаются при запуске

 

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: