МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів
Контакти
Тлумачний словник Авто Автоматизація Архітектура Астрономія Аудит Біологія Будівництво Бухгалтерія Винахідництво Виробництво Військова справа Генетика Географія Геологія Господарство Держава Дім Екологія Економетрика Економіка Електроніка Журналістика та ЗМІ Зв'язок Іноземні мови Інформатика Історія Комп'ютери Креслення Кулінарія Культура Лексикологія Література Логіка Маркетинг Математика Машинобудування Медицина Менеджмент Метали і Зварювання Механіка Мистецтво Музика Населення Освіта Охорона безпеки життя Охорона Праці Педагогіка Політика Право Програмування Промисловість Психологія Радіо Регилия Соціологія Спорт Стандартизація Технології Торгівля Туризм Фізика Фізіологія Філософія Фінанси Хімія Юриспунденкция |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MOV приймач, джерелоПриклад: скопіювати значення з|із| однієї області пам'яті в іншу
include| irvine32|.inc .data n1 DWORD 15 n2 DWORD ? .code main PROC mov eax,n1 mov n2,eax mov ebx, eax mov n1,3 exit main endp end main
Неправильні записи команд: mov n1,n2 ; Обидва операнди не можуть бути комірками пам’яті. mov ах, bl ; Обидва операнди мають бути одного розміру:
Приклад. Скопіювати значення BL| в регістр|реєстр| АХ. ... main PROC mov ah,0 mov al,bl ...
Якщо довжина операндів різна, можна використовувати директиву PTR|: тип PTR| [вираз|вираження|] Приклад. include| irvine32|.inc .data n1 DWORD 12345678h ; в пам’яті - 00404000 : 78 56 34 12 .code main PROC mov ah, BYTE PTR n1 ; eax – 00 00 78 00 exit main endp end main
Команди додавання. add операнд_1,операнд_2 операнд_1 = операнд_1 + операнд_2 Приклади: mov| ах, 8 ;заносим у АХ число 8 mov| сх|, 6 ;заносим у СХ число 6 mov| dx|, сх| ;копируем СХ в DX|, DX| = 6 add| dx|, ах ;DX = DX| + АХ
Команда інкремента. inc операнд операнд = операнд + 1 Команди віднімання. sub операнд_1,операнд_2 операнд_1 = операнд_1 - операнд_2 Команда декремента . dec операнд операнд = операнд - 1
Целочисельне множення і ділення.|поділ| В результаті|унаслідок| множення двох чисел можна отримати|одержувати| число, діапазон якого в два рази перевищуватиме діапазон операндів. Ці команди спроектовані так, що один з операндів і результат знаходяться|перебувають| у фіксованому регістрі|реєстрі|, а другий операнд указується|вказує| програмістом. Команди множення. MUL (беззнакові операнди) і IMUL (знакові) Мнемокод_команди операнд_1 Другий операнд - співмножник заданий неявно в залежності від розміру першого операнда.
Приклад 1. Помножити значення, збережені в регістрах|реєстрах| ВН і CL|: include| irvine32|.inc .code main PROC mov BH,2 MOV CL,3 mov al,bh ; AL = ВН - заносимо в AL другий операнд mul CL ; АХ = AL * CL - множимо його на CL exit main endp end main
Вміст регістрів|реєстрів| до виконання команди множення :
Оскільки операнди команди множення по умові задачі - однобайтові, то для виконання команди множення необхідно|треба| підготувати регістр|реєстр| AL : mov AL, BH
Вміст регістра|реєстру| AX після виконання команди множення :
Приклад 2. Перемножити беззнакові цілі числа 155 і 140 , збережені в регістрах|реєстрах| ВН і CL|: Результат множення чисел 155*140=21700 не вміщається в один байт, тому результат буде розміщуватися в двох регістрах: AL – молодша частина числа, AH – старша.
Вміст регістрів|реєстрів| до виконання команди множення :
Вміст регістра|реєстру| AX до виконання команди множення :
Вміст регістра|реєстру| AX після виконання команди множення :
Для розв’язання наступного прикладу введемо декілька понять.
Є можливість|спроможність| створити одне довге ціле число на основі двох коротких цілих чисел.
Приклад|зразок|. Завантажити 32-розрядне значення, що складається з|із| чотирьох 8-розрядних змінних, в регістр|реєстр| ЕАХ.
include irvine32.inc .data LongValue LABEL DWORD vall BYTE 78h val2 BYTE 56h val3 BYTE 34h val4 BYTE 12h .code main PROC mov eax,LongValue ; EAX = 12345678h exit main endp end main
Тут директива LABEL дозволяє визначити в програмі мітку і|та| призначити їй потрібний атрибут довжини (DWORD), не розподіляючи при цьому фізично пам'ять під змінну. Можна помітити|зауважити|, що число 12345678h розміщується в пам'яті в перевернутому вигляді: спочатку молодша частина|частка| числа, потім - старша. У процесорах Intel при вибірці і|та| зберіганні даних в пам'яті використовується прямий порядок|лад| наступністі байтів (little endian order) - молодший байт змінної зберігається в пам'яті за меншою адресою.
Тому подвійне слово 12345678h в памяті:
У регістрах|реєстрах| дані розташовуються в звичному вигляді.
Приклад|зразок|. Завантажити 32-розрядне значення, що складається з двох 16-розрядних змінних, в регістр|реєстр| ЕАХ.
include irvine32.inc .data LongValue LABEL DWORD vall word 5678h val2 word 1234h .code main PROC mov eax,LongValue ; EAX = 12345678h exit main endp end main
Приклад. Використання директиви LABEL для визначення в програмі додаткових імен розмірів для змінних, розміщених в сегменті даних.
include irvine32.inc .data vall6 LABEL WORD val32 DWORD 12345678h
.code main PROC mov ax,vall6 ; AX = 5678h mov dx,vall6+2 ; DX = 1234h mov ecx,val32 exit main endp end main
Перед змінною val32 ми оголосили мітку vall6 і|та| присвоїли|привласнили| їй атрибут довжини WORD.
Приклад 3. обчислити 4862 Читайте також:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|