TCWAN
Page 1/13
31/08/2009
1. Pengenalan Kepada Mikropemproses (Mazidi 0,1) 1.1.Sistem Nombor 1.1.1.Nombor Perpuluhan (Decimal) dan Perduaan (Binary) Penukaran daripada Sistem Nombor Perpuluhan kepada Sistem Nombor Perduaan: secara pembahagian (Eg. 0-1 pg. 2)
Penukaran daripada Sistem Nombor Perduaan kepada Sistem Nombor Perpuluhan: secara jumlah hasil pendaraban berpemberat (sum of multiplication of weighted digits) (Eg. 0-2 pg. 3)
1.1.2.Nombor Perenambelasan (Hexadecimal) Kumpulan 4 bit ialah satu nibel (nibble). Nibel berasaskan nombor perenbelasan (hex). 1.1.3.Kod ASCII Kod ASCII merupakan satu cara perwakilan aksara (character) Roman yang biasa. Cara perwakilan lain termasuk EBDIC dan UNICODE. (Fig 0-2, pg. 8)
Version 1.02
TCWAN
Page 2/13
31/08/2009
1.2.Ciri-ciri Komputer 1.2.1.Istilah Komputer yang biasa Bit, Nibel (Nibble),Bait (Byte), Kata (Word) Kilobyte KB (210 = 1024), Megabyte MB (220 = 1048576), Gigabyte GB (230), Terabyte TB (240) 1.2.2.Organisasi Komputer Unit Pemprosesan Pusat (CPU), Ingatan Capaian Rawak (RAM), Ingatan Baca Sahaja (ROM), Bas Alamat (Address bus), Bas Data (Data bus), Peranti Input-Output (IO Devices) (Fig 0-3, pg. 10)
1.2.3.Bas Alamat Bas Searah (unidirectional) diperlukan untuk mencapai (access) kandungan RAM, ROM atau IO secara bait (byte addressable). Saiz bas alamat bergantung kepada ruang alamat fizikal (physical address space) yang perlu dicapai. Jumlah ingatan dan IO yang boleh ditambah adalah tertakluk kepada ruang alamat fizikal. 1.2.4.Bas Data Bas Dwiarah (bidirectional) diperlukan sebab perlu baca dan tulis kepada RAM, selain daripada mencapai ROM dan IO. Kelajuan
Version 1.02
TCWAN
Page 3/13
31/08/2009
pencapaian RAM (RAM access speed) adalah bergantung kepada saiz bas data dan masa pencapaian RAM (RAM access time). Saiz bas data merangkungi 8 hingga 256 bit bagi mikropemproses umum. 1.2.5.CPU Kesemua pemprosesan komputer melibatkan CPU yang merupakan ‘otak’ komputer. CPU boleh dicirikan sebagai CISC (Complex Instruction Set Computer) dan RISC (Reduced Instruction Set Computer). 80x86 merupakan CPU CISC. • Daftar (Register) berlainan digunakan untuk pengendalian CPU. CPU terkini mempunyai banyak daftar untuk melancarkan pengendaliannya. Daftar boleh dibahagikan kepada jenis Daftar Tujuan Am (GPR) dan jenis spesifik seperti Daftar Titk Apung (FPR) dll. • Unit Aritmetik Logik (ALU) ditugaskan untuk pengendalian fungsi matematik dan logik. CPU terkini mempunyai lebih daripada satu ALU dan Unit Titik Apung (FPU). • Pembilang Aturcara (Program Counter) diperlukan untuk menentukan suruhan (instruction) yang akan dilakukan (executed) selanjutnya. • Penyahkod Suruhan (Instruction Decoder) memproses suruhan yang tersimpan dalam ROM atau RAM dan melakukannya berdasarkan Kod mikro (microcode) yang berada dalam CPU. (Fig 0-5, pg. 14)
Version 1.02
TCWAN
Page 4/13
31/08/2009
2. Sejarah 80x86 (Mazidi 1) 2.1.Evolusi 8080/8085 kepada 8086 Mikropemproses 8080/8085 merupakan mikropemproses 8 bit. 8086 adalah generasi mikropemproses 16 bit baru (1978) yang boleh mencapai Ruang Ingatan sebanyak 1 Mbait, dengan talian paip suruhan (instruction pipeline) untuk mempercepatkan perlaksanaan. 8088 adalah sama dengan 8086 kecuali saiz bas datanya cuma 8 bit untuk memudahkan perantaramukaan dengan sistem ingatan (memory system) yang sedia ada pada masa itu. Lanjutan 8086 ialah 80286, 80386, 80486 dan Pentium/ Pentium II/ Pentium III. Setiap generasi baru 80x86 mempunyai ciri baru yang menyebabkan kebolehannya dipertingkatkan. Tujuannya adalah supaya mencapai penyepaduan subsistem (subsystems integration), dan mewujudkan mikropemproses yang berkelajuan tinggi (dari 8 MHz sehingga > 500 MHz).
2.2.Ciri-ciri dalaman 8086/8088 (Fig 1-1, pg. 21)
• Unit Perantaramukaan Bas (Bus Interface Unit) • Talian Paip Suruhan (Instruction Pipeline) – Penalti Cabangan (Branch Penalty) – Cara Talian Paip Suruhan dapat mempercepatkan perlaksanaan suruhan bagi CPU (Fig 1-2, pg. 22) Version 1.02
TCWAN
Page 5/13
31/08/2009
• Daftar Segmen (Segment Registers) dan Penunding Suruhan (Instruction Pointer) – Membolehkan 80x86 mencapai ruang ingatan yang besar (> 64K) dengan menggunakan Penunding Suruhan dan Penunding Data (Data Pointer) 16 bit sahaja – Segmen Kod (Code Segment CS), Segmen Tindanan (Stack Segment SS), Segmen Data (Data Segment DS), Segmen Tambahan (Extra Segment ES) • Unit Perlakuan (Execution Unit) • Daftar Data (Data Registers) dan Penunding Data (Data Pointer) – Saiz 16 bit – Boleh dicapai sebagai dua daftar 8 bit atau satu daftar 16 bit – Daftar Penumpuk (Accumulator) 16 bit dikenali sebagai AX, manakala ia juga boleh dirujuk sebagai dua daftar penumpuk 8 bit AH dan AL. – Daftar Asas (Base Register BX) – Daftar Pembilang (Counter CX) – Daftar Data (Data Register DX) – Penunding dirujuk sebagai daftar 16 bit sahaja, membolehkan capaian ruang alamat 64KB tanpa melibatkan Daftar Segmen – Penunding Asas (Base Pointer BP) – Penunding Tindanan (Stack Pointer SP) – Indeks Sumber (Source Index) – Indeks Destinasi (Destination Index) • Unit Aritmetik Logic (ALU) Version 1.02
TCWAN
Page 6/13
31/08/2009
2.3.Pengenalan Aturcara Bahasa Himpunan Bahasa Mesin (Machine Language) digunakan untuk pengaturcaraan pada mulanya. Walaubagaimanapun, bahasa mesin susah diingati, dan kesilapan kerap berlaku. Bahasa Himpunan (Assembly Language) dicipta untuk menyelesaikan masalah bahasa mesin. Bahasa Himpunan merupakan bahasa pengaturcaraan peringkat rendah (low level language) sebab pengaturcara (programmer) mesti kenalpasti rekabentuk mikropemproses. Selanjutnya, bahasa pengaturcaraan peringkat tinggi (high level language), seperti BASIC, FORTRAN, C dll. dicipta supaya pengaturcara tidak perlu kenalpasti rekabentuk mikropemproses dengan teliti. Namun, bahasa himpunan masih digunakan untuk mencipta pemacu perisian (software drivers), dan juga mencapai ciri mikropemproses yang tidak mempunyai spesifikasi dalam bahasa pengaturcaraan peringkat tinggi, seperti suruhan MMX bagi Pentium. Semua rutin (routine) yang ingin mencapai suruhan MMX terpaksa ditulis dalam bahasa himpunan pada masa ini.
2.4.Sebab bahasa himpunan digunakan adalah: • Tiada pengkompil (compiler) bagi mikropemproses. • Ciri mikropemproses tidak dapat dicapai tanpa kegunaan bahasa himpunan (e.g., MMX). • Rutin yang dicipta mestilah dilaksanakan dengan pantas, dan prestasi kod yang dijana oleh bahasa pengaturcaraan peringkat tinggi (high level language generated code) tidak memuaskan. Version 1.02
TCWAN
Page 7/13
31/08/2009
• Rutin pemacu perisian yang mencapai (access) ruang IO (IO space) dengan cara tertentu dan yang terpaksa dilaksanakan secara pengendalian masa nyata (real time operation)
2.5.Suruhan asas (basic instructions) Format bahasa himpunan 80x86: suruhan
destinasi,punca
(pg 24,25,26)
2.5.1.Suruhan MOV Merupakan suruhan yang terasas. Semua mikropemproses menyediakan suruhan MOV (atau suruhan setara bagi mikropemproses tersebut) untuk melaksanakan dapatan semula (retrieval) dan storan (storage) ruang ingatan (memory space). Suruhan MOV boleh mencapai data segera (immediate data), tempat data (data location) ataupun daftar (register) tertentu melalui berbagai gabungan capaian. Destinasi dan punca bagi suruhan MOV mesti mempunyai saiz yang sama. Saiz data segera mestilah terkandung dalam saiz daftar. Daftar Segmen tidak boleh dimuatkan (loaded) sebagai data segera, tetapi hanya boleh dimuatkan daripada daftar lain. 2.5.2.Suruhan ADD Suruhan ADD ialah suruhan pengendalian tambah (add operation instruction). Destinasi dan punca bagi suruhan ADD mestilah mempunyai saiz yang sama. Version 1.02
TCWAN
Page 8/13
31/08/2009
2.6.Segmen Aturcara (Program segments) Segmen Aturcara termasuk segmen kod, segmen data, dan segmen tindanan (stack). Kegunaan segmen adalah untuk mencapai lebih daripada 64K RAM. Cara menyatakan tempat data adalah melalui gabungan segmen dan ofset penunding (segment and pointer offset). Ia dikenali sebagai alamat logik (logical address). Alamat logik mestilah ditukar kepada alamat fizikal (physical address) melalui cara yang ditetapkan supaya kandungannya dicapai. (Eg 1-1, pg 28)
Nota: bagi 80x86, lebih daripada satu alamat logik boleh ditukar kepada alamat fizikal yang sama. (Fig 1-4, pg 37) Dalam aturcara bahasa himpunan, format alamat (address format) yang menggunakan ofset penunding tanpa rujukan nyata daftar segmen tertentu akan menggunakan daftar segmen lalai (default) bagi penunding ofset itu. (Fig 1-1, pg 21, Table 1-3, pg 44)
2.7.Tindanan (Stack) Cara perlaksanaan tindanan (stack) amat penting untuk memahami perlaksanaan mikropemproses. Tanpa tindanan, banyak binaan aturcara (programming constructs) tidak dapat dicipta, terutamanya rutin (routine) dan fungsi (function). Perlaksanaan Sampukan (interrupts) juga tertakluk kepada perlaksanaan tindanan.
Version 1.02
TCWAN
Page 9/13
31/08/2009
Tindanan terletak dalam ingatan baca-tulis (read write memory) dan diguna sebagai pad conteng (scratch pad) bagi pelbagai maklumat sementara (temporary information), parameter yang dihulurkan (passed parameters), dan juga alamat kembali (return address) bagi panggilan rutin (routine call). Rutin Sampukan (interrupt routine) adalah sejenis rutin yang dilaksanakan bila sampukan diterima oleh mikropemproses. Selain daripada alamat kembali, status daftar sebelum rutin sampukan dilaksanakan mestilah disimpan dalam tindanan, sebab rutin aktif (active routine) tidak tahu masa rutin sampukan akan dilaksanakan (secara tak segerak) (asynchronous), kecuali sampukan perisian (software interrupt) yang dilakukan (executed) oleh rutin aktif. (E.g. 1-6, 1-7, pg 34-35)
2.7.1.Endian Besar lwn. Endian Kecil 80x86 merupakan mikropemproses Endian Kecil. Ini bermakna bait rendah (lower byte) bagi kata (word) disimpan dalam tempat data beralamat rendah. Manakala Endian Besar menyimpan bait atas (upper byte) dalam tempat data beralamat rendah (Motorola, Sparc, dll.).
2.8.Daftar Bendera (Flag Register) Daftar bendera digunakan untuk menunjuk (indicate) akibat atau hasil perlaksanaan suruhan mikropemproses. Bendera biasanya digunakan oleh suruhan bandingan (comparison) dan juga untuk membina gelung (loops) dan cabang (branches) Version 1.02
TCWAN
Page 10/13
(E.g. 1-10, 1-11, 1-12, pg 38,39)
2.9.Mod Pengalamatan (Addressing Modes) • Daftar (Register) • Segera (Immediate) • Terus (Direct) • Tak Terus Daftar (Register Indirect) • Relatif Asas (Base Relative) • Relatif Indeks (Indexed Relative) • Relatif Indeks Asas (Base Indexed Relative) 2.9.1.Mod Pengalamatan Daftar (Register Addressing Mode) Mod ini melibatkan daftar dalam CPU sahaja. Contoh: MOV
BX,DX
MOV
ES,AX
ADD
AL,BH
Nota: kendalian (operand) mestilah sama saiz. 2.9.2.Mod Pengalamatan Segera (Immediate Addressing Mode) Mod ini melibatkan kendalian punca (source operand) yang merupakan konstan (constant) sahaja. Version 1.02
31/08/2009
TCWAN
Page 11/13
31/08/2009
Contoh: MOV
AX,2550H
; perenambelasan
MOV
CX,625
; perpuluhan
MOV
BL,40H
; nilai 8 bit
Nota: Daftar Segmen tidak boleh menggunakan mod pengalamatan segera. 2.9.3.Mod Pengalamatan Terus (Direct Addressing Mode) Mod ini meggunakan ofset kepada segmen sebagai alamat. Tanda ‘[’ dan ‘]’ digunakan untuk membezakan mod pengalamatan terus daripada mod pengalamatan segera. Contoh: MOV
DL,[2400]
; guna segmen Data (lalai)
MOV
DL,ES:[2400]
; guna segmen Tambahan
Nota: Segmen lalai (default segment) akan digunakan jika segmen tertentu tidak diberi. (E.g. 1-15, pg. 42)
2.9.4.Mod Pengalamatan Tak Terus Daftar (Register Indirect Addressing Mode) Mod ini menggunakan daftar untuk menyimpan alamat terkini yang diperlukan. Biasanya digunakan apabila bilangan dan alamat data tidak tetap (seperti parameter yang dihulurkan kepada rutin). Tanda ‘[’ dan ‘]’ digunakan untuk membezakan mod pengalamatan terus daripada mod pengalamatan daftar. Version 1.02
TCWAN
Page 12/13
31/08/2009
Contoh: MOV
AL,[BX]
; data dari DS:BX
MOV
CL,[SI]
; data dari DS:SI
MOV
[DI],AH
; data disimpan dlm DS:DI
(E.g. 1-16, pg. 43)
2.9.5.Mod Pengalamatan Relatif Asas (Base Relative Addressing Mode) Mod pengalamatan ini melibatkan daftar asas (base registers) BX dan BP, dan juga nilai sesaran (displacement value) untuk memperolehi alamat efektif (effective address). Segmen lalai bagi BX ialah DS, manakala segmen lalai bagi BP ialah SS untuk penghitungan alamat fizikal. Mod pengalamatan ini biasa digunakan untuk merujuk kepada unsur struktur data (elements of a data structure) semasa pemprosesan. Contoh: MOV
CX,[BX]+10
; segmen lalai DS
2.9.6.Mod Pengalamatan Relatif Indeks (Indexed Relative Addressing Mode) Mod pengalamatan ini serupa dengan Mod Pengalamatan Relatif Asas kecuali daftar yang digunakan ialah DI dan SI. Contoh: MOV (E.g. 1-17, pg 44)
Version 1.02
CL,[DI]+20
; segmen lalai DS
TCWAN
Page 13/13
31/08/2009
2.9.7.Mod Pengalamatan Relatif Indeks Asas (Base Indexed Relative Addressing Mode) Mod pengalamatan ini mengabungkan daftar asas dengan daftar indeks untuk merujuk alamat data. Mod ini boleh digunakan untuk merujuk unsur tatasusunan (element of an array) dengan mengubahkan nilai daftar asas dan daftar indeks. Contoh: MOV
CL,[BX][DI]+8
; segmen lalai DS
MOV
AH,[BP][SI]+29
; segmen lalai SS
2.9.8.Gantian segmen lalai (default segment override) Daftar Segmen yang selain dari segmen lalai boleh digunakan dalam penghitungan alamat efektif dan fizikal. Segmen yang diingini ditambah di hadapan argumen tersebut. Contoh: MOV
AX,CS:[BP]
MOV
SS:[BX][DI]+32,AX
(Table 1-4, 1-5, pg 45)
Version 1.02