13
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

Tap Lenh Msp430 ASM

Embed Size (px)

Citation preview

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