intel 8086 2 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Архитектура и програмирање микропроцесора Intel 8086 (2) PowerPoint Presentation
Download Presentation
Архитектура и програмирање микропроцесора Intel 8086 (2)

Loading in 2 Seconds...

play fullscreen
1 / 35

Архитектура и програмирање микропроцесора Intel 8086 (2) - PowerPoint PPT Presentation


  • 88 Views
  • Uploaded on

Архитектура и програмирање микропроцесора Intel 8086 (2). Декларисање променљивих Инструкције за пренос података Инструкције за конверзију Аритметичке инструкције Логичке инструкције. Декларисање променљивих. У оквиру сегмента података могу се декларисати скаларне и структурне променљиве.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Архитектура и програмирање микропроцесора Intel 8086 (2)' - gauri


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
intel 8086 2

Архитектура и програмирање микропроцесора Intel 8086 (2)

Декларисање променљивих

Инструкције за пренос података

Инструкције за конверзију

Аритметичке инструкције

Логичке инструкције

slide2
Декларисање променљивих
  • У оквиру сегмента података могу се декларисати скаларне и структурне променљиве.
  • Касније у програму се може приступати тим променљивама на основу њихових симболичких имена датих у декларацији у облику лабела.
  • Приликом декларације може се (али и не мора) задати иницијална вредност променљиве.
slide3

лабела

недефинисана иницијална вредност

директива

Декларисање променљивих
  • За декларисање променљивих обима бајт могу се употребити асемблерске директиве db, или byteи sbyte.

imepr db ?

slide4
Декларисање променљивих
  • dbје директива која се користила у старијим верзијама асемблера (пре МАСМ 6.x).
  • У новијим верзијама могу се користити byteи sbyteза декларисање неозначених и означених података обима једног бајта.
slide5
Декларисање променљивих
  • Када су декларисане, променљиве се могу користити у програму навођењем њиховог имена а асемблер то име аутоматски замењује одговарајућим офсетом у односу на почетак сегмента података.
slide6

DOS иницијализује ове променљиве на 0 али не можемо да се ослонимо на то!

Декларисање променљивих

dseg segment

i db ?

j byte ?

k sbyte ?

dseg ends

mov i,0

mov j,245

mov k,-5

mov al,i

mov j,al

slide7
Декларисање променљивих

dseg segment

i db 0

j byte 255

k sbyte -1

dseg ends

  • Водите рачуна да асемблер не проверава тип податка већ само обим!
slide8
Декларисање променљивих
  • За декларисање променљивих обима речи (16-битне) могу се употребити асемблерске директиве dw, или wordи sword.

rec dw ?

neoznr word ?

oznrec sword ?

inic0 word 0

inicM1 sword -1

iniBig word 65535

iniOfs dw rec

slide9

иницијална вредност

лабелакоја представља име низа

дуплицирање елеменат у заградама n пута

тип (обим) елемента низа

број елемената низа

Декларисање променљивих
  • За декларисање променљивих обима дупле речи (32-битне) могу се употребити асемблерске директиве dd, или dwordи sdword.
  • За декларисање низова употребићемо

imenizaosnovitipn dup (?)

slide10
Декларисање променљивих
  • Код декларисања вишедимензионалних низова морамо водити рачуна да се елементи тих низова смештају у линеаран низ меморијских локација.
  • Постоје два начина смештања
    • column-order (FORTRAN, BASIC)
    • row-order (Pascal, C, …)
slide11
Инструкције за пренос података
  • Инструкције за пренос података су mov, xchg, lea, lds, les, push, pop, lahf, sahf …
  • Инструкција mov има неколико облика:

mov reg,reg

mov mem,reg

mov reg,mem

mov mem,imm

mov reg,imm

mov segreg,mem16

mov segreg,reg16

mov mem16,segreg

mov reg16,segreg

slide12
Инструкције за пренос података
  • Инструкцијом movне може се копирати садржај из једне у другу меморијску локацију нити напунити сегментни регистар непосредном вредношћу.
  • У свим варијантама операнди морају бити истог обима.
  • Не утиче на маркере!
slide13
Инструкције за пренос података
  • Инструкција xchgмења вредности својим операндима.

xchg reg,mem

xchg reg,reg

  • Не утиче на маркере!
slide14
Инструкције за пренос података
  • Инструкцијelds иles служе за пуњење пара 16-битног регистра опште намене и сегментног регистра (DS или ES).

lds reg16,mem32

les reg16,mem32

  • Не утиче на маркере!
slide15
Инструкције за пренос података
  • Инструкција lea има облик

lеа reg16,mem

  • Пуни 16-битни регистар ефективном адресом меморијске локације.
  • Не утиче на маркере!
slide16
Инструкције за пренос података
  • Инструкције push иpopслуже за упис и читање из магацинама облик

push reg16

pop reg16

push serreg

pop segreg ;osim CS

push mem ; 16-bitne

pop mem ; 16-bitne

  • Не утиче на маркере!
slide17
Инструкције за пренос података
  • Инструкције lahf иsahfслуже за пуњење регистра AH нижим бајтом статусног регистра, односно за копирање регистра AH у нижи бајт статусног регистра.

lahf

