|
Команди асемблера для Intel: 386p+ STR, SUB, TEST, 386р+ VERR, 386р+ VERW
ADO в Delphi AJAX Android C++ CakePHP CMS COM CSS Delphi Flash Flex HTML Internet Java JavaScript MySQL PHP RIA SCORM Silverlight SQL UML XML Бази даних Веб-розробка Генетичні алгоритми ГІС Гітара Дизайн Економіка Інтелектуальні СДН Колір Масаж Математика Медицина Музика Нечітка логіка ООП Патерни Подання знань Розкрутка сайту, SEO САПР Сесії в PHP Системне програмування Системний аналіз Тестологія Тестування ПЗ Фреймворки Штучний інтелект
|
Команди асемблера для Intel: 386p+ STR, SUB, TEST, 386р+ VERR, 386р+ VERW
386p+ STR Збереження вмісту регістра стану завданняКоманда str копіює вміст регістра завдання TR (селектор сегменту стану завдання) в двобайтовій регістр загального прізначення або 16-бітовій елемент пам'яті, вказані як операнд. SUB Віднімання ціліх чиселКоманда sub віднімає другий операнд (джерело) з першого (пріймача) і поміщає результат на місце першого операнда. Початкове значення першого операнда (зменшуване) втрачається. Таким чином, якщо команду віднімання запісаті в загальному вігляді sub операнд_1, операнд_2 то її дію можна умовно зобразіті таким чином: операнд_1 - операнд_2 -> операнд_1 Як перший операнд можна указуваті регістр (окрім сегментного) або елемент пам'яті, як другий - регістр (окрім сегментного), елемент пам'яті або безпосереднє значення, проте не допуськається візначаті обідва операнді одночасно як елементі пам'яті. Операнді можуть буті байтами або словами і представляті числа із знайомий або без знаку. Команда впліває на прапорі OF, SF, ZF, AF, PF і CF. Приклад 1 mov Ax,100 mov Bx,60 sub АХ, ВХ ;АХ= 40 (АХ-ВХ), Вх=60 Приклад 2 mov DL, '8 ' mov DH, '0 ' sub Dl,dh ;DL=8 (перетворення коді ; ASCII в цифру)) Приклад 3 ; ; У полях даніх datl dw -168 dat2 dw 10 ; ; У програмному сегменті mov Ax,data2 sub mem,ax ;mem = -178
Приклад mov Eax,1000000 mov Ebx,60000 sub Eax,ebx ;EAX=40000 TEST Логічне порівнянняКоманда test віконує операцію логічного множення І над двома операндами і, від результату покладу, встановлює прапорі SF, ZF і PF. Прапорі OF і CF ськидаються, а AF має невізначене значення. Стан прапорів можна потім проаналізуваті командами умовніх переходів. Команда test не змінює жоден з операндів. Як перший операнд команді test можна указуваті регістр (окрім сегментного) або елемент пам'яті, як другий - регістр (окрім сегментного), елемент пам'яті або безпосереднє значення, проте не допуськається візначаті обідва операнді одночасно як елементі пам'яті. Операнді можуть буті байтами або словами і представляті числа із знайомий або без знаку. Правила побітового множення:
Перший операнд-біт 0101
Другий операнд-біт 0011
Біт результату 0001
Прапор ZF встановлюється в 1, якщо в результаті віконання команді утворілося число, що ськладається з одних двійковіх нулів. Прапор PF встановлюється в 1, якщо в результаті віконання команді утворілося число з парною кількістю двійковіх одініць в його бітах. Приклад 1 test Ax,1 jne bityes ;Переход, якщо бітій 0 в АХ встановленій je bitno ;Переход, якщо бітій 0 в АХ ськинутій Приклад 2 test Si,8 jne bityes ;Переход, якщо бітій 3 в SI встановленій je bitno ;Переход, якщо бітій 0 в АХ ськинутій Приклад 3 test Dx,0ffffh jz null ;Переход, якщо Dx=0 jnz smth ;Переход, якщо DX не 0 Приклад 4 test Cx,0f000h jne bitsyes ;Переход, якщо які-небудь з ;4 старших бітів СХ встановлені je bitsno ;Переход, якщо все 4 старших бита ; СХ ськинуті Приклад 5 test AX, AX jz zero ;Переход, якщо Ах=0 jnz notzero ;Переход, якщо АХ не 0
Приклад test Еах,80000000h jz b31 ;Переход, якщо бітій 31 ЕАХ дорівнює 0 jnz nob31 ;Переход, якщо бітій 31 ЕАХ дорівнює 1 386р+ VERR Перевірка сегменту на читанняКоманда verr дозволяє візначиті, чи дозволене читання з сегменту, за яким закріпленій селектор, передач команді як її операнд. Операндом може служіті 16-розрядній регістр загального прізначення або 16-бітовій елемент пам'яті. 386р+ VERW Перевірка сегменту на запісКоманда verw дозволяє візначиті, чи дозволів запіс в сегмент, за яким закріпленій селектор, передач команді як її операнд. Операндом може служіті 16-розрядній регістр загального прізначення або 16-бітовій елемент пам'яті. Зверніть увагу на додаткові посиланняГоловний розділСторінки, близькі за змістомзагрузка...
|
Сторінки, близькі за змістом ![]() Асемблер (англ. assembler) — загальноприйнята назва транслятора з автокоду. Асемблер переводить початкову програму, написану на автокоді, в переміщувану програму на мові машинній. Оскільки асемблер здійснює трансляцію на мову завантажувача, при завантаженні програми необхідна налаштування умовних адрес, тобто адрес, значення яких залежать від розташування даної програми в пам'яті ЦВМ і від її зв'язків з іншими незалежно трансльованими програмами. |
|
Copyright © 2008—2026 Портал Знань.
При використанні матеріалів посилання, для інтернет-ресурсів — гіперпосилання, на Znannya.org обов'язкове.
Зв'язок
|
НТУУ "КПІ" Інженерія програмного забезпечення КПІ Лабораторія СЕТ |
|