Top Banner
TẬP LỆNH MSP430 X. TẬP LỆNH MSP430 X.1. Nhóm lệnh dữ liệu X.1.1. Lệnh di chuyển MOV Cấu trúc: MOV Nguồn , Đích ; đích = nguồn Ví dụ: MOV #21h, R10 ; đưa giá trị 2byte (21h) vào thanh ghi R10. MOV.W R3,R4 ; đưa giá trị 2byte của thanh ghi R3 vào thanh ghi R4. MOV.B 21h, 33h; đưa giá trị một byte tại địa chỉ 21h vào địa chỉ 33h. X.1.2.Lệnh POP(.B) Cấu trúc: POP Đích; lấy dữ liệu từ con trỏ ngăn xếp đến đích Ví dụ: POP R5; trả về giá trị ban đầu của R5 POP SR; trả về trạng thái ban đầu của thanh ghi POP.B R5; đưa giá trị của ngăn xếp vào byte thấp của R5, byte cao =0 X.1.3. Lệnh PUSH(.B) Cấu trúc: PUSH Nguốn; cất giá trị nguồn vào ngăn xếp Ví dụ: PUSH R8; cất giá trị thanh ghi vào ngăn xếp PUSH SR; lưu trạng thái thanh ghi X.1.4. Lệnh NOP Cấu trúc: NOP ; không thi hành gì cả và đi dến lệnh tiếp theo. X.2. Các lệnh số học X.2.1. Lệnh ADD Cấu trúc : ADD nguồn , đích ; đích = đích +nguồn Ví dụ 1: ADD R0,R1 ; cộng giá trị thanh ghi R0 với R1 đồng thời giá trị được lưu giá trị trong R1. Ví dụ 2: ADD.B 24h,30h ; cộng giá trị một byte ở địa chỉ 24h với giá trị ô nhớ 30h. Ví dụ 3: ADD.W 30h,31h ; cộng giá trị 2 byte ở ô nhớ 30h với ô nhớ 31h. X.2.2. Lệnh ADDC Cấu trúc: ADDC nguồn ,đích ; đích = nguồn +đích + c Ví dụ: cộng giá trị 2byte của thanh ghi R0 với ô nhớ 40h và kết quả được lưu trong thanh
13

Tap Lenh Msp430 ASM

Nov 24, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript

TP LNH MSP430X. TP LNH MSP430

X.1. Nhm lnh d liu

X.1.1. Lnh di chuyn MOVCu trc: MOV Ngun , ch ; ch = ngunV d: MOV #21h, R10 ; a gi tr 2byte (21h) vo thanh ghi R10.MOV.W R3,R4 ; a gi tr 2byte ca thanh ghi R3 vo thanh ghi R4.MOV.B 21h, 33h; a gi tr mt byte ti a ch 21h vo a ch 33h.

X.1.2.Lnh POP(.B)Cu trc: POP ch; ly d liu t con tr ngn xp n chV d: POP R5; tr v gi tr ban u ca R5POP SR; tr v trng thi ban u ca thanh ghiPOP.B R5; a gi tr ca ngn xp vo byte thp ca R5, byte cao =0

X.1.3. Lnh PUSH(.B)Cu trc: PUSH Ngun; ct gi tr ngun vo ngn xpV d: PUSH R8; ct gi tr thanh ghi vo ngn xpPUSH SR; lu trng thi thanh ghiX.1.4. Lnh NOPCu trc: NOP ; khng thi hnh g c v i dn lnh tip theo.

X.2. Cc lnh s hc

X.2.1. Lnh ADDCu trc : ADD ngun , ch ; ch = ch +ngunV d 1: ADD R0,R1 ; cng gi tr thanh ghi R0 vi R1 ng thi gi tr c lu gi trtrong R1.V d 2: ADD.B 24h,30h ; cng gi tr mt byte a ch 24h vi gi tr nh 30h.V d 3: ADD.W 30h,31h ; cng gi tr 2 byte nh 30h vi nh 31h.