sahf

slide18
Инструкције за конверзију
  • Инструкције за конверзију су cbw, cwd и xlat.
  • Инструкција cbw врши знаковно проширење 8-битне вредности из AL у 16-битну вредност у AX.
  • Инструкција cwd врши знаковно проширење 16-битне вредности из AX у 32-битну вредност у DX:AX.
slide19
Инструкције за конверзију
  • Инструкцијa xlatпреводи вредност у AL на основу табеле у меморијичија је базна адреса у регистру BX:

temp:=al+bx

al:=ds:[temp]

  • Инструкције из ове групе немају експлицитних операнада и не утичу на маркере.
slide20
Аритметичке инструкције
  • Инструкције за сабирање: add, adc, inc, aaa, daa.
  • Инструкције за одузимање: sub, sbb, dec, aas, das.
  • Инструкција за поређење cmp.
  • Инструкција за промену знака neg.
  • Инструкције за множење: mul, imul, aam.
  • Инструкције за дељење: div, idiv, aad.
slide21
Аритметичке инструкције
  • Синтакса инструкција add и adc слична је синтакси mov инструкције осим што није могуће сабирање са сегментним регистром.
  • Инструкција adc врши сабирање са преносом.
  • Обе инструкције утичу на исти начин на маркере и то на ОF, CF, SF, ZF, AF и PF.
slide22
Аритметичке инструкције
  • Синтакса инструкцијeinc је:

inc reg

inc mem

inc reg16

  • Ова инструкција увећава свој операнд за један и осим CF утиче на исти начин на маркере као и

addoperand,1

slide23
Аритметичке инструкције
  • Инструкције AAA и DAA служе за ASCII и децимално подешавање код BCD аритметике.
  • У првом случају ради се заправо о непакованом формату BCDбројева, а у другом о пакованом.
slide24
Аритметичке инструкције

if ((al and 0Fh)> 9 or (AF=1)) then

al:=al+6

ah:=ah+1

AF:=1

CF:=1

else

AF:=0

CF:=0

endif

al:=al and 0Fh

slide25
Аритметичке инструкције

if ((al and 0Fh)> 9 or (AF=1)) then

al:=al+6

AF:=1

endif

if ((al >9Fh)or (CF=1)) then

al:=al+60h

CF:=1

endif

slide26
Аритметичке инструкције
  • Инструкције за одузимање sub, sbb, dec, aas и das имају слични синтаксу као и њихови аналогони за сабирање.
  • Наравно ради се о одузимању, одузимању са позајмицом, смањењу за 1 и подешавањима код одузимања.
slide27
Аритметичке инструкције

if ((al and 0Fh)> 9 or (AF=1)) then

al:=al-6

ah:=ah-1

AF:=1

CF:=1

else

AF:=0

CF:=0

endif

al:=al and 0Fh

slide28
Аритметичке инструкције

if ((al and 0Fh)> 9 or (AF=1)) then

al:=al-6

AF:=1

endif

if ((al >9Fh) or (CF=1)) then

al:=al-60h

CF:=1

endif

slide29
Аритметичке инструкције
  • Инструкција за поређење има синтаксу:

cmpreg,reg

cmpreg,mem

cmpmem,reg

cmpreg,imm

cmpmem,imm

  • Ова инструкција одузима од одредишног изворни операнд, резултат не смешта нигде, а на основу резултатат поставља ZF, SF, OF и CF.
slide30
Аритметичке инструкције
  • Инструкција за негацију има синтаксу:

neg dest; dest:=0-dest

  • Ова инструкција утиче на AF, SF, PF и ZF.
  • Ако је операнд био нула његов знак се не мења али се поставља CF. Негација најмањег негативног броја не мења операнд али поставља OF.
slide31
Аритметичке инструкције
  • Инструкција mulслужи за неозначено а imul за означено множење.

mul reg

mul mem

imul reg

imul mem

  • Ако је операнд 8-битан онда се извршава

ax:=al*operand8

  • Ако је операнд 16-битан извршава се

dx:ax:=ax*operand16

slide32
Аритметичке инструкције
  • Вредности маркера AF, PF, SF, ZF нису дефинисане после ових инструкција.
  • Инструкција aam служи за ASCII подешавање после множења. Она подразумева да су помножена два 8-битна броја и да је резултату ax.

ah:=ax div 10

al:=ax mod 10

slide33
Аритметичке инструкције
  • Синтакса инструкција за дељење div, idiv и aad слична је онима за множење.
  • Код 8-битног дељења дели се ax 8-битним операндом после чега је количник у al а остатак у ah.
  • Код 16-битног дељења дели се dx:ax16-битним операндом после чега је количник у ax а остатак у dx.
  • Инструкција аad обавља

al:=ah*10+al

ah:=0

slide34
Логичке инструкције

and/or/xor reg,reg

and/or/xor mem,reg

and/or/xor reg,mem

and/or/xor reg,imm

and/or/xor mem,imm

not reg

not mem

slide35
Логичке инструкције
  • Инструкција not не утиче на маркере, док остале утичу тако што бришу CFи OF, ZF постављају на основу резултата, SF на основу бита највеће тежине резултата а AF је недефинисан.