set instrukcijaes.elfak.ni.ac.rs/files/s.jovanovic - msp430 skup... · web viewasemblerski jezik,...
TRANSCRIPT
Univerzitet u NišuElektronski FakultetKatedra za Elektroniku
PREDMET: Mikroprocesorski Sistemi Avgust 2008
MSP430 SET INSTRUKCIJA
Mentor: Student: Prof. Dr. Mile Stojčev, red. prof. Srđan Jovanović 12455
SET INSTRUKCIJA MSP430
SADRŽAJ
1. UVOD .......................................................................................................... 42. REČNIK SKRAĆENICA KORIŠĆENIH U RADU ............................... 63. DETALJAN OPIS INSTRUKCIJA .......................................................... 8
3.1. ADC[.W];ADC.B .................................................................................................. 113.2. ADD[.W];ADD.B .................................................................................................. 123.3. ADDC[.W];ADDC.B ............................................................................................ 133.4. AND[.W];AND.B .................................................................................................. 143.5. BIC[.W];BIC.B ...................................................................................................... 153.6. BIS[.W];BIS.B ....................................................................................................... 163.7. BIT[.W];BIT.B ....................................................................................................... 173.8. BR ........................................................................................................................... 183.9. CALL ...................................................................................................................... 193.10. CLR[.W];CLR.B ................................................................................................... 203.11. CLRC .................................................................................................................... 213.12. CLRN .................................................................................................................... 223.13. CLRZ .................................................................................................................... 233.14. CMP[.W];CMP.B ................................................................................................. 243.15. DADC[.W];DADC.B ........................................................................................... 253.16. DADD[.W];DADD.B ........................................................................................... 263.17. DEC[.W];DEC.B .................................................................................................. 273.18. DECD[.W];DECD.B ............................................................................................ 283.19. DINT ..................................................................................................................... 293.20. EINT ..................................................................................................................... 303.21. INC[.W];INC.B .................................................................................................... 313.22. INCD[.W];INCD.B .............................................................................................. 323.23. INV[.W];INV.B ................................................................................................... 333.24. JC/JHS .................................................................................................................. 343.25. JEQ/JZ .................................................................................................................. 353.26. JGE ....................................................................................................................... 363.27. JL .......................................................................................................................... 373.28. JMP ....................................................................................................................... 383.29. JN .......................................................................................................................... 393.30. JNC/JLO ............................................................................................................... 403.31. JNE/JNZ ............................................................................................................... 413.32. MOV[.W];MOV.B ............................................................................................... 423.33. NOP ...................................................................................................................... 433.34. POP[.W];POP.B ................................................................................................... 443.35. PUSH[.W];PUSH.B ............................................................................................. 453.36. RETI ..................................................................................................................... 463.37. RET ....................................................................................................................... 473.38. RLA[.W];RLA.B .................................................................................................. 483.39. RLC[.W];RLC.B ................................................................................................... 49
S t r a n a | 2
SET INSTRUKCIJA MSP430
3.40. RRA[.W];RRA.B .................................................................................................. 503.41. RRC[.W];RRC.B .................................................................................................. 513.42. SBC[.W];SBC.B ................................................................................................... 523.43. SETC ..................................................................................................................... 533.44. SETN .................................................................................................................... 543.45. SETZ ..................................................................................................................... 553.46. SUB[.W];SUB.B ................................................................................................... 563.47. SUBC[.W];SUBC.B ............................................................................................. 573.48. SWPB ................................................................................................................... 583.49. SXT ....................................................................................................................... 593.50. TST[.W];TST.B .................................................................................................... 603.51. XOR[.W];XOR.B ................................................................................................. 61
S t r a n a | 3
SET INSTRUKCIJA MSP430
1. UVOD
Asemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične procesorske arhitekture predstavlja u ljudima čitljivom obliku. Iz toga proizilazi da svaka procesorska arhitektura poseduje svoj asembler. Programi se u procesoru izvršavaju u mašinskom jeziku, koji predstavlja uređene nizove binarnih cifara, koji ljudima, koji mnogo lakše pišu i razumeju simbole umesto dugih nizova cifara, nije najpodesniji za korišćenje.
Asemblerski jezik je simbolična reprezentacija binarno kodiranih instrukcija mašinskog jezika, a sama upotreba simbola umesto bitova ga čini znatno čitljivijim od mašinskog. Simboli označavaju određene šablone bitova, kao što su kodovi operacija ili specifikacije registara. Uz to, asemblerski jezik omogućava korišćenje labela koje predstavljaju simbolička imena pojedinih memorijskih lokacija bilo da one sadrže instrukcije programa ili podatke.
U samom procesu nastanka izvršne datoteke asembler ima značajnu ulogu (Slika 1). Asembler čita pojedine izvorne fajlove i proizvodi objektne fajlove koji sadrže mašinske instrukcije i informacije koje pomažu kombinovanju nekoliko objektnih fajlova u program. Većina programa se sastoji od nekoliko datoteka ili modula koje se pišu i prevode nezavisno.
Slika 1. Proces nastanka izvršne datoteke
Modul obično sadrži reference na potprograme i podatke definisane u drugim modulima i bibliotekama. Još jedno sredstvo, linker, kombinuje kolekciju objektnih i bibliotečkih fajlova u izvršni fajl koji se može izvršiti u procesoru.
Program u asembleru se često naziva i asemblerskim kodom. Taj kod se putem specijalnog kompilatora pretvara u mašinski kod koji je direktno izvršiv od strane procesora. Obrnuti proces pretvaranja mašinskog koda u asembler kod se naziva "disasembliranje". Pri tom procesu je spašavanje svih pređašnjih delova asembler koda nemoguće, pošto se oni (npr. komentari) pri kompiliranju nepovratno brišu. Zbog toga je disasemblirani kod teško razumljiv.
S t r a n a | 4
SET INSTRUKCIJA MSP430
Programi napisani u asembleru se odlikuju mogućnošću slanja direktnih komandi procesoru kao i iskorišćavanju celog dijapazona računarske arhitekture. Pošto ti programi rade praktično na nivou mašinskog koda, i nemaju pomoćne konstrukcije, generalizacije koda i za procesor slične manje bitne stvari, mnogo su manji i brži od programa napisanih u nekom višem programskom jeziku.
S t r a n a | 5
SET INSTRUKCIJA MSP430
2. REČNIK SKRAĆENICA KORIŠĆENIH U RADU
U Tabeli 1 se nalazi spisak skraćenica koje su korišćene u tekstu, kao i njihova objašnjenja.
Simbol Definicijasrc Izvorišni operand, definisan od strane As i S-reg
dst Odredišni operand, definisan od strane Ad i D-reg
As Bitovi koji predstavljaju model adresiranja
Ad Bitovi koji predstavljaju model adresiranja
S-reg Radni registar koji se koristi za izvorišni operand, src
D-reg Radni registar koji se koristi za odredišni operand, dst
R0 ili PC Registar 0, ili programski brojačR1 ili SP Registar 1 ili pokazivač stekaR2 iliSR/CG1
Registar 2 ili status registar/generator konstanti 1
R3 iliCG2
Registar 3 ili status registar/generator konstanti 2
R4 doR15
Radni registarRegistri opšte namene
Rn Radni registar sa n=4-15Registri opšte namene
# Neposredno adresiranje@ Registarsko indirektno adresiranje& Apsolutno adresiranje--> Pravac toka podatakalabel 16-bitna labelaTOS Vrh stekaC Bit prenosaN Negativni bitV Bit prekoračenja
Z Bit nule
S t r a n a | 6
SET INSTRUKCIJA MSP430
.B Sufiks na kraju instrukcije koji označava bajt operaciju
.W Sufiks na kraju instrukcije koji označava operaciju veličine reči
MSB Bajt naveće težineLSB Bajt najmanje težineMSb Bit naveće težineLSb Bit najmanje težine
Tabela 1.
S t r a n a | 7
SET INSTRUKCIJA MSP430
3. DETALJAN OPIS INSTRUKCIJA
Arhitektura MSP430 je nastala iz ideje o korišćenju redukovanog broja instrukcija transparentnih formata. Postoji određen broj osnovnih instrukcija koje su realizovane u hardveru i pseudo-instrukcije koje koriste hardver radi što efikasnije emulacije. Pseudo-instrukcije koriste osnovne instrukcije u kombinaciji sa generatorima konstanti CG1 i CG2. U ovom radu su opisane i osnovne i pseudo-instrukcije.
Instrukcije mogu da zauzmu jednu, dve ili tri reči u programskoj memoriji, u zavisnosti od tipa adresiranja koje se koristi. Svaka instrukcija zauzima minimum jednu reč u memoriji. Indeksirano, simboličko, apsolutno i neposredno adresiranje zahtevaju još jednu reč u programskoj memoriji. Ova četiri tipa adresiranja su moguća za pristupanje izvorišnom operandu, dok se za pristupanje odredišnom operandu koriste indeksirano, simboličko i apsolutno adresiranje.
Dalje u tekstu je dat spisak svih osnovnih i pseudo-instrukcija, kao i njihov detaljan opis. Pseudo-instrukcije su obeležene zvezdicom (*).
S t r a n a | 8
SET INSTRUKCIJA MSP430
3.1. Spisak osnovnih i pseudo-instrukcija
Status Bitovi V N Z C
*ADC[.W];ADC.B dst dst+C->dst * * * *ADD[.W];ADD.B src,dst src+dst->dst * * * *ADDC[.W];ADDC.B src,dst src+dst+C->dst * * * *AND[.W];AND.B src,dst src.and.dst->dst 0 * * *BIC[.W];BIC.B src,dst .not.src.and.dst->dst - - - -BIS[.W];BIS.B src,dst src.or.dst->dst - - - -BIT[.W];BIT.B src,dst src.and.dst 0 * * *
*BR dst Branch to ....... - - - -CALL dst PC+2->stack, dst->PC - - - -
*CLR[.W];CLR.B dst Clear destination - - - -*CLRC Clear carry bit - - - 0*CLRN Clear negative bit - 0 - -*CLRZ Clear zero bit - - 0 -CMP[.W];CMP.B src,dst dst-src * * * *
*DADC[.W];DADC.B dst dst+C->dst (decimal) * * * *DADD[.W];DADD.B src,dst src+dst+C->dst (decimal) * * * *
*DEC[.W];DEC.B dst dst-1->dst * * * **DECD[.W];DECD.B dst dst-2->dst * * * **DINT Disable interrupt - - - -*EINT Enable interrupt - - - -*INC[.W];INC.B dst Increment destination,
dst+1->dst * * * **INCD[.W];INCD.B dst Double-Increment destination,
dst+2->dst * * * **INV[.W];INV.B dst Invert destination * * * *JC/JHS Label Jump to Label
if Carry-bit is set - - - -JEQ/JZ Label Jump to Label
if Zero-bit is set - - - -JGE Label Jump to Label
if (N .XOR. V) = 0 - - - -JL Label Jump to Label
if (N .XOR. V) = 1 - - - -JMP Label Jump to Label
unconditionally - - - -JN Label Jump to Label
if Negative-bit is set - - - -JNC/JLO Label Jump to Label
if Carry-bit is reset - - - -JNE/JNZ Label Jump to Label
S t r a n a | 9
SET INSTRUKCIJA MSP430
if Zero-bit is reset - - - -MOV[.W];MOV.B src,dst src->dst - - - -
*NOP No operation - - - -*POP[.W];POP.B dst Item from stack, SP+2->SP - - - -PUSH[.W];PUSH.B src SP-2->SP, src->@SP - - - -RETI Return from interrupt * * * *
TOS -> SR, SP + 2 -> SPTOS -> PC, SP + 2 -> SZP
*RET Return from subroutine - - - -TOS -> PC, SP + 2 -> SP
*RLA[.W];RLA.B dst Rotate left arithmetically* * * **RLC[.W];RLC.B dst Rotate left through carry * * * *RRA[.W];RRA.B dst MSB->MSB-> ....LSB->C 0 * * *RRC[.W];RRC.B dst C->MSB-> .........LSB->C * * * *
*SBC[.W];SBC.B dst Subtract carry from destination * * * *
*SETC Set carry bit - - - 1*SETN Set negative bit - 1 - -*SETZ Set zero bit - - 1 -SUB[.W];SUB.B src,dst dst+.not.src+1->dst * * * *SUBC[.W];SUBC.B src,dst dst+.not.src+C->dst * * * *SWPB dst swap bytes - - - -SXT dst Bit7->Bit8 ........ Bit15 0 * * *
*TST[.W];TST.B dst Test destination 0 * * 1XOR[.W];XOR.B src,dst src.xor.dst->dst * * * *
S t r a n a | 10
SET INSTRUKCIJA MSP430
* ADC[.W] Sabiranje sa prenosom* ADC.B Sabiranje sa prenosom
Sintaksa ADC dst ili ADC.W dstADC.B dst
Operacija dst + C -> dst
Emulacija ADDC #0,dstADDC.B #0,dst
Opis Vrednost bita prenosa se dodaje na odredišni operand. Prethodna vrednost odredišnog operanda se briše.
Status bitovi N: Setovan ako je rezultat negativan, resetovan ako je pozitivanZ: Setovan ako je rezultat nula, u drugom slučaju resetovanC: Setovan ako je dst inkrementovan sa 0FFFFh na 0000, u drugom slučaju
resetovanSetovan ako je dst inkrementovan sa 0FFh na 00, u drugom slučaju resetovan
V: Setovan ako je došlo do prekoračenja, u drugom slučaju resetovan
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer I 16-bitni brojač pokazivača R13 je dodat na 32-bitni brojač pokazivača R12:ADD @R13,0(R12) ; Dodaj LSDADC 2(R12) ; Dodaj bit prenosa na MSD
Primer II 8-bitni brojač pokazivača R13 je dodat na16-bitni brojač pokazivača R12:ADD.B @R13,0(R12) ; Dodaj LSDADC.B 1(R12) ; Dodaj bit prenosa na MSD
S t r a n a | 11
SET INSTRUKCIJA MSP430
ADD[.W] Sabira izvorišni operand sa odredišnimADD.B Sabira izvorišni operand sa odredišnim
Sintaksa ADD src,dst ili ADD.W src,dstADD.B src,dst
Operacija src + dst -> dst
Opis Izvorišni operand se dodaje na odredišni. Operacija ne utiče na stanje izvorišnog operanda, dok je prethodno stanje odredišnog operanda izgubljeno.
Status bitovi N: Setovan ako je rezultat negativan, resetovan ako je pozitivanZ: Setovan ako je rezultat nula, u drugom slučaju resetovan C: Setovan ako postoji bit prenosa kao rezultat operacije, u drugom slučaju
resetovanV: Setovan ako je došlo do prekoračenja, u drugom slučaju reset
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer I R5 je uvećan za 10. Skok na labelu MIPS se izvodi ako postoji bit prenosa
ADD #10,R5JC MIPS ; Došlo je do bita prenosa...... ; Ne postoji prenos
Primer II R5 je uvećan za 10. Skok na labelu MIPS se izvodi ako postoji bit prenosa
ADD.B #10,R5 ; Dodaje 10 na LSB registra R5JC MIPS ; Postoji bit prenosa, ako je (R5) ≥ 246 [0Ah+0F6h]...... ; Ne postoji prenos
S t r a n a | 12
SET INSTRUKCIJA MSP430
ADDC[.W] Sabira izvorišni operand sa odredišnim, sa prenosomADDC.B Sabira izvorišni operand sa odredišnim, sa prenosom
Sintaksa ADDC src,dst ili ADDC.W src,dstADDC.B src,dst
Operacija src + dst + C -> dst
Opis Izvorišni operand i bit prenosa se dodaju na odredišni. Operacija ne utiče na stanje izvorišnog operanda, dok je prethodno stanje odredišnog operanda izgubljeno.
Status bitovi N: Setovan ako je rezultat negativan, resetovan ako je pozitivanZ: Setovan ako je rezultat nula, u drugom slučaju resetovan C: Setovan ako postoji bit prenosa MSB-a rezultata, u drugom slučaju resetovanV: Setovan ako je došlo do prekoračenja, u drugom slučaju reset
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer I 32-bitni brojač na koji ukazuje R13 se sabira sa 32-bitni brojač koji se nalazi 11 reči (20/2 + 2/2) iznad pointera u R13.
ADD.B @R13+, 20(R13) ; Sabira LSD-e bez bita prenosaADDC @R13+, 20(R13) ; Sabira MSD-e sa prenosom iz LSD
Primer II 24-bitni brojač na koji ukazuje R13 se sabira sa 24-bitnim brojačem koji se nalazi 11 reči iznad pointera u R13.
ADD.B @R13+, 10(R13); Sabira LSD-e bez bita prenosaADDC.B @R13+, 10(R13) ; Sabira srednje bitove sa prenosomADDC.B @R13+, 10(R13) ; Sabira MSD-e sa prenosom iz LSD
S t r a n a | 13
SET INSTRUKCIJA MSP430
AND[.W] Vrši operaciju AND nad izvorišnim i odredišnim operandimaAND.B Vrši operaciju AND nad izvorišnim i odredišnim operandima
Sintaksa AND src, dst ili AND.W src, dstAND.B src, dst
Operacija src .AND. dst -> dst
Opis Vrši se operacija konjukcije nad izvorišnim i odredišnim operandima. Rezultat se smešta u odredišni operand.
Status bitovi N: Setovan ako je MSB rezultata setovan, resetovan ako nije setovanZ: Setovan ako je rezultat nula, u drugom slučaju resetovan C: Setovan ako je rezultat različit od nule, u drugom slučaju resetovanV: Resetovan
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer I Setovani bitovi u R5 su iskorišćeni kao maska (#0AA55h) za reč na adresi MIPS. Ukoliko je rezultat nula, program se grana ka labeli ELFAK.
MOV #0AA55h, R5 ; Učitavanje maske u registar R5AND R5, MIPS ; Maskiranje reči na adresi MIPS sa R5JZ ELFAK ;...... ; Rezultat nije nula
;;ili;
AND #0AA55h, MIPSJZ ELFAK
Primer II Vrši se konjukcija bit maske #0A5h sa LSB-om MIPS-a. Ako je rezultat nula, program se grana ka labeli ELFAK.
AND.B #0A5h, MIPS ; Maskiranje LSB-a MIPS-a sa #0A5hJZ ELFAK ;...... ; Rezultat nije nula
S t r a n a | 14
SET INSTRUKCIJA MSP430
BIC[.W] Resetuje bitove u odredišnom operanduBIC.B Resetuje bitove u odredišnom operandu
Sintaksa BIC src,dst ili BIC.W src,dstBIC.B src,dst
Operacija .NOT.src .AND. dst -> dst
Opis Vrši konjukciju invertovanog izvorišnog operanda i odredišnog operanda. Rezultat se smešta u odredišni operand, dok vrednost izvorišnog operanda ostaje nepromenjena.
Status bitovi N: Nema uticaja na ovaj status bit.Z: Nema uticaja na ovaj status bit.C: Nema uticaja na ovaj status bit.V: Nema uticaja na ovaj status bit.
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer I Resetuje se 6 MSB-ova reči MIPS.
BIC #0FC00h, MIPS ; Resetuje 6 MSB-ova u MIPS
Primer II Resetuje se 5 MSB-ova reči MIPS.
BIC #0F8h, EL ; Resetuje 5 MSB-ova u MIPS
Primer III Resetuju se pinovi na portu P0 i P1.
P0OUT .equ 011h ; Definisanje adrese portaP0_0 .equ 01hP0_1 .equ 02h
BIC.B #P0_0+P0_1,&P0OUT ; Postavljanje P0.0 i P0.1 na nulu
S t r a n a | 15
SET INSTRUKCIJA MSP430
BIS[.W] Setuje bitove u odredišnom operanduBIS.B Setuje bitove u odredišnom operandu
Sintaksa BIS src,dst ili BIS.W src,dstBIS.B src,dst
Operacija src .OR. dst -> dst
Opis Vrši se disjunkcija između izvorišnog i odredišnog operanda. Rezultat se smešta u odredišni operand, dok vrednost izvorišnog operanda ostaje nepromenjena.
Status bitovi N: Nema uticaja na ovaj status bit.Z: Nema uticaja na ovaj status bit.C: Nema uticaja na ovaj status bit.V: Nema uticaja na ovaj status bit.
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer I Setuje se 6 LSB-ova reči MIPS.
BIS #003Fh, MIPS ; Setuje se 6 LSB-ova reči MIPS
Primer II Startuje se A/D konverzija.
ASOC .equ 1 ; Bit za start konverzijeACTL .equ 114h ; ADC-Kontrolni registar
BIS #ASOC,&ACTL ; Start A/D konverzije
Primer III Setuje se 3 MSB-ova reči MIPS.
BIS.B #0E0h, MIPS ; Setuje se 3 MSB-ova reči MIPS
Primer IV Setuju se pinovi P0 i P1
P0OUT .equ 011hP0 .equ 01hP1 .equ 02h
BIS.B #P0+P1,&P0OUT
S t r a n a | 16
SET INSTRUKCIJA MSP430
BIT[.W] Testira bitove u odredišnom operanduBIT.B Testira bitove u odredišnom operandu
Sintaksa BIT src, dst ili BIT.W src, dstBIT.B src, dst
Operacija src .AND. dst
Opis Vrši se operacija konjukcije nad izvorišnim i odredišnim operandima. Rezultat utiče jedino na status bitove, dok je bez uticaja na izvorišni i odredišni operand.
Status bitovi N: Setovan ako je MSB rezultata setovan, resetovan ako nije setovanZ: Setovan ako je rezultat nula, u drugom slučaju resetovan C: Setovan ako je rezultat različit od nule, u drugom slučaju resetovanV: Resetovan
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer I Ukoliko je bit 9 registra R8 setovan, program se grana na labelu MIPSBIT #0200h, R8 ; Da li je bit 9 registra R8 setovan?JNZ MIPS ; Da, skok na MIPS... ; Ne, nastavi dalje...
Primer II Provera koji je kanal A/D konvertora postavljen MUX-omACTL .equ 114h ; ADC kontrolni registarBIT #4, &ACTL ; Da li je odabran kanal 0?jnz KRAJ ; Da, skok na KRAJ
Primer III Ako je bit 3 registra R8 setovan, program se dalje grana na labelu MIPS.BIT.B #8, R8JC MIPS
Primer IV Testira se primljeni bit serijskom komunikacijom RCV. Kako se korišćenjem instrukcije BIT za testiranje bita stanje bita prenosa postavlja na stanje testiranog bita, bit prenosa je iskorišćen kao nosioc informacije pri serijskom prenosu:
; Serijska komunikacija sa šiftovanjem LSB-ova:; xxxx xxxx xxxx xxxx
BIT.B #RCV,RCCTL ; Bit infomacija se smešta u bit prenosa (C)RRC RECBUF ; Bit prenosa (C) -> MSB registra RECBUF
; cxxx xxxx...... ; Ponoviti prethodne 2 instrukcije...... ; 8 puta
; cccc cccc; ^ ^; MSB LSB
S t r a n a | 17
SET INSTRUKCIJA MSP430
*BR, BRANCH Grananje ka destinaciji
Sintaksa BR dst
Operacija dst -> PC
Emulacija MOV dst, PC
Opis Izvodi se bezuslovno grananje bilo gde u 64 K adresnog prostora. Mogu se koristiti svi tipovi adresiranja. Instrukcija grananja je veličine reči (word).
Status bitovi Bez uticaja na status bitove
Primeri Primeri za sve tipove adresiranja:
BR #MIPS ; Grananje na labelu MIPS, ili direktno grananje (npr. #0A4h); Osnovna instrukcija MOV @PC+, PC
BR MIPS ; Grananje ka adresi koja se nalazi u MIPS; Osnovna instrukcija MOV X(PC), PC; Indirektno adresiranje
BR & MIPS ; Grananje ka adresi koja se nalazi u apsolutnoj adresi MIPS; Osnovna instrukcija MOV X(0), PC; Indirektno adresiranje
BR R5 ; Grananje ka adresi koja se nalazi u registru R5; Osnovna instrukcija MOV R5, PC; Indirektno R5
BR @R5 ; Grananje ka adresi koja se nalazi u reči na koju ukazuje R5; Osnovna instrukcija MOV @R5, PC; Indirektno, indirektno R5
BR @R5+ ; Grananje ka adresi koja se nalazi u reči na koju ukazuje R5; uz inkrementiranje pointera u R5 nakon grananja.; Osnovna instrukcija MOV @R5, PC; Indirektno, indirektno R5 sa autoinkrementiranjem
BR X(R5) ; Grananje ka adr. koja se nalazi u reči na koju ukazuje R5+X; Osnovna instrukcija MOV X(R5), PC; Indirektno, indirektno R5 + X
S t r a n a | 18
SET INSTRUKCIJA MSP430
CALL Potprogram
Sintaksa CALL dst
Operacija dst -> tmp dst se smešta u tmpSP - 2-> SPPC -> @SPtmp -> PC dst se smešta u PC
Opis Poziva se potprogram koji smešten na bilo kojoj adresi unutar 64 K adresnog prostora. Mogu se koristiti svi tipovi adresiranja. Povratna adresa (adresa instrukcije koja sledi nakon poziva potprograma) je smeštena u steku. Instrukcija CALL je veličine reči.
Status bitovi Bez uticaja na status bitove
Primer I CALL #MIPS ; Poziv na labelu MIPS ili na konkretnu adresu (npr. #0A4h); SP-2 -> SP, PC+2 -> @SP, @PC+ -> PC
CALL MIPS ; Poziv upućen na adresu koja se nalazi na labeli MIPS; SP-2 -> SP, PC+2 -> @SP, X(PC) -> PC; Indirektno adresiranje
CALL & MIPS; Poziv na adresu koja se nalazi na apsolutnoj adresi labele; MIPS; SP-2 -> SP, PC+2 -> @SP, X(PC) -> PC; Indirektno adresiranje
CALL R5 ; Poziv na adresu koja se nalazi u R5; SP-2 -> SP, PC+2 -> @SP, R5 -> PC; Indirektno na R5
CALL @R5 ; Poziv ka adresi koja se nalazi u reči na koju ukazuje R5; SP-2 -> SP, PC+2 -> @SP, @R5 -> PC; Indirektno, indirektno R5
CALL @R5+ ; Poziv na adresu koja se nalazi u reči na koju ukazuje R5; uz inkrementiranje pointera u R5 nakon poziva; SP-2 -> SP, PC+2 -> @SP, @R5 -> PC; Indirektno, indirektno R5 sa autoinkrementiranjem
CALL X(R5) ; Poziv ka adr. koja se nalazi u reči na koju ukazuje R5+X ; SP-2 -> SP, PC+2 -> @SP, X(R5) -> PC; Indirektno, indirektno R5 + X
S t r a n a | 19
SET INSTRUKCIJA MSP430
* CLR[.W] Briše odredišni operand* CLR.B Briše odredišni operand
Sintaksa CLR dst ili CLR.W dstCLR.B dst
Emulacija MOV #0, dstMOV.B #0, dst
Operacija 0 -> dst
Opis Instrukcija briše odredišni operand.
Status bitovi Bez uticaja na status bitove
Primer I Briše se reč MIPSCLR MIPS ; 0 -> MIPS
Primer II Briše se registar R5CLR R5
Primer III Briše se bajt MIPSCLR.B MIPS ; 0 -> MIPS
S t r a n a | 20
SET INSTRUKCIJA MSP430
* CLRC Briše bit prenosa (C)
Sintaksa CLRC
Operacija 0 -> C
Emulacija BIC #1, SR
Opis Briše se bit prenosa (C). Instrukcija CLRC je instrukcija veličine reči.
Status bitovi N: Bez uticajaZ: Bez uticaja C: ResetovanV: Bez uticaja
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer I 16-bitni brojač na koji ukazuje R13 se sabira sa 32-bitnim brojačem na koji ukazuje registar R12.
CLRC ; C=0: Definiše startDADD @R13,0(R12) ; Sabira 16-bitni brojač sa LSB-om 32-bitnog
; brojačaDADC 2(R12) ; Dodaje bit prenosa na MSB 32-bitnog
; brojača
S t r a n a | 21
SET INSTRUKCIJA MSP430
* CLRN Briše bit negativnog predznaka (N)
Sintaksa CLRN
Operacija 0 -> Nili(.NOT.src .AND. dst -> dst)
Emulacija BIC #4,SR
Opis Vrši se konjukcija invertovane konstante 04h (0FFFBh) i odredišnog operanda. Rezultat se smešta u odredišni operand. Ova instrukcija je veličine reči.
Status bitovi N: ResetovanZ: Bez uticaja C: Bez uticajaV: Bez uticaja
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer Briše se bit negativnog predznaka u statusnom registru. Ovime se izbegava obrada potprograma za rad sa negativnim brojevima.
CLRNCALL SUBR............
SUBR JN SUBRET ; Ako je ulaz negativan: ne radi ništa i vrati se nazad..................
SUBRET RET
S t r a n a | 22
SET INSTRUKCIJA MSP430
* CLRZ Briše bit nule (Z) u statusnom registru
Sintaksa CLRZ
Operacija 0 -> Zili(.NOT.src .AND. dst -> dst)
Emulacija BIC #2, SR
Opis Vrši se konjukcija invertovane konstante 02h (0FFFDh) i odredišnog operanda. Rezultat se smešta u odredišni operand. Ova instrukcija je veličine reči.
Status bitovi N: Bez uticaja Z: Resetovan C: Bez uticajaV: Bez uticaja
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer Briše se bit nule (Z) u statusnom registru.
CLRZ
S t r a n a | 23
SET INSTRUKCIJA MSP430
CMP[.W] Poredi izvorišni i odredišni operandCMP.B Poredi izvorišni i odredišni operand
Sintaksa CMP src, dst ili CMP.W src, dstCMP.B src, dst
Operacija dst + .NOT.src + 1ili(dst - src)
Opis
Status bitovi N: Setovan ako je rezultat negativan, resetovan ako je pozitivan (src >= dst)Z: Setovan ako je rezultat nula, u drugom slučaju resetovan (src = dst)C: Setovan ako postoji bit prenosa kao rezultat operacije, u drugom slučaju
resetovanV: Setovan ako je došlo do prekoračenja, u drugom slučaju reset
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer I Porede se registri R5 i R6. Ako su jednaki, program nastavlja sa izvršenjem na labeli EQUAL
CMP R5, R6 ; R5 = R6 ?JEQ EQUAL ; Da,skok
Primer II Porede se dva bloka RAM-a. Ukoliko nisu jednaki, program se grana na labelu ERROR
MOV #NUM,R5 ; Broj reči koje treba poreditiL$1 CMP &BLOCK1,&BLOCK2 ; Jesu li jednake?
JNZ ERROR ; Ne, skoči na ERRORDEC R5 ; Jesu li sve reči upoređene?JNZ L$1 ; Ne, poredi ponovo
Primer III Porede se bajtovi u RAM-u na adresama MIPS i ELFAK. Ukoliko su jednaki, program nastavlja sa izvršavanjem na labeli EQUAL
CMP.B MIPS, ELFAK ; MEM(MIPS) = MEM(ELFAK) ?JEQ EQUAL ; Da, skok
S t r a n a | 24
SET INSTRUKCIJA MSP430
* DADC[.W] Decimalno sabiranje sa bitom prenosa* DADC.B Decimalno sabiranje sa bitom prenosa
Sintaksa DADC dst ili DADC.W src,dstDADC.B dst
Operacija dst + C -> dst (decimalno)
Emulacija DADD #0,dstDADD.B #0,dst
Opis Bit prenosa se decimalno dodaje na odredišni operand
Status bitovi N: Setovan ako je MSB = 1Z: Setovan ako je dst = 0, u drugom slučaju resetovan C: Setovan ako se odredišni operand uvećava sa 9999 na 0000, u drugom slučaju
resetovanSetovan ako se odredišni operand uvećava sa 99 na 00, u drugom slučaju resetovan
V: Nedefinisano
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer I Četvorocifreni decimalni broj smešten u R5 se dodaje na osmocifreni decimalni broj na koji ukazuje R8
CLRC ; Reset bita prenosa;
DADD R5,0(R8) ; LSD + CDADC 2(R8) ; Dodaj bit prenosa na MSD
Primer II Dvocifreni decimalni broj koji se nalazi u R5 se sabira sa četvorocifrenim decimalnim brojem na koji ukazuje R8
CLRC ; Reset bita prenosaDADD.B R5,0(R8) ; LSD + CDADC 1(R8) ; Dodaj bit prenosa na MSD
S t r a n a | 25
SET INSTRUKCIJA MSP430
DADD[.W] Sabira decimalno izvorišni operand sa odredišnim, sa prenosomDADD.B Sabira decimalno izvorišni operand sa odredišnim, sa prenosom
Sintaksa DADD src, dst ili DADD.W src,dstDADD.B src,dst
Operacija src + dst + C -> dst (decimalno)
Opis Izvorišni i odredišni operand se tretiraju kao četvorocifreni binarno kodirani pozitivni decimalni brojevi (BCD). Izvorišni operand se zajedno sa bitom prenosa sabira sa odredišnim operandom. Vrednost izvorišnog operanda se ne menja, dok je prethodno stanje odredišnog operanda izbrisano. Rezultat nije definisan za ne-BCD brojeve.
Status bitovi N: Setovan ako je MSB = 1, resetovan u drugom slučajuZ: Setovan ako je rezultat nula, u drugom slučaju resetovan C: Setovan ako je rezultat veći od 9999
Setovan ako je rezultat veći od 99V: Nedefinisano
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer I Osmocifreni BCD brojevi koji su smešteni u R5 i R6 se decimalno sabiraju sa osmocifrenim brojevima smeštenim u R3 i R4 (u R6 i R4 se nalaze MSD-i).
CLRC ; Briše bit prenosaDADD R5,R3 ; sabira LSD-eDADD R6,R4 ; sabira MSD-e sa prenosomJC OVERFLOW ; Ukoliko dođe do bita prenosa, program ide na
; labelu OVERFLOW
Primer II Dvocifreni decimalni brojač u RAM-u, CNT se uvećava za jedan.
CLRC ; Briše bit prenosaDADD.B #1,CNT ; Inkrementiranje decimalnog brojačailiSETCDADD.B #0,CNT ; =DADC.B CNT
S t r a n a | 26
SET INSTRUKCIJA MSP430
* DEC[.W] Dekrementiranje odredišnog operanda* DEC.B Dekrementiranje odredišnog operanda
Sintaksa DEC dst ili DEC.W dstDEC.B dst
Operacija dst – 1 -> dst
Emulacija SUB #1, dst
Emulacija SUB.B #1, dst
Opis Umanjuje vrednost odredišnog bita za jedan. Prethodno stanje odredišnog operanda je izgubljeno.
Status bitovi N: Setovan ako je rezultat negativan, resetovan ako je pozitivanZ: Setovan ako je dst sadržao 1, u drugom slučaju resetovan C: Resetovan ako je dst sadržao 0, setovan u drugom slučajuV: Setovan ako je došlo do prekoračenja, u drugom slučaju reset Setovan ako je inicijalna vrednost odredišnog operanda bila 08000h Setovan ako je inicijalna vrednost odredišnog operanda bila 080h
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer Dekrementiranje registra R10 za 1
DEC R10 ; Dekrementiranje R10
; Pomeranje memorijskog bloka veličine 255 bajtova sa memorijske lokacije koja počinje na labeli MIPS, na memorijsku lokaciju koja počinje na labeli ELFAK; Memorijske lokacije ne bi smele da se preklapaju;MOV #EDE, R6MOV #255, R10
L$1 MOV.B @R6+, ELFAK-MIPS-1(R6)DEC R10JNZ L$1
S t r a n a | 27
SET INSTRUKCIJA MSP430
* DECD[.W] Dvostruko dekrementiranje odredišnog operanda* DECD.B Dvostruko dekrementiranje odredišnog operanda
Sintaksa DECD dst ili DECD.W dstDECD.B dst
Operacija dst - 2 -> dst
Emulacija SUB #2,dst
Emulacija SUB.B #2,dst
Opis Umanjuje vrednost odredišnog bita za dva. Prethodno stanje odredišnog operanda je izgubljeno.
Status bitovi N: Setovan ako je rezultat negativan, resetovan ako je pozitivanZ: Setovan ako je dst sadržao 2, u drugom slučaju resetovan C: Resetovan ako je dst sadržao 0 ili 1, setovan u drugom slučajuV: Setovan ako je došlo do prekoračenja, u drugom slučaju reset Setovan ako je inicijalna vrednost odredišnog operanda bila 08000h ili 08001h, u drugom slučaju resetovan Setovan ako je inicijalna vrednost odredišnog operanda bila 080h ili 081h, u drugom slučaju resetovan
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer I Dekrementiranje registra R10 za 2
DECD R10 ; Dekrementiranje R10 za dva
; Pomeranje memorijskog bloka veličine 255 bajtova sa memorijske lokacije koja počinje na labeli MIPS, na memorijsku lokaciju koja počinje na labeli ELFAK; Memorijske lokacije ne bi smele da se preklapaju;MOV #EDE, R6MOV #510, R10L$1 MOV @R6+,ELFAK-MIPS-2(R6)DECD R10JNZ L$1
S t r a n a | 28
SET INSTRUKCIJA MSP430
* DINT Onemogućava (opšte) prekide
Sintaksa DINT
Operacija 0 -> GIEili(0FFF7h .AND. SR -> / .NOT.src.AND.dst -> dst)
Emulacija BIC #8, SR
Opis Blokirani su svi prekidi. Vrši se operacija konjukcije nad invertovanom konstantom #08h i status registrom. Rezultat se smešta u statusni registar.
Status bitovi Bez uticaja na status bitove
Režimi rada GIE je resetovan. Nema uticaja na OscOff i CPUOff.
Primer I Bit opšte dozvole prekida (GIE) iz statusnog registra se resetuje kako bi bilo moguće kopiranje 32-bitnog brojača bez prekida.
DINT ; Svi prekidi koji koriste GIE bit su blokirani
MOV COUNTHI, R5 ; Kopira brojačMOV COUNTLO, R6EINT ; Svi prekidi koji koriste GIE bit su ponovo
; dozvoljeni
Napomena: Blokiranje prekida
Instrukcija koja sledi nakon instrukcije DINT se izvršava u vreme dok su prekidi još uvek dozvoljeni u toku izvršavanja instrukcije DINT. Ako neki deo koda treba zaštiti od prekidanja, valjalo bi da se krene sa izvršavanjem tog koda minimum jednu instrukciju nakon što je završeno sa izvršavanjem instrukcije DINT.
S t r a n a | 29
SET INSTRUKCIJA MSP430
* EINT Dozvola (opšta) prekida
Sintaksa EINT
Operacija 1 -> GIE
ili
(0008h .OR. SR -> SR / .NOT. src .OR. dst -> dst)
Emulacija BIS #8,SR
Opis Dozvola za sve prekide. Vrši se disjunkcija nad konstantom #08h i statusnim registrom SR. Rezultat se smešta u registar SR.
Status bitovi Bez uticaja na status bitove
Režimi rada GIE je setovan. Nema uticaja na OscOff i CPUOff.
Primer I Setuje se bit za dozvolu prekida (GIE).
; Obrada prekida porta P0.2 do P0.7; Nivo prekida je najniži u sistemu; P0IN je adresa registra iz kojeg se čitaju bitovi svih portova; P0IFG je adresa registra gde se čuvaju informacije o svim događajima; vezanim za prekide
PUSH.B &P0INBIC.B @SP,&P0IFG ; Resetuje samo prihvatljive indikatore stanjaEINT ; Dozvola interapta
BIT #Mask,@SPJEQ MaskOK ; Indikatori stanja postavljeni po masci: Skok......
MaskOK BIC #Mask,@SP......INCD SP ; Čišćenje:Suprotno PUSH instrukciji
; na startu obrade prekida.
S t r a n a | 30
SET INSTRUKCIJA MSP430
* INC[.W] Inkrementiranje odredišnog operanda* INC.B Inkrementiranje odredišnog operanda
Sintaksa INC dst ili INC.W dstINC.B dst
Operacija dst + 1 -> dst
Emulacija ADD #1, dst
Opis Odredišni operand je uvećan za jedan.Prethodna vrednost operanda je izbrisana.
Status bitovi N: Setovan ako je rezultat negativan, resetovan ako je pozitivanZ: Setovan ako je dst sadržao 0FFFFh, u drugom slučaju resetovan Setovan ako je dst sadržao 0FFh, u drugom slučaju resetovanC: Setovan ako je dst sadržao 0FFFFh, u drugom slučaju resetovan Setovan ako je dst sadržao 0FFh, u drugom slučaju resetovanV: Setovan ako je dst sadržao 07FFFh, u drugom slučaju resetovan Setovan ako je dst sadržao 07Fh, u drugom slučaju resetovan
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer I Podatak na vrhu softverskog steka (ne sistemskog) za podatke veličine bajta je uklonjen.
SSP .EQU R4;
INC SSP ; Uklanjanje TOSS (top of SW stack) ; inkrementiranjem; Ne koristiti INC.B jer je SSP registar veličine ; word
Primer II Status bajt procesa STATUS je inkrementiran. Kada bude imao vrednost jedanaest, program se grana na labelu OVFL.
INC.B STATUSCMP.B #11, STATUSJEQ OVFL
S t r a n a | 31
SET INSTRUKCIJA MSP430
* INCD[.W] Dvostruko inkrementiranje odredišnog operanda* INCD.B Dvostruko inkrementiranje odredišnog operanda
Sintaksa INCD dst ili INCD.W dstINCD.B dst
Operacija dst + 2 -> dst
Emulacija ADD #2,dst
Emulacija ADD.B #2,dst
Opis Vrši se dvostruko inkrementiranje odredišnog operanda. Prethodni sadržaj je izbrisan.
Status bitovi N: Setovan ako je rezultat negativan, resetovan ako je pozitivanZ: Setovan ako je dst sadržao 0FFFEh, u drugom slučaju resetovan Setovan ako je dst sadržao 0FEh, u drugom slučaju resetovanC: Setovan ako je dst sadržao 0FFFEh ili 0FFFFh, u drugom slučaju resetovan Setovan ako je dst sadržao 0FEh ili 0FFh, u drugom slučaju resetovanV: Setovan ako je dst sadržao 07FFEh ili 07FFFh, u drugom slučaju resetovan Setovan ako je dst sadržao 07Eh ili 07Fh, u drugom slučaju resetovan
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer I Objekat na vrhu steka je uklonjen bez upotrebe registra.
.......PUSH R5 ; R5 je rezultat nekog izračunavanja koji je smešten
; u sistemskom stekuINCD SP ; Uklanjanje TOS-a dvostrukom inkrementacijom
; Ne koristiti INCD.B jer je SP registar veličine ; word
RET
Primer II Bajt na vrhu steka je uvećan za dva
INCD.B 0(SP)
S t r a n a | 32
SET INSTRUKCIJA MSP430
* INV[.W] Invertuje odredišni operand* INV.B Invertuje odredišni operand
Sintaksa INV dstINV.B dst
Operacija .NOT.dst -> dst
Emulacija XOR #0FFFFh, dst
Emulacija XOR.B #0FFh, dst
Opis Odredišni operand je invertovan. Prethodna vrednost je izbrisana.
Status bitovi N: Setovan ako je rezultat negativan, resetovan ako je pozitivanZ: Setovan ako je dst sadržao 0FFFFh, u drugom slučaju resetovan Setovan ako je dst sadržao 0FFh, u drugom slučaju resetovanC: Setovan ako je rezultat različit od nule, u drugom slučaju resetovan
(=.NOT.Zero)V: Setovan ako je odredišni operan bio negativan, u drugom slučaju reset
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer I Vrednost registra R5 je pretvorena u negativnu (u komplementu dvojke).
MOV #00Aeh, R5 ; R5 = 000AEhINV R5 ; Invertovanje R5, R5 = 0FF51hINC R5 ; R5 je sada negativan, R5 = 0FF52h
Primer II Vrednost bajta MIPS je pretvorena u negativnu.
MOV.B #0AEh, MIPS; MEM(MIPS) = 0AEhINV.B MIPS ; Invertovanje MIPS, MEM(MIPS) = 051hINC.B MIPS ; MEM(MIPS) je sada negativan, MEM(MIPS) = 052h
S t r a n a | 33
SET INSTRUKCIJA MSP430
JC Skok ako je bit prenosa setovanJHS Skok ako je veći ili jednak
Sintaksa JC labelaJHS labela
Operacija Ako je C = 1: PC + 2*pomeraj -> PCAko je C = 0: izvrši sledeću instrukciju
Opis Testira se stanje bita prenosa u statusnom registru. Ako je bit prenosa setovan, 10-bitni pomeraj sa predznakom koji je sadržan u LSB-ovima instrukcije se dodaje na programski brojač. Ukoliko bit prenosa nije setovan, izvršava se sledeća instrukcija koja sledi. JC se koristi i za poređenje neoznačenih brojeva (0 do 65536).
Status bitovi Nema uticaja na status bitove
Primer I Signal sa ulaza pina P0IN.1 se koristi za upravljanje toka programa.
BIT #10h, &P0IN ; Stanje na ulazu -> bit prenosaJC PROGA ; Ako je bit prenosa=1 izvrši program A...... ; Bit prenosa = 0, nastavi sa programom
; odavde
Primer II Vrednost R5 se poredi sa brojem 15. Ukoliko je vrednost u registru ista ili veća, program se grana na labelu MIPS.
CMP #15, R5JHS MIPS ; Skok ako je R5 >= 15...... ; Nastaviti odavde ako je R5 < 15
S t r a n a | 34
SET INSTRUKCIJA MSP430
JEQ , JZ Skok ako je jednako, Skok ako je nula
Sintaksa JEQ labela, JZ labela
Operacija Ako je Z=1: PC + 2*pomeraj -> PCAko je Z=0: izvrši sledeću instrukciju
Opis Testira se stanje bita nule (Z) u statusnom registru. Ako je bit nule setovan, 10-bitni pomeraj sa predznakom koji je sadržan u LSB-ovima instrukcije se dodaje na programski brojač. Ukoliko bit nule nije setovan, izvršava se sledeća instrukcija koja sledi.
Status bitovi Nema uticaja na status bitove
Primer I Skok na adresu MIPS ukoliko je R7 nula.
TST R7 ; Test R7JZ TONI ; Ako je nula: skok
Primer II Skok na adresu ELFAK ako je vrednost R6 jednaka vrednostima iz Table.
CMP R6, Table(R5) ; Poredi vrednost R6 sa vrednostima; MEM(Table adresa +vrednost u R5)
JEQ LEO ; Skok ako su vrednosti iste...... ; Vrednosti nisu iste, nastavi odavde
Primer Grananje na MIPS ako je vrednost R5 nula.
TST R5JZ MIPS......
S t r a n a | 35
SET INSTRUKCIJA MSP430
JGE Skok ako je veće ili jednako
Sintaksa JGE labela
Operacija Ako je (N .XOR. V) = 0 skok na labelu: PC + 2*pomeraj -> PCAko je (N .XOR. V) = 1 izvrši sledeću instrukciju
Opis Testira se stanje bita negativne vrednosti (N) i bita prekoračenja (V) u statusnom registru. Ako su oba bita setovana ili resetovana, 10-bitni pomeraj sa predznakom koji je sadržan u LSB-ovima instrukcije se dodaje na programski brojač. Ukoliko je samo jedan bit setovan, izvršava se sledeća instrukcija koja sledi. Ova instrukcija omogućava poređenje označenih celih brojeva.
Status bitovi Nema uticaja na status bitove
Primer I Kada je vrednost registra R6 veća ili jednaka sa vrednošću na koju ukazuje R7, program se grana na labelu MIPS.
CMP @R7, R6 ; R6 (R7)?, poređenje označenih brojevaJGE MIPS ; Da, R6 (R7)...... ; Ne, nastavi odavde
S t r a n a | 36
SET INSTRUKCIJA MSP430
JL Skok ako je manje
Sintaksa JL labela
Operacija Ako je (N .XOR. V) = 1 skok na labelu: PC + 2*pomeraj -> PCAko je (N .XOR. V) = 0 izvrši sledeću instrukciju
Opis Testira se stanje bita negativne vrednosti (N) i bita prekoračenja (V) u statusnom registru. Ukoliko je samo jedan bit setovan, 10-bitni pomeraj sa predznakom koji je sadržan u LSB-ovima instrukcije se dodaje na programski brojač. Ako su oba bita setovana ili resetovana, izvršava se sledeća instrukcija koja sledi. Ova instrukcija omogućava poređenje označenih celih brojeva.
Status bitovi Nema uticaja na status bitove
Primer I Kada je vrednost registra R6 manja od vrednosti na koju ukazuje R7, program se grana na labelu MIPS.
CMP @R7, R6 ; R6 (R7)?, poređenje označenih brojevaJL MIPS ; Da, R6 (R7)...... ; Ne, nastavi odavde
S t r a n a | 37
SET INSTRUKCIJA MSP430
JMP Bezuslovni skok
Sintaksa JMP labela
Operacija PC + 2*pomeraj -> PC
Opis 10-bitni pomeraj sa predznakom koji je sadržan u LSB-ovima instrukcije se dodaje na programski brojač.
Status bitovi Nema uticaja na status bitove
Savet Ova instrukcija veličine jedne reči menja instrukciju BRANCH u opsegu -511 do +512 reči, relativno u odnosu na programski brojač.
S t r a n a | 38
SET INSTRUKCIJA MSP430
JN Skok ukoliko je negativan
Sintaksa JN labela
Operacija Ako je N=1: PC + 2*pomeraj -> PCAko je N=0: izvrši sledeću instrukciju
Opis Testira se stanje bita negativne vrednosti (N) u statusnom registru. Ako je bit negativne vrednosti setovan, 10-bitni pomeraj sa predznakom koji je sadržan u LSB-ovima instrukcije se dodaje na programski brojač. Ukoliko bit nije setovan, izvršava se sledeća instrukcija koja sledi.
Status bitovi Nema uticaja na status bitove
Primer I Vrednost iz registra R5 se oduzima od COUNT. Ukoliko je rezultat negativan, COUNT se briše i program nastavlja sa izvršavanjem u drugom pravcu.
SUB R5, COUNT ; COUNT - R5 -> COUNTJN L$1 ; Ako je negativan, nastavi sa COUNT=0 na;PC=L$1...... ; Continue with COUNT 0
......
......
L$1CLR COUNT..................
S t r a n a | 39
SET INSTRUKCIJA MSP430
JNC Skok ako je bit prenosa resetovan JLO Skok ako je manje
Sintaksa JNC labelaJLO labela
Operacija Ako je C = 0: PC + 2*pomeraj -> PCAko je C = 1: izvrši sledeću instrukciju
Opis Testira se stanje bita prenosa u statusnom registru. Ako je bit prenosa resetovan, 10-bitni pomeraj sa predznakom koji je sadržan u LSB-ovima instrukcije se dodaje na programski brojač. Ukoliko je bit prenosa setovan, izvršava se sledeća instrukcija koja sledi. JNC se koristi i za poređenje neoznačenih brojeva (0 do 65536).
Status bitovi Nema uticaja na status bitove
Primer I Vrši se sabiranje vrednosti iz R6 i BUFFER. Ukoliko dođe do prekoračenja, koristi se potprogram za obradu grešaka na adresi ERROR.
ADD R6, BUFFER ; BUFFER + R6 -> BUFFERJNC CONT ; Nema bita prenosa, skok na CONT
ERROR ...... ; Start potprograma za obradu grešaka..................
CONT ...... ; Nastavak normalnog toka programa............
Primer II Grananje na STL2 ako bajt STATUS ima vrednost 1 ili 0.
CMP.B #2, STATUSJLO STL2 ; STATUS < 2...... ; STATUS 2, continue here
S t r a n a | 40
SET INSTRUKCIJA MSP430
JNE, JNZ Skok ako nije jednako, Skok ako nije nula
Sintaksa JNE labela, JNZ labela
Operacija Ako je Z=0: PC + 2*pomeraj -> PCAko je Z=1: izvrši sledeću instrukciju
Opis Testira se stanje bita nule (Z) u statusnom registru. Ako je bit nule resetovan, 10-bitni pomeraj sa predznakom koji je sadržan u LSB-ovima instrukcije se dodaje na programski brojač. Ukoliko je bit nule setovan, izvršava se sledeća instrukcija koja sledi.
Status bitovi Nema uticaja na status bitove
Primer I Skok na adresu MIPS ukoliko R7 i R8 imaju različite vrednosti.
CMP R7,R8 ; Poredi R7 i R8JNE TONI ; ako su različiti: skok...... ; ako su jednaki, nastavi odavde
S t r a n a | 41
SET INSTRUKCIJA MSP430
MOV[.W] Premeštanje vrednosti izvorišnog operanda u odredišniMOV.B Premeštanje vrednosti izvorišnog operanda u odredišni
Sintaksa MOV src, dst ili MOV.W src, dstMOV.B src, dst
Operacija src -> dst
Opis Vrednost izvorišnog operanda se premešta u odredišni. Operacija ne menja vrednost izvorišnog operanda, dok je prethodno stanje odredišnog operanda izbrisano.
Status bitovi Nema uticaja na status bitove
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer I Podaci iz tabele MIPS (podeci veličine reči) se kopiraju u tabelu ELFAK. Veličina tabela bi trebalo da bude 020h lokacija.
MOV #MIPS, R10 ; Priprema pokazivačaMOV #020h, R9 ; Priprema brojača
Loop MOV @R10+, TOM-EDE-2(R10) ; Koristi se pokazivač u R10 za obe ; tabele
DEC R9 ; Dekrementiranje brojačaJNZ Loop ; Brojač < 0, nastavi sa kopiranjem...... ; Kopiranje završeno
Primer II Podaci iz tabele MIPS (podeci veličine bajta) se kopiraju u tabelu ELFAK. Veličina tabela bi trebalo da bude 020h lokacija.
MOV #MIPS, R10 ; Priprema pokazivačaMOV #020h, R9 ; Priprema brojača
Loop MOV.B @R10+, TOM-EDE-1(R10) ; Koristi se pokazivač u R10 za obe ; tabeleDEC R9 ; Dekrementiranje brojačaJNZ Loop ; Brojač < 0, nastavi sa
; kopiranjem...... ; Kopiranje završeno
S t r a n a | 42
SET INSTRUKCIJA MSP430
NOP Nema operacije
Sintaksa NOP
Operacija Nema
Emulacija MOV #0, #0
Opis Ne izvode se nikakve operacije. Ova instrukcija se može koristiti za vreme testiranja softvera ili za definisanje potrebnih pauza.
Status bitovi Nema uticaja na status bitove
Instrukcija NOP se najčešće koristi za sledeće dve stvari: zadržavanje jedne, dve ili tri memorijske reči podešavanje tajminga izvršavanja softvera
Napomena: Mogu se koristiti i druge insrukcije za emulaciju NOP-a
I druge instrukcije se mogu koristiti za emuliranje NOP-a, koristeći rezličite brojeve ciklusa i reči:
MOV 0(R4),0(R4) ; 6 ciklusa, 3 rečiMOV @R4,0(R4) ; 5 ciklusa, 2 rečiBIC #0,EDE(R4) ; 4 ciklusa, 2 rečiJMP $+2 ; 2 ciklusa, 1 rečBIC #0,R5 ; 1 ciklus, 1 reč.
S t r a n a | 43
SET INSTRUKCIJA MSP430
* POP[.W] Premeštanje reči iz steka u odredišni operand* POP.B Premeštanje bajta iz steka u odredišni operand
Sintaksa POP dstPOP.B dst
Operacija @SP -> dstSP + 2 -> SP
Emulacija MOV @SP+, dst ili MOV.W @SP+, dst
Emulacija MOV.B @SP+, dst
Opis Vrednost lokacije u steku na koju ukazuje pokazivač steka (TOS) se premešta u odredišni operand. Nakon toga, pokazivač steka se inkrementira dva puta.
Status bitovi Nema uticaja na status bitove
Primer I Vrednosti R7 i statusnog registra su vraćene iz steka.POP R7 ; Vraća vrednost R7POP SR ; Vraća vrednost statusnog registra
Primer II Vrednost reči MIPS iz RAM-a je vraćena iz steka.POP.B MIPS ; LSB iz steka je vraćen u MIPS
Primer III Vrednosti R7 je vraćena iz steka.POP.B R7 ; LSB iz steka je vraćen u MIPS,
; MSB registra R7 is 00h
Primer IV Vrednost na koju ukazuje R7 i vrednost statusnog registra vraćene su iz steka.POP.B 0(R7) ; LSB iz steka je vraćen u bajt na koji ukazuje R7
: Primer: R7 = 203h; Mem(R7) = LSB steka: Primer: R7 = 20Ah; Mem(R7) = LSB steka
POP SR
Napomena: Pokazivač na sistemski stek
Pokazivač na sistemski stek se uvek inkrementira za dva. Ovo je obavezujuće jer se ovaj pokazivač ne koristi samo za POP instrukciju, već i za instrukciju RETI.
S t r a n a | 44
SET INSTRUKCIJA MSP430
PUSH[.W] Premeštanje reči iz izvorišnog operanda u stekPUSH.B Premeštanje bajta iz izvorišnog operanda u stek
Sintaksa PUSH src ili PUSH.W srcPUSH.B src
Operacija SP -2 -> SPsrc -> @SP
Opis Pokazivač steka se dekrementira za dva, nakon čega se vrednost izvorišnog operanda premešta u RAM adresiran od strane pokazivača steka (TOS).
Status bitovi Nema uticaja na status bitove
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer I Vrednosti statusnog registra i registra R8 se čuvaju na steku.
PUSH SR ; čuvanje vrednosti statusnog registraPUSH R8 ; čuvanje vrednosti R8
Primer II Vrednosti iz TCDAT se čuvaju na steku.
PUSH.B &TCDAT ; čuvanje vrednosti iz 8-bitnog modula
Napomena: Pokazivač na sistemski stek
Pokazivač na sistemski stek se uvek dekrementira za dva. Ovo je obavezujuće jer seovaj pokazivač ne koristi samo za PUSH instrukciju, već i za obradu prekida.
S t r a n a | 45
SET INSTRUKCIJA MSP430
* RET Povratak iz potprograma
Sintaksa RET
Operacija @SP -> PCSP + 2 -> SP
Emulacija MOV @SP+, PC
Opis Povratna adresa prebačena u stek pomoću CALL instrukcije se upisuje u programski brojač. Program nastavlja sa izvršavanjem na adresi instrukcije koja sledi nakon instrukcije poziva potprograma.
Status bitovi Nema uticaja na status bitove
S t r a n a | 46
SET INSTRUKCIJA MSP430
RETI Povratak sa obrade prekida
Sintaksa RETI
Operacija TOS -> SRSP + 2 -> SPTOS -> PCSP + 2 -> SP
Opis 1. U statusni registar se upisuje vrednost koja se nalazi na početku potprograma za obradu prekida. Ovo se postiže time što se trenutna vrednost SR-a zameni vrednošću TOS-a. Pokazivač steka se inkrementira za dva.2. U programski brojač se upisuje vrednost koja se nalazi na početku potprograma za obradu prekida. Ovo je korak koji sledi nakon prekida u toku izvršavanja programa. Ovo se postiže time što se trenutna vrednost PC-a zameni vrednošću TOS-a. Pokazivač steka se inkrementira za dva.
Status bitovi N: Obnovljeno informacijom iz sistemskog stekaZ: Obnovljeno informacijom iz sistemskog stekaC: Obnovljeno informacijom iz sistemskog steka V: Obnovljeno informacijom iz sistemskog steka
Režimi rada OscOff, CPUOff i GIE su obnovljeni informacijom iz sistemskog steka
Primer Prekid se javio tokom izvršenja glavnog programa
S t r a n a | 47
SET INSTRUKCIJA MSP430
* RLA[.W] Aritmetičko rotiranje ulevo* RLA.B Aritmetičko rotiranje ulevo
Sintaksa RLA dst ili RLA.W dstRLA.B dst
Operacija C <- MSB <- MSB-1 .... LSB+1 <- LSB <- 0
Emulacija ADD dst, dstADD.B dst, dst
Opis Odredišni operand se pomera (šiftuje)za jednu poziciju ulevo. MSB se pomera u bit prenosa (C), a LSB postaje nula. Instrukcija RLA se ponaša kao množenje sa predznakom brojem dva.Do prekoračenja dolazi ukoliko je if dst 04000h i dst < 0C000h pre izvođenje operacije, odnosno dolazi do promene predznaka rezultata.
Status bitovi N: Setovan ako je rezultat negativan, resetovan ako je pozitivanZ: Setovan ako je rezultat nula, u drugom slučaju resetovan C: Učitava se iz MSBV: Setovan ako je došlo do prekoračenja, odnosno ukoliko je početna vrednost operanda bila: 04000h dst < 0C000h, u drugom slučaju reset Setovan ako je došlo do prekoračenja, odnosno ukoliko je početna vrednost operanda bila: 040h dst < 0C0h, u drugom slučaju reset
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer I R7 se množi sa 4.RLA R7 ; Pomeranje ulevo R7 (x 2) - emulirano sa: ADD R7,R7RLA R7 ; Pomeranje ulevo R7 (x 4) - emulirano sa: ADD R7,R7
Primer II LSB R7 je pomnožen sa 4.RLA.B R7 ; Pomeranje ulevo LSB R7 (x 2) - emulirano sa: ADD.BR7,R7 RLA.B R7 ; Pomeranje ulevo LSB R7 (x 4) - emulirano sa: ADD.BR7,R7
Napomena: RLA zamenaAsembler ne prepoznaje sledeće instrukcije:
RLA @R5+ nor RLA.B @R5+.One moraju biti zamenjene sa:
ADD @R5+,-2(R5) or ADD.B @R5+,-1(R5).
S t r a n a | 48
SET INSTRUKCIJA MSP430
* RLC[.W] Rotiranje ulevo sa prenosom* RLC.B Rotiranje ulevo sa prenosom
Sintaksa RLC dst ili RLC.W dstRLC.B dst
Operacija C <- MSB <- MSB-1 .... LSB+1 <- LSB <- C
Emulacija ADDC dst, dst
Opis Odredišni operand je pomeren (shifted) jednu poziciju ulevo. Bit prenosa (C) se upisuje u LSB, dok se MSB upisuje u bit prenosa (C).
Status bitovi N: Setovan ako je rezultat negativan, resetovan ako je pozitivanZ: Setovan ako je rezultat nula, u drugom slučaju resetovan C: Učitava se iz MSBV: Setovan ako je došlo do prekoračenja, odnosno ukoliko je početna vrednost
operanda bila: 03FFFh < dst < 0C000h, u drugom slučaju reset Setovan ako je došlo do prekoračenja, odnosno ukoliko je početna vrednost
operanda bila: 03Fh < dst < 0C0h, u drugom slučaju reset
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer I R5 se pomera jednu poziciju ulevo.RLC R5 ; (R5 x 2) + C -> R5
Primer II Informacija sa pina P0IN.1 se pomera u LCB registra R5.BIT.B #2, &P0IN ; Informacija -> bit prenosaRLC R5 ; bit prenosa=P0in.1 -> LSB registra R5
Primer III Sadržaj memorije MEM(MIPS) je pomeren ulevo jednu poziciju.RLC.B LEO ; Mem(MIPS) x 2 + C -> Mem(MIPS)
Napomena: RLC i RLC.B zamenaAsembler ne prepoznaje sledeću instrukciju:
RLC @R5+.Ona mora biti zamenjena sa:
ADD @R5+,-2(R5).
S t r a n a | 49
SET INSTRUKCIJA MSP430
RRA[.W] Aritmetičko rotiranje udesnoRRA.B Aritmetičko rotiranje udesno
Sintaksa RRA dst ili RRA.W dstRRA.B dst
Operacija MSB -> MSB, MSB -> MSB-1, ...LSB+1 -> LSB, LSB -> C
Opis Odredišni operand se rotira jednu poziciju udesno. MSB se rotira u MSB, onda se MSB rotira u MSB-1, a LSB+1 se rotira u LSB.
Status bitovi N: Setovan ako je rezultat negativan, resetovan ako je pozitivanZ: Setovan ako je rezultat nula, u drugom slučaju resetovan C: Učitava se iz LSBV: Resetovan
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer I R5 se rotira udesno jednu poziciju. MSB zadržava staru vrednost. Isti slučaj kao kod aritmetičkog deljenja sa 2.
RRA R5 ; R5/2 -> R5
; Vrednost R5 se množi sa 0.75 (0.5 + 0.25);
PUSH R5 ; čuva se R5RRA R5 ; R5 x 0.5 -> R5ADD @SP+, R5 ; R5 x 0.5 + R5 = 1.5 x R5 -> R5RRA R5 ; (1.5 x R5) x 0.5 = 0.75 x R5 -> R5............
; ili;
RRA R5 ; R5 x 0.5 -> R5PUSH R5 ; R5 x 0.5 -> TOSRRA @SP ; TOS x 0.5 = 0.5 x R5 x 0.5 = 0.25 x R5 -> TOSADD @SP+, R5 ; R5 x 0.5 + R5 x 0.25 = 0.75 x R5 -> R5
Primer II LSB registra R5 se rotira udesno jednu poziciju. MSB zadržava staru vrednost. Isti slučaj kao kod aritmetičkog deljenja sa 2.
S t r a n a | 50
SET INSTRUKCIJA MSP430
RRA.B R5 ; R5/2 -> R5: Operacija se izvodi sam na LSB; MSB registra R5 je resetovan
; Vrednost LSB-a registra R5 se množi sa 0.75 (0.5 + 0.25);
PUSH.B R5 ; čuva se R5RRA.B R5 ; R5 x 0.5 -> R5ADD.B @SP+, R5 ; R5 x 0.5 + R5 = 1.5 x R5 -> R5RRA.B R5 ; (1.5 x R5) x 0.5 = 0.75 x R5 -> R5......
; ili;
RRA.B R5 ; R5 x 0.5 -> R5PUSH.B R5 ; R5 x 0.5 -> TOSRRA.B @SP ;TOS x 0.5 = 0.5 x R5 x 0.5 = 0.25x R5 -> TOSADD.B @SP+, R5 ; R5 x 0.5 + R5 x 0.25 = 0.75 x R5 -> R5......
S t r a n a | 51
SET INSTRUKCIJA MSP430
RRC[.W] Rotiranje udesno sa prenosomRRC.B Rotiranje udesno sa prenosom
Sintaksa RRC dst ili RRC.W dstRRC dst
Operacija C -> MSB -> MSB-1 .... LSB+1 -> LSB -> C
Opis Odredišni operand je pomeren (shifted) jednu poziciju udesno. Bit prenosa (C) se upisuje u MSB, dok se LSB upisuje u bit prenosa (C).
Status bitovi N: Setovan ako je rezultat negativan, resetovan ako je pozitivanZ: Setovan ako je rezultat nula, u drugom slučaju resetovan C: Učitava se iz LSBV: Resetovan
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer I R5 se rotira udesno jednu poziciju. U MSB se upisuje 1.
SETC ; PREPARE CARRY FOR MSBRRC R5 ; R5/2 + 8000h -> R5
Primer II R5 se rotira udesno jednu poziciju. U MSB se upisuje 1.
SETC ; PREPARE CARRY FOR MSBRRC.B R5 ; R5/2 + 80h -> R5; Low byte of R5 is used
S t r a n a | 52
SET INSTRUKCIJA MSP430
* SBC[.W] Oduzimanje sa bitom prenosa* SBC.B Oduzimanje sa bitom prenosa
Sintaksa SBC dst or SBC.W dstSBC.B dst
Operacija dst + 0FFFFh + C -> dstdst + 0FFh + C -> dst
Emulacija SUBC #0,dstSUBC.B #0,dst
Opis The carry Cis added to the destination operand minus one. Theprevious contents of the destination are lost.
Status bitovi N: Setovan ako je rezultat negativan, resetovan ako je pozitivanZ: Setovan ako je rezultat nula, u drugom slučaju resetovanC: Setovan ako je dst dekrementovan sa 0000 na 0FFFFh, u drugom slučaju
resetovanSetovan ako je dst inkrementovan sa 00 na 0FFh, u drugom slučaju resetovan
V: Setovan ako je bilo C=0 i dst=08000h Setovan ako je bilo C=0 i dst=080h
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer I 16-bitni brojač na koji ukazuje R13 se oduzima od 32-bitnog brojača na koji ukazuje R12.
SUB @R13,0(R12) ; Oduzmi LSD-oveSBC 2(R12) ; Oduzmi bit prenosa od MSD
Primer II 8-bitni brojač na koji ukazuje R13 se oduzima od 16-bitnog brojača na koji ukazuje R12.
SUB.B @R13,0(R12) ; Oduzmi LSD-oveSBC.B 1(R12) ; Oduzmi bit prenosa od MSD
S t r a n a | 53
SET INSTRUKCIJA MSP430
* SETC Postavljanje bita prenosa
Sintaksa SETC
Operacija 1 -> C
Emulacija BIS #1,SR
Opis Bit prenosa C je postavljen. Operacija koja je često neizbežna.
Status bitovi N: Nema uticajaZ: Nema uticajaC: SetovanV: Nema uticaja
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer Emulacija decimalnog oduzimanja:Decimalno oduzimanje R5 od R6Pretpostavimo da su R5=3987 i R6=4137
DSUB ADD #6666h,R5 ; premesti R5 od 0-9 ka 6-0Fh; R5 = 03987 + 6666 = 09FEDh
INV R5 ; Invertuj R5 (rezultat ponovo od 0-9); R5 = .NOT. R5 = 06012h
SETC ; Postavi C = 1DADD R5,R6 ; Emuliraj oduzimanje:
; (10000 - R5 - 1); R6 = R6 + R5 + 1; R6 = 4137 + 06012 + 1 = 1 0150 = 0150
S t r a n a | 54
SET INSTRUKCIJA MSP430
* SETN Postavi negativan bit
Sintaksa SETN
Operacija 1 -> N
Emulacija BIS #4,SR
Opis Negativan bit je postavljen.
Status bitovi N: SetovanZ: Nema efektaC: Nema efektaV: Nema efekta
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
S t r a n a | 55
SET INSTRUKCIJA MSP430
* SETZ Postavi bit nule
Sintaksa SETZ
Operacija 1 -> Z
Emulacija BIS #2,SR
Opis Bit nule Z je postavljen.
Status bitovi N: Nema efektaZ: SetovanC: Nema efektaV: Nema efekta
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
S t r a n a | 56
SET INSTRUKCIJA MSP430
SUB[.W] Oduzimanje izvorišnog operanda od odredišnogSUB.B Oduzimanje izvorišnog operanda od odredišnog
Sintaksa SUB src,dst ili SUB.W src,dstSUB.B src,dst
Operacija dst + .NOT.src + 1 -> dstili[(dst - src -> dst)]
Opis Vrši se oduzimanje izvorišnog operanda od odredišnog. Vrednost izvorišnog operanda ostaje nepromenjena, dok je prethodni sadržaj odredišnog operanda izgubljen.
Status bitovi N: Setovan ako je rezultat negativan, resetovan ako je pozitivanZ: Setovan ako je rezultat nula, u drugom slučaju resetovanC: Setovan ako postoji bit prenosa iz MSB rezultata Setovan ako nema bita pozajmice, resetovan ako ga imaV: Setovan ako je došlo do prekoračenja
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer I Videti primer kod instrukcije SBC
Primer II Videti primer kod instrukcije SBC
S t r a n a | 57
SET INSTRUKCIJA MSP430
SUBC[.W], Oduzimanje sa bitom pozajmiceSBB[.W]SUBC.B, Oduzimanje sa bitom pozajmiceSBB.B
Sintaksa SUBC src,dst ili SUBC.W src,dstSBB src,dst ili SBB.W src,dstSUBC.B src,dst ili SBB.B src,dst
Operacija dst + .NOT.src + C -> dstili(dst - src - 1 + C -> dst)
Opis Vrši se oduzimanje izvorišnog operanda od odredišnog. Vrednost izvorišnog operanda ostaje nepromenjena, dok je prethodni sadržaj odredišnog operanda izgubljen.
Status bitovi N: Setovan ako je rezultat negativan, resetovan ako je pozitivanZ: Setovan ako je rezultat nula, u drugom slučaju resetovanC: Setovan ako postoji bit prenosa iz MSB rezultata Setovan ako nema bita pozajmice, resetovan ako ga imaV: Setovan ako je došlo do prekoračenja
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer I Dve mantise (24 bitova) se oduzimaju jedna od druge.LSB-ovi su u R13 i R10, a MSB-ovi u R12 i R9.
SUB.W R13,R10 ; 16-bitni deo, LSB-oviSUBC.B R12,R9 ; 8-bitni deo, MSB-ovi
Primer II 16-bitni brojač na koji ukazuje R13 se oduzima od 16-bitnog brojača uR10 i R11(MSD).
SUB.B @R13+,R10 ; Oduzmi LSD-e bez bita prenosaSUBC.B @R13,R11 ; Oduzmi MSD-e sa bitom prenosa...
S t r a n a | 58
SET INSTRUKCIJA MSP430
SWPB Zamena bajtova
Sintaksa SWPB dst
Operacija bits 15 to 8 <-> bits 7 to 0
Opis Vrši se zamena mesta višeg i nižeg bajta odredišnog operanda.
Status bitovi N: Nema uticajaZ: Nema uticajaC: Nema uticajaV: Nema uticaja
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer IMOV #040BFh,R7 ; 0100000010111111 -> R7SWPB R7 ; 1011111101000000 in R7
Primer II Vrednost u R5 je pomnožena sa 256. Rezulat je smešten u R5 i R4
SWPB R5 ;MOV R5,R4 ;Iskopiraj izmenjenu vrednost u R4BIC #0FF00h,R5 ;Popravi rezultatBIC #00FFh,R4 ;Popravi rezultat
S t r a n a | 59
SET INSTRUKCIJA MSP430
SXT Promena znaka
Sintaksa SXT dst
Operacija Bit 7 -> Bit 8 ......... Bit 15
Opis Znak iz nižeg bajta je produžen u viši bajt.
Status bitovi N: Setovan ako je rezultat negativan, resetovan ako je pozitivanZ: Setovan ako je rezultat nula, resetovan ako nije C: Setovan ako rezultat nije nula, resetovan ako jeste V: Resetovan
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer U R7 se učitava vrednost iz Tajmera. Operacija promene znaka upisuje vrednost bita 7 u bitove 8 do 15.R7 se onda dodaje na R6.
MOV.B &TCDAT,R7 ; TCDAT = 080h:. . . .. . . .1000 0000SXT R7 ; R7 = 0FF80h: 1111 1111 1000 0000ADD R7,R6
S t r a n a | 60
SET INSTRUKCIJA MSP430
* TST[.W] Testiranje odredišnog operanda* TST.B Testiranje odredišnog operanda
Sintaksa TST dst ili TST.W dstTST.B dst
Operacija dst + 0FFFFh + 1dst + 0FFh + 1
Emulacija CMP #0,dstCMP.B #0,dst
Opis Odredišni operand se poredi sa nulom. Statusni bitovi se postavljaju na osnovu rezultata operacije. Vrednost odredišnog bita se ne menja nakon izvršene operacije.
Status bitovi N: Setovan ako je rezultat negativan, resetovan ako je pozitivanZ: Setovan ako je odredišni operand=0, resetovan ako nijeC: SetovanV: Resetovan
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer I Testira se R7. Ako je negativan, nastavi na labelu R7NEG; ako je pozitivan, ali ne nula, nastavi na R7POS.
TST R7 ; Testira R7JN R7NEG ; R7 je negativan?JZ R7ZERO ; R7 je nula?
R7POS ...... ; R7 je pozitivan, različit od nuleR7NEG ...... ; R7 je negativanR7ZERO ...... ; R7 je nula
Primer II Testira se niži bajt R7. Ukoliko je negativan, nastavi na R7NEG; ako je pozitivan, ali različit od nule nastavi na R7POS.
TST.B R7 ; Test niži bajt R7JN R7NEG ; Niži bajt R7 je negativan?JZ R7ZERO ; Niži bajt R7 je nula?
R7POS ...... ; Niži bajt R7 je pozitivan, različit od nuleR7NEG ...... ; Niži bajt R7 je negativanR7ZERO ...... ; Niži bajt R7 je nula
S t r a n a | 61
SET INSTRUKCIJA MSP430
XOR[.W] Eksluzivna ILI operacija nad izvorišnim i odredišnim operandomXOR.B Eksluzivna ILI operacija nad izvorišnim i odredišnim operandom
Sintaksa XOR src,dst ili XOR.W src,dstXOR.B src,dst
Operacija src .XOR. dst -> dst
Opis Vrši se eksluzivna ILI operacija nad izvorišnim i odredišnim operandom. Rezultat se smešta u destinacioni operand, čiji je prethodni sadržaj izgubljen. Operacija nema uticaja na izvorišni operand.
Status bitovi N: Setovan ukoliko je MSB rezultata setovan, u drugom slučaju resetovanZ: Setovan ako je rezultat nula, resetovan ako nije C: Setovan ako rezultat nije nula, resetovan ako jeste V: Setovan ukoliko su oba operanda negativna
Režimi rada Nema uticaja na OscOff, CPUOff i GIE
Primer I Ekskluzivna ILI operacija nad R6 i MIPS.
XOR R6,MIPS
Primer II Ekskluzivna ILI operacija nad nižim bajtovima R6 i MIPS.
XOR.B R6,TONI
Primer III Resetuju se bitovi u nižem bajtu R7 koji se razlikuju u odnosu na reč iz RAM prostora MIPS.
XOR.B EDE,R7 ; Postavi različite bitove na '1'INV.B R7 ; Invertuj niži bajt
S t r a n a | 62
SET INSTRUKCIJA MSP430
LITERATURA
1. RISC, CISC I DSP PROCESORI, Mile K. Stojčev, I izdanje, Elektronski fakultet, Niš, 1997.
2. ARHITEKTURE I PROGRAMIRANJE RAČUNARSKIH SISTEMA ZASNOVANIH NA FAMILIJI PROCESORA 80x86, Mile K. Stojčev, Branislav D. Petrović, I izdanje, Elektronski fakultet, Niš, 1999.
3. ZBIRKA ZADATAKA IZ MIKROPROCESORA I MIKRORAČUNARA, Mile K. Stojčev, Saša S. Ristić, Miloš D. Krstić, I izdanje, Elektronski fakultet, Niš, 1999.
4. LABORATORIJSKI PRAKTIKUM IZ PREDMETA MIKROPROCESORSKI SISTEMI, Tatjana Stanković, Saša S. Ristić, Miloš D. Krstić, Ivan Andrejić, Mile K. Stojčev, Elektronski fakultet,(Edicija Pomoćni Udžbenici) Niš, 2004.
5. http://es.elfak.ni.ac.rs – Laboratorija za Embedded Sisteme,Elektronski fakultet Niš6. http://www.ti.com/msp430 – Texas Instruments, Experimenter's Board MSP430
S t r a n a | 63
SET INSTRUKCIJA MSP430
BIOGRAFIJA AUTORA
Prezime: JovanovićIme: SrđanDatum rođenja: 07.12.1978Adresa stanovanja: Laze Lazarevića 1, 37000 KruševacE-mail: [email protected] jezika: Engleski; C/C++/C#
S t r a n a | 64