Page 35 - 4989
P. 35

short y[10];
                        __asm
                        {
                        mov eax, x

                        mov bx, y[5]
                        lea esi, y
                        mov ebx, [esi]

                        }
                        Якщо  необхідно  виконати  операцію  між  регістром  та
                  масивом  символів,  слід  використовувати  модифікатор  byte  ptr,
                  word  ptr  або  dword  ptr  для  вказання  кількості  байт,  над  якими

                  виконується операція.
                        Приклад:
                        char str[] = “abcdef”;

                        char buffer[16];
                        __asm
                        {

                         mov dx, word ptr str
                         mov dword ptr buffer, eax
                        }

                        Тут у регістр dx копіюються два перші символи масиву str, а
                  в перші 4 символи масиву buffer копіюються 4 байти з регістру
                  еах.
                        Таким  чином,  як  вхідні  дані,  так  і  результати  роботи

                  асемблерної  вставки  можна  розміщувати  в  локальних  змінних,
                  оголошених зовні цієї вставки.


                                        3.4  Порядок виконання роботи

                        1.  У  документації  до  інструкції  CPUID  знайти  спосіб
                           отримання  характеристик,  зазначених  в  індивідуальному
                           завданні.

                        2. Створити  консольний  проект  у  середовищі  Microsoft
                           Visual Studio.
                        3. Написати асемблерний код для виконання індивідуального

                           завдання  та  оформити  його  як  асемблерну  вставку  в
                           консольній програмі мовою С++.
                        4. Додати у програму код мовою С++ для виводу результату
                           на екран.


                                                                 35
   30   31   32   33   34   35   36   37   38   39   40