Instrukcni soubor ================= ADD W0, W1, W2 ; W2 := W0 + W1 ADDC ADD.B pouzije se na 8 bitu ADD #5, w3 ;w3 := w3 + 5 ADD f ; dmem[f] -- prima adresa do pameti dat, pracuje se s implicitnim registrem WREG (synonymum pro W0) ADD w1, #8, w3 ; w3 := w1 + 8 operandy mohou obsahovat neprimou adresaci, [W0] (obsah registru se pouzije jako adresa do pameti dat). [W0++] [++W0] Pr. neexistujici instrukce add [w0++], [w1++], [w2++] scitalo by to pole, ale nefunguje Musi se provest nasledovne: cykl: mov [w0++], w3 add w3, [w1++], [w2++] skoc_na_cykl SUB b,s,d ; d:= b - s SUBB b,s,d ; d:= b - s - c odecte vypujcku (registr - pamet) (ma prohozene operandy, a navic pamet - registr) SUBR b,s,d ; d := s - b SUBBR DEC s,d ; DEC2 s,d INC INC2 MUL.SS b, s, d2; d2 := b * s ( vysledek jde do dvou registru, a vyssi byte je v registru o jednicku vyssi) little endien MUL.SU MUL.US MUL.UU S - signed, U - unsigned MUL f ; W3:W2 := dmem[f] * WREG Narobeni s pameti DIV.S DIV.SD DIV.U DIV.UD DIV.UD DIVF Instrukci musi predchazet REPEAT #17 (aby byla instrukce zopakovana 18 krat). SE Ws, Wnd ; Wnd <- znamenkove rozsireni Ws na 16b ZE Ws, Wnd ; Wnd <- rozsireni nulami na Ws na 16b MOV BRA navesti ; relativni nepodmineny skok na adresu navesti BRA Wn ; relativni neprimy skok pres Wn (W0-W15) PC + 2 + 2x hodnota v Wn BRA cnd, navesti; relativni podmineny skok na adresu navesti cnd: C – carry GE – great or equal GEU – great or equal (unsigned) GT – great than GTU – great than (unsigned) LE – less or equal LEU – less or equal (unsigned) LT – less than LTU – less than (unsigned) N – negative NC – not carry NN – not negative NOV – not overflow NZ – not zero Z – zero GOTO -- absolutni skok CALL -- volani podprogramu RCALL -- neprime volani podrpogramy RETURN RETLW #lit10, Wn ; navrat s ulozenim navratove hodnoty do registru RETFIE -- navrat z prerusovaci rutiny REPEAT REPEAT efektivni vytvareni smycek DO #6, loop . . . loop: mov Opakuje cyklus mezi DO a do loop; PUSH POP POP.S ulozeni flagu a W0-W3 PUSH.S registry W0 az W3 jsou zdvojovany ve stinovych registrech a pri PUSH.S jsou uchovany. Vhodne pro casove kriticke podprogramy, ktere ale nesmi byt volany rekurzivne. (nelze provest dvakrat PUSH.S po sobe) Zasobnik je ulozen v pameti dat a inkrementuje se registr W15 je stack pointr registr W14 je frame pointr ZADANI: 32 bitove scitani L H W0 W1 a W2 W3 b W4 W5 c Nasobeni postupnym pricitanim .global __reset .text ; label uvozujici zacatek code segmentu __reset: ; soucet 32 bit cisel mov #65535, w0 mov #32268, w1 mov #1, w2 mov #32268, w3 add w0, w2, w4 addc w1, w3, w5 ; nasobeni postupnym pricitanim mov #8, w0 mov #8, w1 dec2 w0, w0 mov w1, w2 repeat w0 add w2, w1, w1 bra . ; nekonecny cyklus na kretem to skonci