X.2.2. Lnh ADDCCu trc: ADDC ngun ,ch ; ch = ngun +ch + cV d: cng gi tr 2byte ca thanh ghi R0 vi nh 40h v kt qu c lu trong thanhghi R0.ADDC 40h,R0 ( ADDC.W 40h,R0

X.2.3. Lnh SUBCu trc : SUB ngun, ch ; ch = ch ngun+1.V d: SUB.B R0,R1; ( R1= R1-R0 +1SUB.W R0,R1 ( SUB R0,R1 ; tr gi tr 2 byte gia 2 thanh ghi.V d 2: a gi tr 50h vo thanh ghi R10, v gi tr 40h vo thanh ghi R11, ng thithc hin php tr R10 vi R11. Sau cho thanh ghi R10 gim dn v n 0 th ngngth hin.Gii-----------------------------------------------------------MOV #50H,R10 ; a gi tr 50h vo thanh ghi R10MOV #40H,R11 ; a gi tr 40h vo thanh ghi R11SUB R11,R10 ; R10= R10 R11 +1Lap1: DEC R10; gim R10 i 1hJNZ Lap1 ; ch n khi no R10 bng 0 th thi.

X.2.4. Lnh SUBCCu trc : SUBC ngun,ch ; ch = ch + ngun +C

X.2.5. Lnh DADD ( cng 2 gi tr s thp phn )Cu trc : DADD Ngun, ch ; ch = ch + ngun + C.V d: cng gi tr 40 vo thanh ghi R10 khi bit gi tr thanh ghi R10 l 10h v cho bitkt qu sau khi tn ton.GIIDADD #40, R10; tr gi tr 40 cho R10Sau khi thc hin lnh th R10 c gi tr l 56.

X.2.6. Lnh DADC.B ( add C to decimally destination )Cu trc: DADC ch; ch = ch + C

X.2.7. Lnh CMP( .B) ( tr dng so snh )Cu trc: CMP Ngun,ch; ch ngun.V d: Hy so snh gi tr ca 2 thanh ghi R10 v R11. Nu thanh ghi R10 ln hn Thanhghi R11 th nhy n Lonhon, ngc li th nhy n Nhohon.GIILap1:CMP R11,R10 ; tr R11 cho R10.JC NhohonLonhon:-----------------JMP Lap1Nhohon:---------------------JMP lap1End.

X.2.8. Lnh INC(.B) ( increment destination )Cu trc: INC ch; ch = ch + 1V d: INC R15 ; R15= R15+1INC.B R15 ; R15= R15 +1Lc u gi s R15 c gi tr l 30h th sau khi thc hin lch trn th R15 c gi tr l31h

X.2.9. Lnh INCD(.B) (double_increment destination)Cu trc: INCD ch ; ch = ch +2V d: MOV &P1IN, R15; ly gi tr nhp vo t port 1 lu vo R15INCD.B R15 ; tng gi tr thanh ghi ln 2 n v.

X.2.10. Lnh DEC(.B) (Decrement destination )Cu trc: DEC ch ; ch = ch 1V d: Vit on chng trnh cho Led chp tt 10 ln ri dng.-------------------------------------------------------------------------Main:BIS.B #01h,& P1DIRMOV #10, R15; s ln chp tt ca ledLap:XOR #01h,&P1OUT; cho led thay i trng thi sao mi vng lpCall DelayDEC.B R15; gim R15 i mt n vJZ LapJMP $Delay:------------------------------------RETEND

X.2.11. Lnh DECD(.B) (Double_ Decrement destination)Cu trc: DECD ch; ch = ch -2V d: DECD.B R15; gim R15 di 2 n vGi s lc u R15 c g tr l 32h th sau khi thc hin lnh R15 c gi tr l 30h.

X.2.12. Lnh SBC(.B)Cu trc: SBC ch; ch = ch + 0ffffh + CV d: Gi s lc u thanh ghi R15 c gi tr l 40h, C = 0 th sau khi thc hin lnh sauth R15 c kt qu l 3Fh.SBC R15; R15= R15+ 0FFFFh+C

X.3. Cc lnh logic

X.3.1. Lnh AND( .B)(2chu k my).Cu trc: AND ngun, ch ; ch = ch and ngun.V d: Hy kim tra thanh ghi R10 c phi l s chn khng.Nu l s chn th xut gitr ra Port 1 cn nu l s l th kt thc chng trnh.GII:#include "msp430.h" ; gi th vin msp430.NAME main ; module tn.PUBLIC main ; t tn nhn chung trnh chnh.ORG 0FFFEhDC16 init ; t a ch vect ban u cho ngn xp.RSEG CSTACK ; t on ngn xp.RSEG CODE ; on chng trnhinit: MOV #SFE(CSTACK), SP ; a ngn xp vo con tr.main: NOP ; chng trnh chnh.MOV.W #WDTPW+WDTHOLD,&WDTCTL ; dng whatchdog time.AND #01,R10 ; kim tra xem R10 c phi l chn hay l.JNZ Xuat; nu s chn th xut gi tr R10 ra port 1 .JMP ThoatXuat:MOV.B R10,P1OUT ; xut gi tr s chn ra .Thoat:JMP $ ; nhy ti chEND

X.3.2. Lnh BIS(.B) (2 chu k my)Cu trc:BIS Ngun, ch ; ch = ch or ngun.V d: Kim tra gi tr thanh ghi R10 sau oan chng trnh sau;MOV #20H, R11; a gi tr 20h vo thanh ghi R11AND #01, R11; And thanh ghi R11 vi 1MOV #30H,R10; a gi tr 30h vo thanh ghi R10BIS R11,R10; thc hin OR thanh ghi R10 vi R11.JMP $; lp ti ch.Da vo on code trn th gi tr ca R10 sau khi kt thc chng trnh l 31h.

X.3.3. Lnh XOR( .B ) (2 chu k my)Cu trc: XOR Ngun, ch ; ch = ch XOR ngun.V d: Thanh ghi R10 c gi tr 20h, tm gi tr thanh ghi sau cu lnh sau:XOR #22h,R10 ; R10=22h XOR R10 = 2h

X.3.4. Lnh BIT(.B) (2 chu k my)Cu trc : BIT Ngun, ch ; ch AND ngun.V d: So snh 2 gi tr xem ging hai khc nhauBIT.B # 01h,&P1IN ; 0ffh and P1INJC nhay; nhy nu C Cary =1

X.3.5. Lnh BIC(.B) (2 chu k my )Cu trc : BIC Ngun ,ch ; ich = Not ngun AND ch.V d: o gi tr thanh ghi R10 v ng thi xut d liu ra Port 1.BIC.B R10,&P1OUT;

X.3.6. Lnh dch phi RRA(.B) (mt chu k)Cu trc: RRA ch ;MSB( MSB( LSB (CV d: Vit chng trnh thc hin cho led chy t phi sang tri 8 bit.Gii#include "msp430.h";-------------------------------------------------------------------------------ORG 0FC00h ; bat dau chuong trinh;-------------------------------------------------------------------------------RESET: mov.w #0280h,SP ; khoi tao dia chi con troStopWDT: mov.w #WDTPW+WDTHOLD,&WDTCTL ; dung whatdog timeMainloop:bis.b #0ffh,&P1DIRMov.b #80h,R11; cho mot led sangMov.b #8,R10; dich 7 bitLap: mov.b R11,&P1OUTRRA.b R11; dich sang phai khong su dung co cary.Wait: mov.w #050000,R15 ; delayl1: mov #2,R14L2: dec.w R14 ; giam R15 de tao delayjnz L2dec R15 ;jnz l1dec.w R10jnz Lapjmp Mainloop ;lap lai chuong trinh;;-------------------------------------------------------------------------------; Interrupt Vectors;--------------------------------------------ORG 0FFFEh ; MSP430 RESET VectorDW RESETEND

X.3.7. Dch phi c dng c Cary RRC(.B) (mt chu k)Cu trc: RRC ch; C( MSB (....LSB (CV d: Thc hin php tnh cng hai thanh ghi v kim tra xem c trn khng, nu c trnth thc hin ghi dch 8 bit lin tc, nu khng th thot khi chng trnh.GII--------------------------------------------------------------------------------Main:BIS.B #0FFH,&P1DIR ; khi to cho php xut 8 bit d liu ra port 1ADD.B R10,R11 ; cng 2 thanh ghiJC Dich ; nhy n chng trnh con thc hin dch cJMP ThoatDich:CLR.B R11 ; xa thanh ghi R11MOV #8,R13 ; dch 8 bitLap:MOV.B R11,&P1OUT; xut d liu ra port 1RRC.B R11 ; ly c Cary d dch vo thanh ghi R11CALL DELAY ; gi chng trnh con to thi gian trDEC.B R13 ; gim dn thanh ghiJNZ Lap ; nhy nu khac 0JMP Dich ; quay lai chng trnh v iu kinDELAY:-------------------------RETI ; tr li chng trnh chnhThoat:END ; kt thc chng trnh

X.3.8. Lnh dch tri RLA(.B) ( mt chu k )Cu trc: RLA ch ; LSB(MSB(CV d : Ging nh v d lnh dch phi nhng thay lnh RRA thnh lnh RLA.

X.3.9. Lnh dch tri c s dng c Carry RLC( .B) ( Mt chu k)Cu trc: RLC ch; C ( LSB ( MSB(C ;V d: Cng ging nh v d lnh dch phi c dng c Carry.

X.3.10. Lnh i byte SWPB (mt chu k)Cu trc: SWPB ch ; bit 15 n bt 8 i v tr vi bt 7 ti bit 0C th c minh ha nh hnh sau:V d: o thanh ghi R15 vi gi tr 0FF00h.MOV #0FF00H,R15 ; a gi tr 0ff00h vo thanh ghi R15SWPB R15 ; o byte thp vi byte cao.+ Ta thy lc u thanh ghi R15 c gi tr nh phn l 1111111100000000. Sau khi thchin lnh SWPB th thanh ghi R15 li c gi tr l 11111111.* Ch : Lnh ny ch s dng c vi vi thanh ghi v nh 2 byte.

X.3.11. Lnh m rng v sao chp bit 7 SXT ( Exten sign)Cu trc: SXT ch; chp Trng thi ca bit 7 ra thnh gi tr ca bit 8 ti bit 15.Chng ta c th m t lnh ny nh hnh sau:V d: Ly d liu t Port 1 oc tc ng t bnh ngoi ng thi lu d liu vo R10v coppy trng thi bit 7 ra byte cao ca R10.MOV &P1IN, R10; P1IN =080H (10000000b = R10SXT R10 ; R10 = 1111111110000000b

X.3.12. Lnh kim tra thanh ghi TST(.B)Cu trc: TST ch ; Kim tra xem thanh ghi bng hay khc 0.V d: Kim tra xem gi tr ly vo t Port 1 c bng gi tr 80h khng nu bng th xutd liu ra port cn khc thi khng xut.Gii:------------------------------------------------------------------------------Main:MOV.B &P1IN, R15; ly gi tr nhp vo t port 1SUB.B #80H,R15; tr gi tr 80h cho R15TST.B R15 ; kim tra thanh ghi R15JN KHAC ; nhy nu R15 khc 0JZ GIONG; nhy nu bng khngGIONG:BIS.B #0FFH,&P1DIR; cho php port 1 lm ng raMOV #80H,P1OUT; xut gi tr 80h ra hin thJMP $ ; lp ti chKHAC:JMP Main ; quay v chng trnh chnh kim tra tipEnd

X.3.13. Lnh o Bt INV(.B)Cu trc: INV ch; ch = not chV d: Nhn gi tr c ly t port 1 sao o gi tr v xut gi tr ra port 1.---------------------------Main:Mov.B &P1IN,R10; ly gi tr t port 1 a vo thanh ghi R10INV.B R10; thc hin o cc bt trong 8 bit thp ca thanh ghi R10

BIS.B #0FFH,& P1DIR ; cho php Port 1 lm ng ra d liuMov.B R10,&P1OUT; xut d liu ra port 1JMP Main; tr v chng trnh chnh tip tc kim ly d liu.--------------------------------End.Gi s lc u gi tr nhp vo t Port 1 c gi tr nh phn l 10101010B th sao khi dliu c xut ra l 01010101B.

X.3.14. Lnh CLR(.B) ( Clear destination)Cu trc: CLR ch; ch = 0V d: Lc u thanh ghi R15 c gi tr l 0ffh th sau khi thc hin lnh CLR th R15c gi tr l 0CLR R15; R15 = 0X.4. Cc lnh x l Bit+ Lnh CLRC ( clear carry bit)+ Lnh CLRN ( clear negative bit )+ Lnh CLRZ ( clear zero bit )

X.5. Cc lnh nhy

X.5.1. Lnh JNZ ( jum if not zero)Cu trc: JNZ Nhn ; nhy nu khng bng khngV d: Gim dn thanh ghi R10, nu thanh ghi R10 khc khng th nhy n nhn NhayCn bng khng th thot ra khi chng trnh.-------------------------------Main:Mov.B #20,R10; a gi tr 20 vo thanh ghi R10Nhay: DEC.B R10 ; gim R10 i mt n vJNZ Nhay ; kim tra R10 xem nu khc 0 th nhy--------------------------------End

X.5.2. Lnh JZ ( Jum if Zero)Cu Trc: JZ Nhn ; Nhy nu bng khngV d: TST R7; kim tra R7JZ Nhay; nhy n nhn Nhay khi R7 = 0, ngc li th tip lnh sau.

X.5.3. Lnh JEQ ( jum if equal)Cu trc: JEQ Nhn; nhy nu bngV d: CMP R10, Table(R6) ;JEQ Lap; nhy n Lap nu bng---------------------------------------------* Gii thch : Lnh CMP R10, Table(R6) so snh ni dung ca thanh ghi R6 vi nidung ca bng Table ti a ch vi gi tr R10

X.5.4. Lnh JGE ( Jum if greater or equal)Cu trc: JGE Nhn; nhy n nhn nu ln hn hoc bngV d: CMP @ R10,R11; so snh c du hai thanh ghiJGE nhay; nhy nu R11 ( (R10)---------------------------------------

X.5.5. Lnh JC (jum if carry set )Cu Trc: JC Nhn ; nhy nu c carry = 1V d: ADD.B R10,R11; cng 8 bit 2 thanh ghiJC Nhay; nhy n nhn Nhay nu c trn--------------------------------Nhay:--------------------------------

X.5.6. Lnh JHS ( jum if higher or same)Cu Trc: JHS Nhn; nhy nu ln hn hoc bng gi tr no V d: CMP #10,R15JHS Nhay; nhy n nhn nu R15 (10--------------------------------------------------

X.5.7. Lnh JN (jum if negative)Cu trc: JN Nhn ; nhy n nhn nu kt qu nh hn 0V d: SUB R5,Count ; Count= count- R5JN Nhan; nhy n Nhan nu php tnh nh hn 0

X.5.8. Lnh JMP ( Jum uncontionally)Cu trc: JMP Nhn; nhy khng u kinV d: JMP Main; nhy n nhn Main m khng cn u kin.

X.5.9. Lnh JL (jum if less)Cu trc: JL Nhn; nhy n nhn nu nh hnV d: CMP @R10,R11;JL Nhan; nhy nu R11( (R10)----------------------------------------------

X.5.10. Lnh JNC ( jum if not carry)Cu trc: JNC Nhan; nhy n nhan nu c carry khng btV d: Vit chng trnh cng gi tr nhn t P1 vi thanh ghi R10 ng thi kim traxem khi no trng thanh ghi th nhy n chng trnh con.---------------Main:ADD &P1,R10JNC Main; nhy n Main nu thanh ghi cha trnCon:-------------------------------------------

X.5.11. Lnh JLO ( jum if lower )Cu trc: JLO Nhan; nhy n nhn nu thp hn mt gi tr no V d: CMP.B #2, &P1INJLO Nhan; nhy n Nhan nu P1 nh hn 2---------------------------------------------

X.6. Cc lnh phc v chng trnh con v ngt

X.6.1. Lnh Call (call destination)Cu Trc: Call Nhan;V d: Call Return; gi chng trnh con ti a ch ca nhn Return---------------------Return------------------RET

X.6.2. Lnh RET ( Return from subroutine )Cu Trc: RETV d: ging v d trn

X.6.3. Lnh RETI ( return from interrupt)Cu trc: RETIV d: Sau y l hnh nh minh ha ca mt on chng trnh ngt

X.6.4. Lnh DINT ( Disable interrupts)Cu trc: DINT ; cm ngt

X.6.5. Lnh EINT (Enable interrupts)Cu trc: EINT ; cho php ngtV d:PUSH.B &P1INTBIS.B @SP,&P1IFG; cho php ch bt mt c duy nhtEINT ; ngt port 1 c lu gi trong ngn xpBIT #mask,@SPIQE maskok---------------------Maskok:BIC #mask,@SP---------------------INCD SPRETI

X.7. Bng thng s chu k v chiu di lnh

X.7.1. Cc lnh phc v ngt

X.7.2. Cc lnh mt ton hng* Ch : Khng c s dng cc lnh RRA,RRC, SWPB, SXT trong trng hp nha ch trc tip.

X.7.3. Cc lnh nhyCc lnh ny ty thuc vo di on code .

X.7.4. Cc lnh 2 ton hng