មេរៀន 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 ។