Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 5 odgovora
  • 4.317 pregleda

Najnovija ↓

Funkcija kompariranja (cmp) 27.09.2009. u 22:28 · pre 208 meseci #1
zadatak:Nakon izvrsenja sledece sekvence instrukcija koje ce vrijednosti biti upisane u registrima AL i BL. U pitanju je asemblerski jezik procesora 80X86

Code:
.data
      val1  DB 68h
      val2 DB 3Fh
.code
 
mov AL,val1
mov BL,val2
and AL,0B6h
cmp AL,BL


do funkcije cmp dobijem da je AL=100000 BL=111111 ali ne znam kako radi ova funkcija poredjenja cmp tj. koji je rezultat....Pz
Re: Funkcija kompariranja (cmp) 27.09.2009. u 22:50 · pre 208 meseci #2
Instrukcija "cmp" bi trebalo da ne menja vrednosti nijednog operanda, već samo da postavi vrednost u statusni registar (tako što oduzme vrednosti jednu od druge, isto što radi i "sub" instrukcija).

Nju obično sledi neka od instrukcija uslovnog skoka (npr. "jeq", "je", "jl"...) koja "gleda" vrednost u statusnom registru, a koja je rezultat prethodne aritmetičke operacije.
Re: Funkcija kompariranja (cmp) 27.09.2009. u 22:56 · pre 208 meseci #3
pa i nisam te bas najbolje shvatio, nemoras mi to bas tako strucno objasnjavati...pa dobro koliko bi onda iznosili vrednosti AL i BL na kraju...ili sam mozda zaboravio neki deo zadatka...pogledat cu


evo nasao sa izgleda da je ovako:
Code:

 .data

      val1 DB 68h

      val2 DB 3Fh

      .code

      mov AL,val1

      mov BL,val2

      and  AX,0B6h

      cmp AL,BL

      ja label1

      mov AL,val2

      mov BL,val1‚

      jmp exit

label1:

      mov  BL,AL

exit: 


znam rezultat al ne znam doci do njega AL=BL=01h
Re: Funkcija kompariranja (cmp) 28.09.2009. u 04:50 · pre 208 meseci #4
Sta ti nije jasno? Idi korak po korak. Lepo ti je objasnio cemu sluzi cmp, ako se ne potrudis da skontas svakaku instrukciju posebno cemu se koristi neces ni nauciti.
Re: Funkcija kompariranja (cmp) 28.09.2009. u 17:30 · pre 208 meseci #5
Code:
.data

      val1 DB 68h

      val2 DB 3Fh

      .code

      mov AL,val1   AL=1101100

      mov BL,val2    BL=0111111

      and  AX,0B6h kad se primjeni I operacija dobije se 100000

      *cmp AL,BL

      ja label1   

      mov AL,val2  AL=val2=3Fh

      mov BL,val1‚  BL=val1=68h

      jmp exit*

label1:

      mov  BL,AL

exit: 


eto korak po korak al mi nije jasan dio izmedju * i da nije grore greska pa umesto AX treba AL
Re: Funkcija kompariranja (cmp) 02.10.2009. u 08:03 · pre 207 meseci #6
znas li sta je statusni registar , ili EFLAGS na x86 procesorima ?

pojedine instrukcije menjaju njegov sadrzaj da bi oznacile odredjene stvari koje su se desile
izmedju ostalog ima i ZERO bit , oznacava da je rezultat prethodne instrukcije bio jednak nuli

kad ti uradis cmp , registri koji idu uz cmp se oduzmu , ako je rezultat 0 , ZERO bit biva setovan

a to proverava instrukcija uslovnog skoka
recimo , uslovni skok jz (jump if zero)ili je (jump if equal) bi se izvrsio kada bi operandi bili jednaki

ja instrukcija znaci jump if above , znaci skok ako je prvi veci od drugog

uzmi neku listu instrukcija pa citaj sta i kako koja radi
nema drugog nacina da razumes
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme