Логикалы жылжыту командалары

Сола жылжуSHL командасы операндтаы р битты, кіші биттарды нлмен толтырыра отырып, сола арай жылжытады. Жоары бит тасымалдау жалаушасына орналастырылады, ал осыан дейін тасымалдау жалаушасында тран бит жоалады.

Команданы жазылу трлері:

SHL операнд,1

SHL операнд,CL

SHL операнд,мн8 (80286 жне одан жоары прцессорлар шін)

Операнд 8,16 немесе 32 разрядты бола алады. CL регистрі команданы орындалу барысында згермейді. Осы формат SHR,SAL,SAP,ROR,ROL,RCR,RCL командалары шін де олданылады.

Келтірілген сола жылжыту командасы форматтарыны бірінші трінде операнд 1 бит сола жылжиды. Екінші жадайда, жылжыту санын крсету шін, CL регистрінде жылжыту есептегіші олданылады. Ал шінші жадайда жылжытылатын биттар саны 8 разрядты мнмен крсетіледі (20286 процессорлары жне одан кейінгі процессор модельдері шін).

Тменде SHL командасы арылы регистр мен жад операндтарын олдануды бірнеше мысалы келтірілген:

SHL ВХ,1 ;ВХ регистрін 1 бит сола жылжыту

SHL BYTE PTR[SI],1 ;8 разрядты жанама операнд

SHL AL,CL ;AL –ді есептегіш бойынша жылжыту

SHL BX,5 ;80286 прцессоры шін

SHL EBX,16 ;80386 прцессоры шін

Жылдам кбейту. SHL командасын жылдам кбейту амалын орындау шін олдану ыайлы. Стандартты кбейту командалары біршама баяу жмыс жасайды. Жылжыту жасалуа тиіс биттар саны кбейткішті екілік логарифміне те болу керек. Мысалы, 2-ге (21 ) кбейту бір бита жылжуа те, 4-ке (22 ) кбейту екі бита жылжуа те т.с.с. Келесі мысалды DL регистріні р жылжытудан кейінгі онды мні крсетілген:

MOV DL,1 ;DL=1d

SHL DL,1 ;DL=2d

SHL DL,1 ;DL=4d

SHL DL,1 ;DL=4d

2-ні дрежесі болмайтын сана кбейту шін оны трлендіру керек. Мысалы, 10 санына кбейту операциясын екі этапа блуге болады: алдымен санды 8-ге (23) кбейтеміз, сонан санды екіге кбейтілген санмен осамыз, яни 10=23 +2 формуласын олданамыз

SHR командасы жоары битты нлмен ауыстырып, р битты оа жылжытады. Тменгі бит тасымалдау жалаушасына кшіріледі, ал тасымалдау жалаушасындаы бит жоалады.

SHR командасыны синтаксисі SHL-дегі сияты. Келесі мысалда 0 AL регистріні тменгі битынан тасымалдау жалаушасына кшіріледі, ал AL-ді жоары биты нлмен толытырылады:

MOV AL,0D0h ;AL=11010000b.

SHR AL,1 ;AL=01101000b,CF=0.

SHR командасы табасыз санды 2-ге блу шін олданыла алады. Мысалы, 32 санын бір бита жылжытып нтижесінде 16 санын аламыз:

MOV DL,32 ;00100000b

SHR DL,1 ;00010000b (DL=16)

Егер табалы санды блу керек болса, SAR командасын олданан дрыс. Себебі бл команда таба битын сатайды.

SHLD жне SHRD командалары 80286 процессоры жне одан кейінгі процессор модельдеріне арналан. Бл командалар ш операндалы командалар болып табылады.

SHLD екіеселі сзді сола жылжыту командасы бірінші операндтаы мнді шінші операндтаы крсетілген бит санына жылжытады. О жатаы босаан биттар екінші операндты жоары биттарымен толытырылады. Команданы жазылу синтаксисі:

SHLD reg16,reg16,санаыш

SHLD mem16, reg 16,санаыш

SHLD reg 32, reg 32,санаыш

SHLD mem32, reg 32,санаыш

SHRD екіеселі сзді оа жылжыту командасы бірінші операндтаы мнді есептегіштегі крсетілген бит санына оа жылжытады. Сол жатаы босаан биттар екінші операндты тменгі биттарымен толытырылады, бірінші операндты мні згермейді. Команданы жазылу синтаксисі жоарыдай, тек SHRD командасы жазылады.

Мысалы, келесі командаларда wval айнымалысын 4 бита сола жылжыту жзеге асырылады. AX регистріні жоара 4 биты wval–ды тменгі позицияларына ойылады.

.DATA

wval DW 9BA6h

.CODE

MOV AX,0AC36h

SHLD wval,AX,4 ;wval=BA6Ah

Келесі мысалда EBX регистрі 1 бита сола жылжиды, ал dval-ды жоары биты EBX-ті тменгі позициясына орналасады:

.DATA

dval DD 812365Ah

.CODE

MOV EBX,00000006h

SHLD EBX,dval,1 ;EBX=0000000Dh

Бл командалар олданбалы графикалы программаларда кеінен олданылады. Себебі, экрана шыару шін бейнені битты лгіленін дайындап алу ажет болады.