មេរៀន INTEL 8088 Proccessor
មាននៅក្នុង CPU 8088 បានចែកចេញជា 2 ផ្នែកគឺ EU និង BIU ។ Opcode Buffer ជាUnit មួយដែលមិនត្រឹមតែមានតួនាទីសំរាប់ផ្នុក opcode ដើម្បីបញ្ជូលទៅ CU ឬ Bus ALU ( មានប្រវែង 4 byte សំរាប់ 8088 និង6 byte សំរាប់ 8088) ទេថែមទាំង ជាកន្លែង ដែលតភ្ជាប់រវាង EUនិង BIU ដែលបង្កើតល្បឿនយ៉ាងលឿនដល់ CPU ក្នុងការដោះ ដូរទិន្ន័យ ។+ Function ចំបងរបស់ BIU គឺបញ្ជួន address, អាន opcode ពី memory និង Read/-write data from/to port/memory ឬ គេអាចនិយាយបានថា BIU មានភារ;កិច្ចសំរាប់បញ្ជូន address ទៅ Bus ឬ និងដោះដូរទិន្ន័យជាមួយ Bus ។
ចំនែកក្នុង EU វិញគេឃើញមាន Control Unit (CU) ដែលជា Unit មួយមានសៀគ្វី opco-de decoder ។ opcode ត្រូវបានអានចេញពី memory ហើយបញ្ជួនទៅដល់ gate Input របស់Decoder បន្ទាប់មក Instruction ដែលទទួលបានពី Decoder ត្រូវបញ្ជួនទៅផ្នែកបង្កើតសញ្ញា បញ្ជា (ផ្នែកមួយដែលស្ថិតនៅក្នុង Cu ដែរ) ដើម្បីបញ្ជួនសញ្ញាទាំងនោះទៅបញ្ជាផ្នែកផ្សេងៗក្នុង EU យើងទៅតាម Instruction នោះ ។ ប្រសិនបើលទ្ធផល ដែលបានពី Opcode decoder ត្រូវការធ្វើប្រមាណវិធីពេលនោះសៀគ្វីដែលមានតួនាទីបង្កើតសញ្ញាបញ្ជាខាងក្នុង CPU ឬ EU នោះក៏បង្កើតជាមុខសញ្ញាបញ្ជារួចបញ្ជួនទៅផ្នែក ALU ។
ALU ជា មូនដ្ឋានមួយសំរាប់អនុវត្តន៏បណ្តាប្រមាណវិធីរួមមានទាំងប្រមាណលេខនិងប្រមាណវិធីតក្ក; ។ Opcode Buffer ជាអង្កភាពមួយប្រើសំរាប់ផ្ទុកបណ្តាអស្សន; Opcode ដែលបានអាន ចេញពី memory ដើម្បីរងចាំផ្នែក EU អនុវត្តន៏ ។
១. Memory addressing BIU របស់ 8088 បានបង្ហាញថាលើ Bus address មាន 20bit address(20ខ្សែ address)ដូច្នេះ =>8088 មានលទ្ធភាពអាចវិភាគ address បាន 2 = 1.048.576= 1M ថត memory ដែលថតនីមួយមានប្រវែង 1byte ។ នៅក្នុងលំហរ memory 1M byte របស់ 8088 ត្រូវបានគេចែកទៅជា segment ( កំនាត់ៗ) ដែលប្រើវិធីនេះវាផ្តល់ប្រយោជន៏យ៉ាងសំខាន់ក្នុងពេលដែលគេត្រូវការប្រើច្រើនការងារក្នុងពេលតែមួយ (multitaslcing) ។ Segment និមួយៗត្ូវបានគេប្រើសំរាប់មុខងារផ្សេងៗគ្នាដូចជា;
- ផ្ទុក code programming
- ផ្ទុក Data និង Result របស់កម្មវិធី
- បង្កើត Segment ពិសេសមួយហៅថា stack ប្រើសំរាប់គ្រប់គ្រងប៉ារ៉ាមែត្ររបស់ CPU ពេលហៅកម្មវិធីរង (SP) ឬត្រលប់ចេញពីកម្មវិធីរងវិញ ។
ការរួមផ្សំគ្នារវាង Segment និង Offsets address នាំអោយយើងទទួលបាននូវទីតាំង(address) memory ពិតមួយរឺហៅថា Physical address ។ Segment តំបូងត្រូវបានគេកំនត់ចាបពី Beginning address រហូតដល់ 64 KB បន្ទាប់ទើបចាប់ផ្តើម Segment បន្ទាប់ទៀត ឬ យើងនិយាយថាគេកំនត់យក 1 segment មានប្រវែង 64 KByte ។ Offset address គឺជា address លំអៀងក្នុង Segment ណាមួយ
២- Registers introduction:
ក. Multiperpos Register<Multitasking Register> ជាបណ្តា Register ដែលមានប្រវែង 16 bit រួមមាន; AX, BX, CX, DX ។ លក្ខណ;ពិសេសរបស់ Register ទាងនេះគឺនៅពេលដែលត្រូវការផ្ទុកទិន្ន័យ 8 bit នោះ Register ទាំងនោះអាចផ្តាច់ចេញជាពីរផ្នែកគឺ; AU, AL, BU, BL, CH, CL, DH, DL Register និមួយៗត្រូវបានគេប្រើសំរាប់ផ្ទុកទិន្ន័យប្រភេទផ្សេងៗគ្នាពោលគឺគេប្រើវាទៅ
តាមមុខងាររៀងៗខ្លួន;
▪ AX (Accumulator): បន្ទះផ្ទុកទិន្ន័យសំរាប់យកទៅធ្វើប្រមាណវិធី ឬ ក៏ជាកន្លែងសំរាប់
ផ្ទុកលទ្ធផលប្រមាណវិធីដែរ ។ ប្រសិនបើលទ្ធផល 8 bit នោះបន្ទះ AL ត្រូវបានប្រើ
▪ BX (Base) បន្ទះមូលដ្ឋានតែងត្រូវគេប្រើសំរាប់ផ្ទុក address base ។
▪ CX (Count): CX ត្រូវគេប្រើសំរាប់ផ្ទុកតំលៃចំនួន loop នៅពេលដែលជួប Loop statement ។
▪ DX (Data): បន្ទះផ្ទុកទិន្ន័យ ។ DX រួមជាមួយ AX ដើម្បីអនុវត្តន៏ប្រមាណវិធីគុណ ឬចែក
ក្រៅពីនេះ DX ត្រូវបានគេប្រើដើម្បីផ្ទុក address របស់ port (IN/out) ។
៣. Pointer and Index Register ក្នុង 8088 មាន 3 Pointer Register និង 2 Index Register ។ Register និមួយៗសុទ្ធតែមានប្រវែង 16 bit និងអាចប្រើដូចជា multipurpose Register ដែរ លើកលែងតែ Register IP ចេញ ។ ក្រៅពីអាចប្រើ ដូចខាងលើនេះ Register និមួយៗនៅមានមុខងាររៀងៗខ្លួនទៀតដូចជា
+ IP : Instruction Pointer តែងតែចង្អុរទៅ Instruction បន្ទាប់ទៀតដែលនិងត្រូវចូល មកអនុវត្តន៏ជាបន្ត (Instruction ទាំងអស់នេះនៅក្នុង Code segment) ។ Address របស់ Instru-ction បន្ទាប់ត្រូវបានកំនត់ដោយ CS:IP ។
+ BP: Base pointer ជានិច្ចជាកាលចង្អុរទៅ Data មួយក្នុង stack segment ដែលមាន address SS:BP (address របស់ Data នេះ)
+ SP: Stack pointer ជា pointer ដែលជានិច្ចកាលចង្អុរទៅរក stack top ក្នុង stack seg-ment ។ address របស់ stack top គឺ SS:SP ។
+ SI: Source Index, SI ចង្អុរទៅទិន្ន័យមួយដែលនៅក្នុង Data Segment ហើយដែលទិន្ន័យនោះមាន address ត្រូវបានកំនត់ដោយ DS:SI ។
+ DI: Destination Index, DI ចង្អុរទៅរកទិន្ន័យមួយដែលនៅក្នុង Data segment ដែរហើយដែល address របស់ Data នោះគឺត្រូវបានកំនត់ដោយ DS:DI ។
៤- Segment Registers: ការផ្សំគ្នារវាង Segment Registers ជាមួយនិង Register មួយចំនួនទៀតនៅក្នុង mP នាំ អោយទទួលបាននូវ Address ពិតមួយដោយគណនាតាមរូបមន្ត;
Real addr = Segment x 16 + Offset
ដែលក្នុងនោះ offset គឺជា address ដែលត្រូវបានរក្សាទុកក្នុង Register មួយចំនួនដូចជា ; IP, BP, SP, SI, DI ។
+ CS: Code Segment គឺជាផ្នែកមួយនៃ memory ដែលប្រើសំរាប់គ្រប់គ្រង ឬ ផ្ទុក Codeprograme ឬ code procedure ។ ក្នុង 8088 ដល់ 80286 code segment ត្រូវបានគេកំនត់ត្រឹម 64K bytes ។
+ DS: Data segment ជាផ្នែក memory ដែលគេប្រើសំរាប់ផ្ទុកទិន្ន័យដែលត្រូវប្រើសំរាប់កម្មវិធី ។ (Source Data)
+ ES: Extra segment ជាតំបន់ memory មួយដែលត្រូវគេពង្រីកបន្ថែមសំរាប់បំរើដល់
ប្រយោជន៏ជំនួយដល់ DS ក្នុងការរក្សាទុក Destination data ។
+ SS: Stack segment ជាបណ្តុំ memory មួយផ្នែកដែលត្រូវគេប្រើសំរាប់ផ្ទុក Data ឬ ប៉ារ៉ាមែត្ររបស់ Procedure ។ SS ផ្សំជាមួយ SP ឬ BP នាំអោយកំនត់បាន address មួយនៅក្នុង stack segment ។
៥- Flags Register ជា Register ពិសេសក្នុង CPU bit និមួយៗរបស់វាត្រូវបានគេ ប្រើសំរាប់បញ្ជាក់បង្ហាញនូវសភាពណា មួយក្នុងតំណើរការណ៏អនុវត្តន៏ប្រមាណវិធីរបស់ ALU ឬ សកម្មភាពរបស់ EU ។ដោយពឹងផ្អែកទៅលើ Flag អស់ទាំងនេះ=> អ្នកសរសេរកម្មវិធី ( Programer) អាចឈានទៅបង្កើតជា statement បន្តទៀតអោយ mP ។ Register នេះមាន 16 bit ក៏ប៉ុន្តែត្រូចគេប្រើអស់តែ 9 bit ប៉ុណ្ណោះដើម្បីធ្វើជា Bit flag ។
X : ជា Bit ដែលពុំទាន់ត្រូវបានគេប្រើប្រាស់ក្នុង 8088/8086
Register នេះមានប្រវែង 32 bit ចាប់ពី 80286 ឡើងទៅ
+ C ឬ CF: Carry Flag , CF=1 បានន័យថាមានត្រាទុកឬបានខ្ចីអំពី HSB ។
+ P ឬ PF: Parity Flag, PF= 1 បានន័យថាចំនួនសរុបរបស់ bit 1 ក្នុងលទ្ធផលប្រមាណវិធីជាចំនួនគូ
+ A ឬ AF: Auxiliary Flag, AF=1 នៅពេលដែលមានត្រាទុកពេលធ្វើវិធីបូកឬខ្ចីពេលធ្វើប្រមាណ
វិធិដករវាង Bit ទី 3 និង Bit ទី 4
+ Z ឬ ZF: Zero Flag, ZF=1 ពេលដែលលទ្ធផលប្រមាណវិធីស្មើសូន្យ ។
+ S ឬ SF: Signal Flag, SF=1 ពេលដែលលទ្ធផលប្រមាណវិធីជាតំលៃអវិជ្ជមាន
+ T ឬ TF: Trap Flag: ប្រសិនបើ TF=1=> mP បញ្ឍប់ឬផ្អាកដំនើរការ Programe ដើម្បីស្វែងរកកំហុសក្នុង Register ។
+ I ឬ IF: Interrupt enable Flag: ប្រសិនបើ IF=1 នោះ CPU អនុញ្ញាត្តិអោយ Interrupt សកម្មភាព។ Interrupt មានន័យថា ជាសញ្ញាមួយដែលបញ្ជួនទៅ mP ដើម្បីប្រកាសប្រាប់ថាមានព្រតិ្តការណ៏មួមបានកើតឡើងស្មើ CPU ប្រុងប្រៀបនិង CPU ពេលទទួលបានសញ្ញានេះត្រូចផ្អាកសកម្មភាពកំពុងដំនើរការជា បណ្តោះអាសន្នដើម្បី អនុវត្តន៏ ការងាររបស់ព្រឹត្តិការណ៏ថ្មីនោះ ។ ក្រោយពេលព្រត្តិការណ៏ថ្មីនោះចប់=> CPU បន្តសកម្មភាពចាស់ជាបន្តទៀត ។
+ D ឬ DF: Direction Flag ជា Flag មួយប្រើសំរាប់កំនត់ទឹសអោយ DI និង SI ក្នុងខណ:ដែលកំពុងប្រតិ- បត្តិការណ៏សេរី Instruction ។ ប្រសិនបើ DF=0 នោះតំលៃរបស់ DI និង SI ត្រូវកើនឡើងជាស្វ័យប្រវត្តិ តែផ្ទុយ
ទៅវិញបើ DF=0=> តំលៃរបស់ DI និង SI ត្រូវថយចុះទៅវិញ ។
+ O ឬ OF: Overflow Flag, ប្រសិនបើ OF=1 មានន័យថាលទ្ធផលរបស់ប្រមាណវិធីបូក 127 បូកនិង 1 ហើយលទ្ធផលត្រូវយកទៅរក្សាទុកក្នុង Memory មាន capacity=8bit ។ ដូច្នេះលទ្ធផលរបស់ផលបូកគឺ 128=> memory ដែលមានទំហំតែ 8 bit ពុំអាចទុកតំលៃនេះបានទេ ពេលនេះ=> OF=1 រីឯbit ទាំង 8 ខាងលើនេះផ្ទុក តំលៃ 0 ទាំងអស់ ។
àà ភាពដូចគ្នានិងខុសគ្នារវាង 8088 និង 8086
8086 ជា mP ដែលធ្វើការជាមួយ 16 bit Data ទាំងមូលចំនែក 8088 វិញផ្នែកខាងក្នុង CPU គឺធ្វើការជាមួយ 16 bit data (Bus ក្នុង) ក៏ប៉ុន្តែពេលបញ្ចេញមកខាងក្រៅគឺមានតែ 8 bit ប៉ុណ្ណោះ (Bus ក្រៅ) ។ ផ្នែកខាងក្នុងរបស់ 8088 និង 8086 ដូចគ្នាទាំងអស់ខុសត្រង់ Instruction cashe ប៉ុណ្ណោះដែល 8088 មានប្រវែង 4 byte ចំនែក 80-86 មានប្រវែង 6 byte ដែលបញ្ហានេះនាំទៅដល់ការប៉ះពាល់ន្បឿនប្រតិបត្តិការណ៏របស់ CPU ដូច្នេះហើយដែល 8088 មានតំលៃថោកជាង 8086 ។
Post a Comment