Xem mẫu

  1. Khaûo saùt vi ñieàu khieån 8951 Chương 10: Söï tính toaùn bieåu thöùc cuûa Assemble Time (Assemble Time Expression Evaluation) Khi moät bieåu thöùc ñöôïc duøng, söï bieân dòch tính toaùn giaù trò loàng vaøo leänh ñoù. 1 Caùc cô sôû soá (Number Basses): Cô sôû caùc haèng soá phaûi ñöôïc theo sau caùc soá nhò phaân “B”, theo sau soá Octal “O”, hoaëc “Q”, theo sau soá thaäp phaân “D” hay khoâng coù gì , theo soá Hexa “H”. Ví duï: MOV A, # 15 : Thaäp phaân MOV A , 1111B : Nhò phaân MOV A , 30H : Hex MOV A , 315D : Thaäp phaân MOV A , 317Q : Octal 2 Caùc chuoãi kyù töï (Character String): Chuoåi duøng moät hay 2 kyù töï coù theå duøng nhö caùc toaùn haïng trong caùc bieåu thöùc. Caùc maõ ASSCII ñöôïc bieán ñoåi thaønh nhò phaân töông ñöông bôûi söï bieân dòch. Caùc haèng ñöôïc ñi keøm theo sau 1 daáu ngoaëc keùp (‘). Ví duï : CJNZ A , # ‘Q’, AGAIN
  2. Khaûo saùt vi ñieàu khieån 8951 3 Caùc kyù hieäu soá hoïc (Arithmetic Operations): + : Coäng _ : Tröø . : Nhaân / : Chia MOD :Pheùp laáy dö Ví duï leänh MOV A, # 10 + 10H vaø leänh MOV A, # 1AH töông töï 2 leänh MOV A, # 25 MOD 7 vaø MOV A, # 4 cuõng gioáng nhau. 4 Caùc hoaït ñoäng logic (Logic Operations): Caùc hoaït ñoäng logic laø OR, AND, XOR, NOT. Hoaït ñoäng ñöôïc aùp duïng treân caùc bit töông öùng trong moãi toaùn haïng. Söï hoaït ñoäng phaûi ñöôïc phaân ra töø caùc toaùn haïng bôûi moät khoaûng caùch kyù töï hoaëc nhieàu khoaûng kyù töï. Ví duï 3 leänh MOV sau ñaây gioáng nhau: THERE EQU MINUS – THERE EQU- 3 MOV A, #(NOT THERE) + 1 MOV A, MINUS – THERE MOV A, #11111101B 5 Caùc hoaït ñoäng ñaëc bieät (special Operation): Caùc hoaït ñoäng ñaëc bieät laø: SHR (dòch phaûi), SHL (dòch traùi), HIGH (byte cao), LOW (byte thaáp).
  3. Khaûo saùt vi ñieàu khieån 8951 Ví duï: leänh MOV A, # HIGH 1234H vaø leänh MOV A, 12H töông ñöông. 6 Caùc hoaït ñoäng lieân quan: Khi moät hoaït ñoäng coù lieân quan ñöôïc duøng giöõa hai toaùn haïng thì keát quûa hoaëc sai (0000h) hoaëc ñuùng (FFFFH). Caùc hoaït ñoäng laø: EQ = : Equals (baèng) NE : Not equals (khoâng baèng) LT < : Less than (nhoû hôn) LE : Greater than (lôùn hôn) GE >= : Greater than or equal (lôùn hôn hoaëc baèng) Ví duï: MOV A, #5 MOV A, 100 GE 50 MOV A, 5 NE 4 Caû ba leänh treân ñeàu ñuùng neân caû ba töông ñöông vôùi leänh sau: MOV A,# 0FFH 5. Caùc chæ thò bieân dòch: ASM51 cung caáp caùc chæ thò sau:  Söï ñieàu khieån traïng thaùi bieân dòch (ORG, AND, USING)  Söï xaùc ñònh kyù hieäu (SEGMENT, EQU, SET, DATA, NDATA, BIT, CODE)  Söï khôûi gaùn löu tröõ hay ñeå daønh tröôùc söï löu tröõ (DS, DBIT, DB, DW)  Söï keát noái chöông trình (PUBLIC, EXTRN, NAME)
  4. Khaûo saùt vi ñieàu khieån 8951  Söï choïn segment (PSEG, CSEG, DSEG, ISEG, BSEG, XSEG) 5.1 Söï ñieàu khieån traïng thaùi bieân dòch: Chæ thò ORG thay ñoåi boä ñeám vuøng nhôù ñeå ñaët söï khôûi ñaàu moät chöông trình môùi bôûi traïng thaùi theo sau ñoù, daïng cuûa chæ thò ORG laø: ORG Expression Chæ thò END ñaët ôû cuoái cuøng trong file nguoàn. Daïng cuûa noù laø END. Chæ thò USING cung caáp cho ASM51 daõy thanh ghi tích cöïc hieän haønh. Daïng chæ thò cuûa noù laø USING Expression Vieäc duøng ñòa chæ caùc thanh ghi kyù hieäu ñöôïc ñònh nghóa tröôùc AR0-AR7 seõ bieán thaønh ñòa chæ tröïc tieáp phuø hôïp cuûa daõy thanh ghi tích cöïc. Ví duï : USING 3 : Duøng Bank 3 trong daõy thanh ghi. PUSH AR7 : Push R7 (R7=1FH) PUSH AR7 : Push R7 (R7=0FH) 5.2 Ñònh nghóa kyù hieäu (Symbol Definition): Daïng chæ thò cuûa segment nhö sau: symbol SEGMENT segmenttype Trong ñoù symbol laø teân cuûa segment coù theå ñoåi choã ñöôïc. Caùc kieåu segment coù theå CODE (segment maõ), XDATA (vuøng döõ lieäu ngoaøi), DATA (vuøng döõ lieäu noäi) coù theå truy xuaát baèng söï ñònh vò tröïc tieáp töø (00H-7FH), IDATA (toaøn boä vuøng döõ lieäu noäi), BIT (vuøng BIT töø 20H-2FH döõ lieäu noäi). Ví duï : EPROM SEGMENT CODE cho bieát EPROM cuûa moät segment kieåu code.
  5. Khaûo saùt vi ñieàu khieån 8951 Daïng chæ thò EQU : symbol EQU Expression Daïng chæ thò BIT : symbol BITExpression Löu yù raèng neáu ta duøng chæ thò BIT nhö FLAGS BIT 05H thì ta coù theå SETB FLAGS maø khoâng ñöôïc duøng leänh MOV. 5.3 Söï khôûi gaùn/daønh löu tröõ tröôùc (Storage Initilization/Reservation) Caùc chæ thò cuûa Storage Initilization khôûi gaùn vaø Storage Reservation ñeå daønh moät vuøng nhôù trong töø, byte hoaëc caùc ñôn vò bit. Vuøng ñöôïc daønh tröôùc khi baét ñaàu taïi vuøng nhôù ñöôïc chæ roõ bôûi giaù trò hieän haønh cuûa boä ñeám vuøng nhôù trong segment tích cöïc ñang hieän haønh. Caùc chæ thò naøy coù theå ñöùng tröôùc moät nhaõn. 5.3.1 Khai baùo löu tröõ DS (Define Storage) Daïng phaùt bieåu DS laø : [label:]DS Expression Phaùt bieåu DS daønh moät vuøng nhôù trong ñôn vò byte. Noù coù theå ñöôïc duøng trong baát kyø phaùt bieåu segment naøo ngoaïi tröø BIT. Khi phaùt bieåu DS ñöôïc baét gaëp trong chöông trình thì boä ñeám vò trí location cuûa segment hieän haønh ñöôïc taêng leân moät khoaûng baèng giaù trò cuûa bieåu thöùc. Toång cuûa boä ñeám location vaø bieåu thöùc ñaõ ñöôïc ñònh roõ seõ khoâng vöôïc quaù söï haïn cheá cuûa vuøng hieän haønh. Phaùt bieåu sau taïo ra moät vuøng ñeäm 40 byte trong segment döõ lieäu noäi. DSEG AT 30 : Ñaët vaøo segment data noäi. LENGTH EQU 40 BEFFER : DS LENGTH : 40 byte ñöôïc daønh tröôùc Nhaõn BUFFER töôïng tröng cho ñòa chæ cuûa location ñaàu tieân cuûa vuøng nhôù ñöôïc löu tröõ. Trong ví duï treân buffer ñaét ñaàu ôû ñòa chæ 30H
  6. Khaûo saùt vi ñieàu khieån 8951 bôûi töø “AT 30” ñöôïc ñònh roõ bôûi DSEG. Vuøng ñeäm naøy coù theå xoaù nhö sau: MOV R7,#LENGTH : R7 chöùa con soá LENGTH laø 40 MOV R0,#BUFFER : R0 chöùa ñòa chæ taïi buffer laø 30H LOOP : MOV @R0,#0 : Laàn löôït xoaù DJNZ,R7,LOOP (continue) Ñeå taïo ra vuøng ñeäm 1000 byte trong RAM ngoaïi baét ñaàu taïi ñòa chæ 4000H, caùc chæ thò sau ñaây coù theå ñöôïc duøng: XSTART EQU 4000H XLENGTH EQU 1000H XSEG AT XSTART : Phaân ñoaïn data ngoaøi baét ñaàu ôû 4000H XBUFFER: DS XLENGTH : Taïo ra moät vuøng ñeäm coù ñoä daøi 1000byte Caùc leänh sau ñaây coù theå duøng ñeå xoaù vuøng ñeäm treân : MOV DPTR,#BUFFER: Ñöa ñòa chæ 4000H vaø DPTR LOOP : CLR A MOVX @DPTR : Xoaù noäi duïng töø ñòa chæ 4000H trôû ñi INC DPTR : Taêng theâm 1 ( tröôøng hôïp ñaàu trôû thaønh 4001H) MOV A,DPL CJNZ A,#LOW (XBUFFER=LENGTH+1),LOOP MOV A,DPH CJNZ A,HIGH (XBUFFER=XLENGTH+1),LOOP (Continue) Neáu so saùnh hai caùch duøng treân daønh cho byte thaáp vaø byte cao DPTR, Vì leänh CJNZ chæ laøm nhieäm vuï ñoái vôùi thanh ghi A hoaëc
  7. Khaûo saùt vi ñieàu khieån 8951 thanh ghi Rn, do ñoù byte thaáp hoaëc byte cao cuûa boä ñeám döõ lieäu phaûi ñöôïc MOV vaøo A tröôùc khi ñeán leänh CJNZ. Voøng laëp chæ keát thuùc khi boä ñeám döõ lieäu ñaõ ñöôïc ñoïc ñòa chæ XBUFFER+XLENGTH+1 5.3.2 Khai baùo DBIT (Define Bit) Söï thaønh laäp : [label:] DBIT expression Chæ thò DBIT daønh tröôùc vuøng nhôù caùc ñôn vò bit, noù coù theå ñöôïc duøng trong 1 segment bit. Khi phaùt bieåu naøy ñöôïc baét gaëp trong chöông trình thì boä ñeám vò trí cuûa segment hieän haønh ñöôïc coäng theâm giaù trò cuûa bieåu thöùc. 5.3.3 Khai baùo byte DB (Define Byte) Söï thaønh laäp chæ thò ÑAËC BIEÄT : [label:] ÑAËC BIEÄT Expression [,Expression][...] Chæ thò DB khôûi gaùn boä maõ neân segment CODE phaûi tích cöïc. Danh saùch bieåu thöùc laø moät chuoãi cuûa moät hay nhieàu giaù trò byte (moãi caùch coù theå laø moät bieåu thöùc) ñöôïc phaân ra bôûi daáu phaåy. Chæ thò DB cho pheùp caùc chuoãi kyù töï (ñöôïc keøm trong daáu ngoaëc keùp ñôn) daøi hôn 2 kyù töï. Moãi kyù töï trong chuoãi ñöôïc bieán thaønh maõ ASCII töông öùng. Neáu moät nhaõn ñöôïc duøng thì nhaõn ñoù ñaõ ñöôïc aán ñònh ñòa chæ cuûa byte ñaàu tieân. Ví duï : CSEG AT 0100H DSQUARES : DB 0,1,4,9,16,25 :Bình phöông töø 0-5 Keát quaû cuûa söï phaân chia boä nhôù hexa cuûa boä nhôù maõ ngoaøi nhö sau : Addres Conte Note s nt 0100H 00H Cöûa soá
  8. Khaûo saùt vi ñieàu khieån 8951 0 0101H 01H Cöûa soá 1 0102H 04H Cöûa soá 4 0103H 9H Cöûa soá 9 0104H 10H Cöûa soá 16 0105H 19H Cöûa soá 25 5.3.4 Khai baùo töø DW (Define Word) Söï thaønh laäp : [label:]DW Expression [,Expression][...] Chæ thò gioáng chæ thò DB ngoaïi tröø hai vò trí nhôù 16 bit ñöôïc chia laøm moãi khoaûng döõ lieäu. Ví duï : CSEG AT 200H DW 1234H,2 Addres Conte Note s nt 0200H 12H Byte cao 1234H 0201H 34H Byte thaáp 1234H
  9. Khaûo saùt vi ñieàu khieån 8951 0202H 00H Byte cao cuûa 2 0203H 02H Byte thaáp cuûa 2
  10. Khaûo saùt vi ñieàu khieån 8951
  11. Khaûo saùt vi ñieàu khieån 8951