You are on page 1of 4

Bashkesia e instruksioneve per mikroprocesorin

8086
Procesori 8086 disponon qindra instruksione, te cilet mund te ndahen ne disa grupe:
 Instruksionet per bartjen e te dhenave
 Instruksionet aritmetike
 Instruksionet per zhvendosje dhe rotacion
 Instruksionet logjike
 Instruksionet per udheheqje me kercimet
 Instruksionet per pune me vargjet
 Instruksionet per pune me nen programet dhe nderprerjet
 Instruksionet per kontroll te mikroprocesorit

8.6.1. Instruksionet per bartje te dhenash


Me domethenien e instruksionit MOV u njohem kur i studiuam llojet e adresave te
mikroprocesorit 8086. Qe te kujtohemi, do te japim disa shembuj konkret:

Shembulli 8.1.

MOV BX, AX - bartje direkt te dhenes nga nje regjister ne tjetrin


MOV BX, 1234H - bartje e te dhenes 1234H ne regjistrin BX
MOV BX, [1234H] - bartje e te dhenes ne regjistrin BX nga lokacioni memories nga segmenti
i te dhenes i larguar nga fillimi per distancen 1234H
MOV [1234H], BX - bartje e te dhenes nga regjistri BX ne memorie

Ekzistojne kufizime te caktuara ne perdorimin e MOV. Me kete instruksion nuk mund te


kryhet bartje nga nje lokacion memories ne tjetrin, por vetem me ane te ndermjetimit te
regjistrit te pergjithshem. Nuk mund te bartet e dhena ne ndonje segment regjister, as edhe
te bartet e dhena nga nje segment regjister ne tjetrin. Mikroprocesori 8086 ka gjashte lloje
te ndryshme te instruksioneve PUSH dhe POP.
E dhena qe bartet ne steku-memorie mund te jete e vendosur ne vende te ndryshme.

Shembulli 8.2.
PUSH BX - e dhena eshte ne ndonje regjister te pergjithshem
PUSH [BX] - e dhena eshte ne lokacionin memories e larguar nga fillimi i segmentit te
dhenes per distance te barabarte me vleren e BX
PUSH 1225H - e dhena eshte dhene ne menyre imediate
PUSH DS - e dhena eshte ne ndonje regjister segment
PUSH A - mbrohen te dhenat ne te gjithe regjistrat e pergjithshem 16-bitesh
PUSH F - mbrohet statut-regjistri me fl amujt e tij

Te mikroprocesori 8086 ekzistojne instruksione speciale per bartjen adresave efektive.


Me adresa efektive kuptojme zhvendosjen (distancen), qe na tregon se sa larg eshte e
dhena nga fillimi i segmentit. Me instruksionin LEA (Load Eff ective Address) adresa
efektive e te dhenes bartet ne ndonje regjister 16-bitesh. P.sh, me instruksionin LEA BX,
[DI] permbajtja e regjistrit DI bartet ne regjistrin BX, me instruksionin MOV BX, [DI]e dhena
me adresen efektive ne regjistrin DI bartet ne regjistrin BX.
Instruksioni LDS dhe LES sherbejne per bartjen e 32-biteve nga memoria, gjet se ciles dy
bajtet me te rendesishem barten ne segment regjistrat DS ose ES, ndersa dy bajtet e dyte
me te rendesishem barten ne ndonje regjister te pergjithshem 16 –bitesh.
Me instruksion LDS BX, [DI] regjistri BX mbushet nga lokacioni me adresa 11000 dhe
11001 ndersa regjistri DI nga lokacioni me adresa 11002 dhe 11003. Pas ekzekutimit te
lokacionit, DS do te mbaje numrin 3000H, BX numrin 127АН. Kjo eshte treguar ne
fotografine 8.9.

Figura 8.9. Paraqitje te instrukcionit LDS BX, [DI]

