set instrukcijaes.elfak.ni.ac.rs/files/s.jovanovic - msp430 skup... · web viewasemblerski jezik,...

91
Univerzitet u Nišu Elektronski Fakultet Katedra za Elektroniku PREDMET: Mikroprocesorski Sistemi Avgust 2008 MSP430 SET INSTRUKCIJA

Upload: others

Post on 07-Nov-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 2: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 3: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 4: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 5: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 6: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 7: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 8: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 9: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 10: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 11: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 12: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 13: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 14: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 15: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 16: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 17: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 18: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 19: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 20: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 21: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 22: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 23: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 24: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 25: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 26: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 27: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 28: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 29: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 30: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 31: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 32: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 33: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 34: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 35: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 36: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 37: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 38: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 39: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 40: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 41: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 42: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 43: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 44: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 45: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 46: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 47: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 48: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 49: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 50: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 51: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 52: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 53: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 54: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 55: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 56: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 57: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 58: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 59: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 60: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 61: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 62: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 63: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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

Page 64: Set Instrukcijaes.elfak.ni.ac.rs/Files/S.Jovanovic - MSP430 skup... · Web viewAsemblerski jezik, ili jednostavno asembler je niži programski jezik koji mašinski jezik specifične

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