[ nemanja065 @ 27.09.2009. 21:28 ] @
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
[ marko1981 @ 27.09.2009. 21:50 ] @
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.
[ nemanja065 @ 27.09.2009. 21:56 ] @
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
[ J4k1 @ 28.09.2009. 03:50 ] @
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.
[ nemanja065 @ 28.09.2009. 16:30 ] @
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
[ EArthquake @ 02.10.2009. 07:03 ] @
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