XLAT (Translate) Ky instruksion perdoret gjate konversionit nga nje kod ne tjetrin, si, p.sh,
nga BCD ne kod shtate segmentesh. Ne segmentin e te dhenave eshte krijuar vargu prej 20
bajtesh, te cilet i permbajne kodet shtate segmentesh per fj alet nga 0 deri te 9. Ne
fotografin 8.10. jane paraqitur ekranin shtate segmentesh dhe kodet e tij. Me instruksion
XLAT permbajtja e AL i shtohet prodhimit per te fituar adrese te lokacionit memories ne
segmentin e te dhenave, pastaj permbajtja nga ai lokacion memories kopjohet ne regjistrin
AL.
Figura 8.10. Vargu i te dhenave per aktivizimin e ekranin shtate segmentesh
XCHG (Exchange) Ky instruksion sherben per shkembimin e permbajtjes se nje regjistri me
tjeter ose me ndonje lokacion memories. Ky instruksion memories nuk mund te perdoret
per shkembimin e permbajtjes te dy lokacioneve ose segment regjistrave.
Instruksionet IN dhe OUT perdoren gjate punes me portat hyrese-dalese. Me instruksion
IN e dhena nga porta hyrese bartet ne akumulator, me instruksion OUT e dhena nga
akumulatori bartet tek porta dalese. Ekzistojne dy lloje instruksionesh per pune me portat.
Tek tipi i pare portat kane adresa fikse. Nderfaqe-adresa paraqet kombinacion 8-bitesh
dhe ajo zgjerohet ne 16-bit me shtimin e tete zerove nga ana e majte. P.sh, me instruksion
OUT 19Н, AX permbajtja e regjistrit AX bartet tek porta dalese me adrese fikse 0019Н. Tek
tipi i dyte i instruksioneve per pune me portat, portat kane adresa te ndryshueshme-
ndryshoreve. Adresa e portes ruhet ne regjistrin DX, ndersa e dhena qe duhet te bartet ose
te pranohet nga porta ne regjistrin AL ose AX. Gjate kohes se ekzekutimit te programit
permbajtja e DX, perkatesisht adresa e portes mund te ndryshohet.

Shembulli 8.3:
OUT DX, AL ;E dhena nga regjistri AL bartet tek
;porta dalese me adrese ne regjistrin DX.
IN AL, DX ;E dhena nga porta hyrese me adrese ne regjistrin
;DX bartet ne regjistrin AL te mikroprocesorit.
8.6.2 Operacionet me vargjet (stringje)
Vargu paraqet bashkesi te dhenash te vendosur ne lokacione te memories te
njepasnjeshme nga segmenti i te dhenave ose segmenti i vecante-ekstra. Ne njerin segment
jane te vendosur te dhenat qe duhet te perpunohen, dhe ne segmentin tjeter te dhenat e
fituara si rezultat i operacioneve te kryera. Indeks-regjistrat DI dhe SI jane regjistra qe e
permbajne zhvendosjen. Regjistri DI perdoret ne cift me segment regjistrin ES, ndersa SI ne
cift me DS. Per kryerjen e operacioneve me vargje shume e rendesishme eshte fl amuri D.
Nese D=0, vlera e regjistrit DI dhe SI automatikisht zvogelohet per nje, nese D=1 do te rritet
per nje. Instruksioni CLD ( Clear D ) e ristarton kete fl amur, ndersa instruksioni STD (Set
D) e seton.

LODS dhe STOS

Me instruksion LODS regjistri AX ose AL mbushet me te dhena nga segmenti i te dhenave


me zhvendosje ne indeks-regjistrin SI. Ne fakt, ekzistojne dy variante te ketij instruksioni.
Instruksioni LODSB (Load Byte) perdoret per bartje te te dhenave 8-bitesh, ndersa
instruksioni LODSW (Load Word) per bartje te te dhenave 16-bitesh. Instruksioni STOS ka
efekt te kundert nga LODS, pra te dhenien nga regjistri AX dhe AL e bart ne lokacion te
segmentit te vecante me zhvendosje ne DI. Instruksionit STOS mund ti jepet edhe prefiksi
REP qe vjen nga fj ala angleze Repeat qe ne perkthim do te thote perserit. Me prefiksin REP
instruksioni STOS kryhet aq here sa eshte vlera e regjistrit CX. MOVS instruksioni eshte
shume i perdorshem, sepse mundeson bartje te dhenes nga nje lokacion memories ne
tjetrin Te theksojme se kjo eshte e mundshme vetem nese te dhenat perbejne varg. Me
instruksion MOVS e dhena nga data-segmenti me tregues ne regjistrin SI bartet ne ekstra
segmentin me tregues DI.
Me instruksion SCAS (String scan instruction) behet krahasimi ndermjet permbajtjes se
regjistrit AL dhe bllokut te bajteve te ekstra segmentit (SCASB) ose ndermjet permbajtjes
se AX dhe bllokut te fj aleve te ekstra segmentit (SCASW). Para ketyre dy instruksioneve
mund te vendoset prefiksi REPNE (repeat while not equal) qe do te thote instruksioni SCAS
do te perseritet deri sa te fitohet krahasimi i suksesshem (permbajtje te njejta) ose vlera e
CX te behet zero. Prefiks tjeter te ketille do te ishte REPE (repeat while equal).
Me instruksion CMPS (compare string) krahasohen dy blloqe te te dhenave, nga te cilet
njeri bllok ndodhet ne segmentin e te dhenave me zhvendosje ne SI dhe blloku tjeter ne
ekstra segmentin me zhvendosje ne DI. Ekzistojne dy variante te ketij instruksioni CMPSB –
per krahasim te blloqeve te bajteve dhe CMPSW – per krahasim te blloqeve te fj aleve. Edhe
para ketyre instruksioneve mund te vendoset parashtesa REPNE dhe REPE.

You might also like