Xem mẫu

  1. Chương 8: Caùc leänh luaän lyù (Boolean Instruction) 8951 chöùa moät boä xöû lí luaän lyù ñaày ñuû cho caùc hoaït ñoäng bit ñôn, ñaây laø moät ñieåm maïnh cuûa hoï vi ñieàu khieån MSC-51 maø caùc hoï vi ñieàu khieån khaùc khoâng coù. RAM noäi chöùa 128 bit ñôn vò vaø caùc vuøng nhôù caùc thanh ghi chöùc naêng ñaëc bieät caáp leân ñeán 128 ñôn vò khaùc. Taát caû caùc ñöôøng Port laø bit ñònh vò, moãi ñöôøng coù theå ñöôïc xöû lí nhö Port ñôn vò rieâng bieät. Caùch truy xuaát caùc bit naøy khoâng chæ caùc leänh reõ nhaùnh khoâng, maø laø moät danh muïc ñaày ñuû caùc leänh MOVE, SET, CLEAR, COMPLEMENT, OR, AND. Toaøn boä söï truy xuaát cuûa bit duøng söï ñònh vò tröïc tieáp vôùi nhöõng ñòa chæ töø 00H - 7FH trong 128 vuøng nhôù thaáp vaø 80H - FFH ôû caùc vuøng thanh ghi chöùc naêng ñaëc bieät. Bit Carry C trong thanh ghi PSW\ cuûa töø traïng thaùi chöông trình vaø ñöôïc duøng nhö moät söï tích luõy ñôn cuûa boä xöû lí luaän lyù. Bit Carry cuõng laø bit ñònh vò vaø coù ñòa chæ tröïc tieáp vì noù naèm trong PSW. Hai leänh CLR C vaø CLR CY ñeàu coù cuøng taùc duïng laø xoùa bit côø Carry nhöng leänh naøy maát 1 byte coøn leänh sau maát 2 byte. Hoaït ñoäng cuûa caùc leänh luaän lyù ñöôïc toùm taét nhö sau: CLR C : Xoùa côø Carry xuoáng 0. Coù aûnh höôûng côø Carry.
  2. CLR BIT : Xoùa bit xuoáng 0. Khoâng aûnh höôûng côø Carry SET C : Set côø Carry leân 1. Coù aûnh höôûng côø Carry. SET BIT : Set bit leân 1. Khoâng aûnh höôûng côø Carry. CPL C : Ñaûo bit côø Carry. Coù aûnh höôûng côø Carry. CPL BIT : Ñaûo bit. Khoâng aûnh höôûng côø Carry. ANL C, BIT : (C) (C) AND (BIT) : Coù aûnh höôûng côø Carry. ANL C, /BIT : (C) (C) AND NOT (BIT):Khoâng aûnh höôûng côø Carry. ORL C, BIT : (C) (C) OR (BIT) : Taùc ñoäng côø Carry. ORL C, /BIT : (C) (C) OR NOT (BIT) : Taùc ñoäng côø Carry. MOVC, BIT : (C) (BIT) : Côø Carry bò taùc ñoäng. MOVBIT, C : (BIT) (C) : Khoâng aûnh höôûng côø Carry. 2.6 Caùc leänh xen vaøo (Miscellamous Intstruction): NOP : Khoâng hoaït ñoäng gì caû, chæ toán 1 byte vaø 1 chu kyø maùy. Ta duøng ñeå delay nhöõng khoaûng thôøi gian nhoû.
  3. III. Chöông trình ngoân ngöõ Assembly cuûa 8951: 1. Giôùi thieäu : Ngoân ngöõ assembly giöõa ngoân ngöõ maùy vaø ngoân ngöõ caáp cao. Ngoân ngöõ caáp cao ñöôïc ñaëc tröng nhö: Pascal, C ... Coøn chöông trình ngoân ngöõ maùy laø moät chuoãi caùc byte nhò phaân ñöôïc ñaëc tröng bôûi caùc leänh maø maùy tính coù theå thöïc thi. Ngoân ngöõ assembly thay theá caùc maõ nhò phaân cuûa ngoân ngöõ maùy ñeå söû duïng caùc “thuaät nhôù“ deã daøng trong quaù trình laäp trình. Ví duï leänh coäng trong ngoân ngöõ maùy ñöôïc ñaëc tröng bôûi maõ nhò phaân “10110011” trong khi ngoân ngöõ assembly laø “ADD“. Moät chöông trình ngoân ngöõ assembly khoâng theå thöïc thi bôûi maùy tính maø noù phaûi ñöôïc dòch sang maõ nhò phaân ngoân ngöõ maùy. Moät linker laø moät chöông trình maø noù keát hôïp caùc chöông trình ñaëc tröng Relocatable (modul) vaø thieát keá moät chöông trình ñaëc tröng tuyeät ñoái thöïc thi baèng maùy tính. Segment laø moät phaàn cuûa boä nhôù maõ hoaëc döõ lieäu, noù coù theå taùi ñònh vò ñöôïc (Relocatable) hoaëc tuyeät ñoái (Absolute ). Segment Relocatable coù teân, kieåu vaø coù theå ñöôïc keát noái vôùi Segment cuïc boä khaùc. Segment Absolute khoâng coù teân vaø khoâng theå ñöïôc keát noái Segment khaùc. Modul chöùa 1 hoaëc nhieàu segment hay caùc segment cuïc boä . Moät modul coù theå laø moät “file” ôû nhieàu tröôøng hôïp caù bieät .
  4. Moät chöông trình Modul Absolute ñôn ñöôïc hoøa vaøo toaøn boä caùc Segment Absolute vaø Segment Relocatable töø taát caû caùc mode nhaäp. Chöông trình chæ chöùa caùc maõ nhò phaân thay cho caùc leänh (vôùi caùc ñòa chæ vaø caùc haèng döõ lieäu ) ñöôïc hieåu bôûi maùy tính. 2. Hoaït ñoäng cuûa trình bieân dòch (Assembler Operation) Coù nhieàu trình bieân dòch vôùi muïc ñích khaùc nhau coù taùc duïng laø deã hieåu caùc öùng duïng vi ñieàu khieån. ASM51 laø tieâu bieåu chuaån bieân dòch cuûa hoï MSC-51. ASM51 laø trình bieân dòch maïnh coù taùc duïng höõu hieäu treân heä thoáng phaùt trieån INTEL vaø hoï IBM PC cuûa maùy vi tính. ASM51 ñöôïc goïi hieän leân töø söï chæ daãn cuûa heä thoáng bôûi: ASM51 Source file (Assembly Control). Trình bieân dòch nhaän moät file nguoàn vôùi tö caùch laø ngoõ nhaäp (PROGRAM.SCR) vaø hoï phaùt ra moät file ñoái töôïng PROGRAM.OBJ PROGRAM.SCR ASM51 PROGRAM.LST (PROGRAM.OBJ) vaø file listing (PROGRAM.LST).
  5. Vì haàu heát caùc bieân dòch xem xeùt chöông trình nguoàn 2 laàn trong luùc thi haønh söï dòch ngoân ngöõ maùy, neân chuùng ñöôïc moâ taû qua 2 Pass bieân dòch laø Pass1 vaø Pass2. Trong pass1, file nguoàn ñöôïc xem xeùt töøng doøng vaø baûng kyù hieäu xaây döïng. Boä ñeám Location maëc nhieân choïn 0 hoaëc ñöôïc ñaët bôûi chæ thò ORG (ñaët Origin). Cuõng nhö file ñöôïc xem xeùt, boä ñeám Location ñöôïc taêng leân baèng ñoä daøi moãi leänh. Chæ thò data ñònh nghóa (ñaëc bieät hoaëc DW) taêng boä ñeám Location baèng vôùi soá byte ñònh roõ, caùc chæ thò nhôù löu tröõ (DSO taêng boä ñeám Location bôûi soá byte döï tröõ). Moãi laàn moät nhaõn ñöôïc tìm thaáy ôû söï baét ñaàu cuûa moät ñöôøng, thì noù ñöôïc ñaëc trong baûng kyù hieäu theo giaù trò hieän haønh cuûa boä ñeám Location. Caùc kyù hieäu ñöôïc ñònh nghóa bôûi duøng caùc chæ thò töông ñöông (EQU) ñöôïc ñaëc trong baûng kyù hieäu, ñöôïc caát giöõ vaø sau ñoù duøng trong pass2. Trong Pass2, file Object vaø file Listing ñöôïc taïo ra, caùc thuaät nhôù ñöôïc bieán ñoåi thaønh Opcode vaø ñaët trong caùc file output. Caùc toaùn haïng ñöôïc xaùc ñònh giaù trò vaø ñaët phía sau Opcode leänh. ÔÛ nôi caùc kyù hieäu xuaát hieän trong toaùn haïng, caùc kyù hieäu cuûa chuùng seõ ñöôïc laáy laïi töø baûng kyù hieäu (ñöôïc taïo ra trong suoát Pass1 vaø duøng trong söï saép xeáp döõ lieäu ñuùng hoaëc ñuùng ñòa chæ bôûi caùc leänh).
  6. Bôûi vì Pass2 ñöôïc thöïc thi neân chöông trình nguoàn coù theå duøng “söï tham khaûo tröôùc “ laø duøng kyù hieäu tröôùc khi ñònh nghóa. File Object neáu tuyeät ñoái thì chæ chöùa caùc byte nhò phaân (00H - FFH) cuûa chöông trình ngoân ngöõ maùy. File Object Relocatable chöùa moät baûng kyù hieäu vaø thoâng tin khaùc ñöôïc yeâu caàu bôûi söï keát hôïp vaø xaùc ñònh ñuùng vò trí. File Listing chöùa maõ nguyeân baûng ASCII (20H – 7FH) cho caû hai chöông trình nguoàn vaø caùc byte Hexadecimal trong chöông trình ngoân ngöõ maùy. 3. Söï saép ñaët chöông trình ngoân ngöõ Assmebly: Chöông trình ngoân ngöõ Asembly bao goàm: Caùc leänh maùy, lôøi chæ chò cuûa trình bieân dòch, söï ñieàu khieån bieân dòch vaø caùc chuù thích. Caùc leänh maùy laø caùc kyõ xaûo cuûa leänh coù theå thöïc thi (ví duï nhö ANL). Caùc chæ thò cuûa trình bieân dòch laø caùc leänh ñeå trình bieân dòch ñònh caáu truùc chöông trình, caùc döõ lieäu, kyù hieäu, haèng, … (ví duï Org ). Caùc söï ñieàu khieån trình bieân dòch set caùc mode cuûa trình bieân dòch vaø ñieàu khieån söï chaïy chöông trình Assembly (ví duï STILLE ). Caùc chuù thích hoaït ñoäng cuûa leänh. Caùc leänh phaûi ghi theo nguyeân taéc roõ raøng ñeå ñöôïc trình bieân dòch hieåu. Söï saép xeáp cuûa chuùng nhö sau: (Label:) mnemonic [operand][:operand][...][:comment]