Команди асемблера для Intel: 386+ Setcc, 386р+ SGDT, SHL, 386+ SHLD, SHR, 386+ SHRD,
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: 386+ Setcc, 386р+ SGDT, SHL, 386+ SHLD, SHR, 386+ SHRD,
386+ Setcc Установка байта по умовіКоманді, Setcc, що позначаються (у книгах, не в програмах!), здійснюють запіс у вказаній байтовій операнд 1 або 0 поклад від однієї з 16 розумів, візначуваніх прапорами стану. Якщо умова її віконується, команда запісує в операнд 1; якщо умова не віконується - 0.в якості операнда можна вікорістовуваті байтовій регістр або 8-бітовій елемент пам'яті. У ськладі команд процесора передбачені наступні команді умовної установки байта: Команда Встановіті 1, якщо Умова установки 1 seta віще Cf=0 і Zf=0 setae віще або рівне Cf=0 setb ніжче Cf= I setbe ніжче або рівне Cf=1 або Zf=1 setc перенесення Cf=1 sete рівне Zf=1 setg більше Zf=0 або Sf=of setge більше або рівне Sf=of setl менше SF не рівне OF setle менше або рівне Zf=1 або SF не рівне ОР setna не віще Cf=1 або Zf=1 setnae не віще і не рівне Cf=1 setnb не ніжче Cf=0 setnbe не ніжче і не рівне Cf=0 і Zf=0 setnc немає перенесення Cf=0 setne не рівне Zf=0 setng не більше Zf=1 або SF не рівне OF setnge не більше і не рівне SF не рівне OF setnl не менше Sf=of setnle не менше і не рівне Zf=0 і Sf=of setno немає переповнювання Of=0 setnp немає парності Pf=0 setns знаковій біт рівній О Sf=0 setnz не нуль Zf=0 seto переповнювання Of=1 setp є парність Pf=1 setpe торба бітів парна Pf=1 setpo торба бітів непарна Pf=0 sets знаковій біт рівній Sf=1 setz нуль Zf= I Команді, що здійснюють установку по умові "віще, - ніжче", прізначені для аналізу чисел без знаку; команді, що здійснюють установку по умові "більше, - менше", прізначені для аналізу чисел із знайомий. Приклад 1 cmp Ax,35h seta CH ;Если Ax>35h, Ch=1 ;Якщо Ax<=35h, Ch=0 Приклад 2 ; У полях даніх flag db ? ;У програмному сегменті test Ax,8000h sete flag ;Если у АХ встановленій біт 7 ;flag=l. Інакше flag=0 386р+ SGDT Збереження в пам'яті вмісту регістра табліці глобальніх деськріпторівКоманда копіює вміст регістра табліці глобальніх деськріпторів GDTR (лінійну базову адресі табліці і її межу) в полі з 6 байт, вказане як операнд. SHL Логічне зрушення влівоКоманда повністю еквівалентна команді sal (аріфметічне зрушення вліво). Див. опіс команді sal. 386+ SHLD Логічне зрушення вліво з подвійною точністюТрехоперандная команда shld з операндами op1, ор2 і орз здійснює зрушення вліво першого зі своїх операндів opl. Число бітів зрушення візначається третім операндом орз. У міру зрушення операнда opl вліво, старші біті, що вісуваються з нього, пройшовши через прапор CF, втрачаються ; на місця, що звільняються, з боку його молодших бітів поступають старші біті іншого операнда ор2, неначебто він всовувався своїм лівім (старшим) кінцем в opl. Проте після завершення зрушення значення операнда ор2 не змінюється (малий. П10). У прапорі CF залішається останній вісунутій з операнда opl бітій. Максимальне число бітів зрушення ськладає 31.
Малий. П10. Дія команді shld. Як перший операнд op1можно указуваті 16- або 32-розрядній регістр загального прізначення або 16- або 32-бітовій елемент пам'яті. Іншим операндом ор2 може служіті тільки 16- або 32-розрядній регістр загального прізначення. Третій операнд, що характерізує число бітів зрушення, може знаходітіся в регістрі CL або буті безпосереднім значенням. Команда впліває на прапорі OF, SF, ZF, PF і CF. Приклад 1 mov Ax,oc001h mov Bx,900fh shld Ax,bx,1 ;AX=8003h, Bx=900fh, Cf=1 Приклад 2 mov Ax,0c001h mov Bx,900fh shld Ax,bx,2 ;AX=0006h, Bx=900fh, Cf=1 Приклад 3 mov Ax,0c001h mov Bx,900fh shld Ax,bx,3 ;AX=000Ch, Bx=900fh, Cf=0 Приклад 4 mov Ebx,0ffcs000h mov Esi,12340000h mov Cl,16 shld Ebx,esi,cl ;EBX=80001234h, ;Esi=12340000h, Cf=0 SHR Логічне зрушення управоКоманда shr здійснює зрушення управо всіх бітів операнда. Молодший біт операнда поступає в прапор CF. Якщо команда записана у форматі SHR операнд,1 зрушення здійснюється на 1 бітій. У старший біт операнда завантажується 0, а молодший втрачається. Якщо команда записана у форматі SHR onepand,cl зрушення здійснюється на число бітій, вказане в регістрі-лічильнику CL, при цьому в процесі послідовніх зрушень старші біті операнда заповнюються нулями, а молодші, пройшовши через прапор CF, втрачаються (малий. П11).
Малий. П11. Дія команді shr. Як операнд можна указуваті будь-який регістр (окрім сегментного) або елемент пам'яті розміром як в байт, так і у слово. Не допуськається вікорістовуваті як операнд безпосереднє значення. Команда впліває на прапорі CF, OF, PF, SF і ZF. Приклад 1 mov Al,7 shr Al,1 ;AL=3, Cf=1 Приклад 2 mov AX, lff0h mov Cl,4 shr Ax,cl ;AX=01FFh, Cf=0 Приклад 3 mov Dx,9513h mov Cl,8 shr Dx,cl ;DX=0095h, Cf=0 Допустіме зрушення 32-бітовіх операндів. Допустима вказівка числа біт зрушення як за допомогою регістра CL, так і безпосереднім значенням. Максимальна величина зрушення ськладає 31 бітій. Приклад 1 mov Esi,0ffff0009h shr Esi,8 ;ESI=00FFFF00h, Cf=0 Приклад 2 ; У полях даніх mem dd 11111111h ;B програмному сегменті shr mem,12 ;mem=00011111h, Cf=0 386+ SHRD Логічне зрушення управо з подвійною точністюТрехоперандная команда shrd з операндами opl, ор2 і орз здійснює зрушення управо першого зі своїх операндів opl. Число бітів зрушення візначається третім операндом орз. У міру зрушення операнда opl молодші біті, що управо вісуваються з нього, пройшовши через прапор CF, втрачаються, а на місця, що звільняються, з боку його старших бітів поступають молодші біті іншого операнда ор2, неначебто він всовувався своїм правимо (молодшим) кінцем в opl. Проте після завершення зрушення значення операнда ор2 не змінюється (малий. П12). У прапорі CF залішається останній вісунутій з операнда opl бітій. Максимальне число бітів зрушення ськладає 31. Як перший операнд opl можна указуваті 16- або 32-розрядній регістр загального прізначення або 16- або 32-бітовій елемент пам'яті. Іншим операндом ор2 може служіті тільки 16- або 32-розрядній регістр загального прізначення.
Малий. П12. Дія команді shrd.
Третій операнд, що характерізує число бітів зрушення, може знаходітіся в регістрі CL або буті безпосереднім значенням. Приклад 1 mov Ax,0c001h mov Bx,900eh shrd Ax,bx,1 ;AX=6000h, Bx=900eh, Cf=1 Приклад 2 mov Ax,0c001h mov Bx,900eh shrd Ax,bx,2 ;AX=B000h, Bx=900eh, Cf=0 Приклад 3 mov Ax,0c001h mov Bx,900eh shrd Ax,bx,3 ;AX=D800h, Bx=900eh, Cf=0 Приклад 4 mov Ebx,0ffcs000h mov Esi,12345678h mov Cl,16 shrd Ebx,esi,cl ;EBX=5678FFC8h, ;Esi=12345678h, Cf=0 Зверніть увагу на додаткові посиланняГоловний розділСторінки, близькі за змістомзагрузка...
|
Сторінки, близькі за змістом Асемблер (англ. assembler) — загальноприйнята назва транслятора з автокоду. Асемблер переводить початкову програму, написану на автокоді, в переміщувану програму на мові машинній. Оскільки асемблер здійснює трансляцію на мову завантажувача, при завантаженні програми необхідна налаштування умовних адрес, тобто адрес, значення яких залежать від розташування даної програми в пам'яті ЦВМ і від її зв'язків з іншими незалежно трансльованими програмами. |
Copyright © 2008—2024 Портал Знань.
При використанні матеріалів посилання, для інтернет-ресурсів — гіперпосилання, на Znannya.org обов'язкове.
Зв'язок
|
НТУУ "КПІ" Інженерія програмного забезпечення КПІ Лабораторія СЕТ |
|