Иллюстрированный самоучитель по Assembler


486+ CMPXCHG Сравнение и обмен - часть 3


Если перед вызовом команды cpuid значение ЕАХ равно 1, то команда возвращает в регистре ЕАХ коды разработки конкретной версии процессора, а в регистре EDX код IBFli, содержащий информацию о возможностях процессора.

Коды разработки в регистре ЕАХ хранятся в следующем формате:


биты 0 ... 3 - номер поколения (например, 3);

биты 4 ... 7 - модель (например, 4);

биты 8 ... 11 - семейство (5 для Pentium).


Содержимое регистра EDX включает конфиденциальную информацию изготовителя, а также говорит о наличии на кристалле микропроцессора арифметического сопроцессора (бит 0) и поддержке команды cmpxchgSb (бит 8).

Пример


;В полях данных mem dd 0,0,0 ;В программном сегменте

mov ЕАХ,О

cpuid ;EAX=0001h

mov mem, ЕВХ

mov mem+4, EDX

mov mem+8, ECX ;mem='Genuinelntel'

cpuid EAX=543h (например) ,EDX = lBFh

CWD Преобразование слова в двойное слово


Команда cwd заполняет регистр DX знаковым битом содержимого регистра АХ, преобразуя тем самым 16-разрядное число со знаком в 32-разрядное, размещаемое в регистрах DX:AX. Команду удобно использовать для преобразования двухбайтового делимого в четырехбайтовое (двойное слово) при делении на 16-разрядный операнд. Команда не имеет параметров и не воздействует на флаги процессора.

Пример 1


mov AX,32767 ;AX=7FFFh

cwd ;AX=7FFFh, DX=OOOOh.

;DX:AX=32767

Пример 2


mov AX,-32768 ;AX=8000h

cwd ;AX=8000h, DX=FFFFh.

;DX:AX=-32768

386+ CWDE Преобразование слова в двойное слово с расширением


Команда cwde заполняет старшую половину регистра ЕАХ знаковым битом содержимого регистра АХ, преобразуя тем самым 16-разрядное число со знаком в 32-разрядное, размещаемое в расширенном регистре ЕАХ. Команда не имеет операндов и не воздействует на флаги процессора.

Пример


; В полях данных

mem dw - 3

;В программном сегменте

mov AX,mem ;AX=FFFD

cwde ;EAX=FFFFFFFDh

 




Начало  Назад  Вперед



Книжный магазин