Page 32 - 4989
P. 32

регістр або комірка пам’яті, а другий визначає кількість зсувів і
            може  бути  або  числом,  або  регістром  CL.  Інструкції  SHLD  та
            SHRD  зсувають  два  операнди,  третім  операндом  є  кількість
            зсувів.

                  Приклад.
                  Нехай  у регістрі  АН міститься число 11110011, а  у регістрі
            AL  число  11000011.  У  коментарях  наведено  стан  регістрів  та

            флагу  CF  після  виконання  відповідних  команд  зсувів  одна  за
            одною.
                  SHR AH, 3                            ; AH=00011110, CF=0
                  SHL AH, 4                            ; AH=11100000, CF=1

                  SAR AH, 2                            ; AH=11111000, CF=0
                  RCR AH, 5                            ; AH=10000111, CF=1
                  RCL AH, 2                            ; AH=00011111, CF=0

                  ROR AH, 1                            ; AH=10001111, CF=1
                  ROL AH, 2                            ; AH=00111110, CF=0
                  SHLD AH, AL, 1                       ; AH=01111101, AL=10000110

                  SHRD AH, AL, 3                       ; AH=00001111, AL=10110000



                  3.3.4  Інструкція CPUID

                  Ця  інструкція  дозволяє  дізнатися  деякі  характеристики
            процесора,  такі  як  точна  назва  моделі  процесора,  набір
            підтримуваних інструкцій, характеристики кеш-пам’яті тощо.

                  Інструкція  CPUID  не  має  операндів.  Натомість  для  задання
            того,  які  саме  характеристики  слід  отримати,  використовується
            регістр  ЕАХ.  Результати  виконання  розміщуються  в  регістрах

            EAX, ABX, ECX, EDX (залежно від значення ЕАХ можуть бути
            задіяні тільки деякі з цих регістрів).
                  Наприклад,  якщо  перед  виконанням  CPUID  занести  в  ЕАХ
            число  0,  то  після  її  виконання  в  регістрі  ЕАХ  буде  найбільше

            можливе  значення,  яке  можна  використовувати  в  якості
            параметра CPUID, а в регістрах EBX, EDX, ECX буде розміщена
            12-символьний рядок-ідентифікатор виробника процесора.

                  MOV EAX, 0
                  CPUID           ; EAX = 00000005, EBX = 68747541,
                                  ; ECX = 444D4163, EDX = 69746E65
                  У даному прикладі в регістрах EBX, EDX, ECX розміщений


                                                           32
   27   28   29   30   31   32   33   34   35   36   37