→ Пошук по сайту       Увійти / Зареєструватися

Команди асемблера для 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 або буті безпосереднім значенням.
Команда впліває на прапорі OF, SF, ZF, PF і CF.

Приклад 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

загрузка...
Сторінки, близькі за змістом