Kamis, 21 November 2013

INTEL PROCESSOR 8088 DENGAN MACAM-MACAM REGISTER YANG TERDAPAT DIDALAMNYA SERTA INSTRUKSI SET 8088

BAB I
PENDAHULUAN

A.     Latar belakang
Di awali dari definisi Mikroprosesor itu sendiri, ialah sebuah chip (IC) yang bekerja dengan program. Fungsinya adalah sebagai pengontrol atau pengolah utama dalam suatu rangkaian elektronik. Mikroprosesor biasa disebut juga dengan CPU (Central Processing Unit). Sekilas tentang sejarahnya yaitu pada tahun 1978  Intel mengeluarkan mikroprosesor 16-bit yaitu 8086, setahun kemudian mengeluarkan 8088 dengan kecepatan eksekusi dan memori lebih besar dari 8085, serta mulai digunakannya cache memori (sistem antrian yang mengatur pemberian instruksi sebelum menjalankannya. intel 8088 merupakan prosesor yang digunakan pada IBM PC.

Setiap satu pin memiliki dua fungsi, yaitu sebagai jalur data dan jalur alamat maka digunakanlah sistem time multiplexing, yaitu penggunaan jalur yang sama untuk fungsi dan waktu yang berbeda, sehingga tidak bisa data dan alamat dikirim pada saat yang bersamaan. Mikroprosesor 8088 mampu mengalamati memori sampai 1 MB. Memori ini digunakan untuk menyimpan kode biner dari instruksi yang akan dijalankan oleh μP, selain itu memori juga digunakan untuk menyimpan data secara sementara.

B.     Elemen didalam mikroprosesor  
·         CU (Control Unit) adalah manajer dari semua unit. CU mengatur keselarasan kerja setiap unit. Apa yang harus dilakukan oleh suatu unit, semuanya diketahui oleh CU dengan bantuan microprogram yang ditanamkan padanya. Pengontrolan oleh CU dilakukan melalui Bus Kontrol (panah dari/keControl Unit).
·         Instruction Decoder bertugas untuk menerjemahkan suatu instruksi dengan cara membandingkannya dengan tabel instruksi yang dimilikinya. Hasil dekoding diberikan ke CU, dan CU akan membangkitkan sinyal-sinyal kontrol yang diperlukan untuk melaksanakan instruksi tersebut.
·         Register adalah memori khusus di dalam uP. Untuk mengidentifikasikannya, register memiliki nama khusus yang juga sekaligus mencerminkan fungsi register tersebut Register Data memiliki lebar 16 bit namun dapat diakses dalam format 2×8 bit.

8088 ditargetkan pada sistem yang ekonomis, diikuti oleh pengunaan desain 8-bit. Queue yang ungul dari 8088 adalah 4 bytes, sebagai penggunaan dalam 8086 6 bytes. Clone yang populer dengan menggunakan 8088 adalah Model D, dimana tombol pilihan dapat berjalan pada clock 4.77 MHZ atau 7.16 MHZ.

BAB II
PEMBAHASAN
A.     Mikroprocessor Intel 8088
Mikroprosesor Intel 8088 hampir serupa dengan prosesor Intel 8086, kecuali pada data  eksternal bus. Lebar data eksternal bus 8088 dikurangi menjadi 8 bit, dan instruksi ukuran queue dan prefetching algoritmanya diubah. Intel 8088 menggun akan dua urutan bus siklus untuk menulis atau membaca 16 data bit sebagai ganti satu siklus untuk 8086. Ini menjadikan prosesor  bergerak  lebih lambat, tetapi ada nilai plus pada perangkat keras yang menjadikan CPU 8088 kompatibel dengan peripheral 8080/8085. Mikroprosesor Intel 8088 termasuk keluarga mikroprosesor 8 bit dan 16 bit. Mikroprosesor 8088 mempunyai 8 bit jalur data dan 20 bit jalur alamat. Jalur data memiliki pin yang sama dengan jalur alamat, artinya pada saat tertentu digunakan sebagai jalur data dan pada saat yang lain digunakan sebagai jalur alamat.

8088 membutuhkan catu daya +5,0 V dengan toleransi + 10%. Mikroprosesor 8088 akan kompatibel TTL (Transistor-Transistor Logic) jika kekebalan terhadap noise disesuaikan menjadi 350 mV dari nilai 400 mV yang biasa. Mikroprosesor 8088 dapat menjalankan satu 74XX, lima 74LSXX, satu 74SXX, sepuluh 74ALSXX, dan sepuluh 74HCXX beban satuan. Jika mikroprosesor 8088 direset, mikroprosesor ini mulai mengeksekusi perangkat lunak pada lokasi memori FFFF0H (FFF:0000) dengan pin interrupt request di-disable. Karena bus-bus 8088 dimultipleks dan kebanyakan memori dan peralatan I/O tidak, system harus didemultipleks sebelum pengantarmukaan dengan memori atau I/O. Demultipleks dilakukan oleh latch delapan bit yang pulsa clocknya didapat dari sinyal ALE. Operasi minimum 8088 sama dengan mikroprosesor Intel 8085A, sementara mode maksimum adalah baru dan khusus dirancang untuk operasi koprosesor aritmatika 8087. Intel 8086/8088 disebut juga CISC (Complex Instruction Set Computer) karena jumlah dan kompleksitas instruksinya.

B.     Register
Register adalah sebuah tempat penampungan sementara untuk data-data yang akan diolah oleh prosesor, dan dibentuk oleh 16 titik elektronis di dalam chip mikroprosesor itu sendiri. Dengan adanya tempat-tempat penampungan data sementara ini, proses pengolahan akan bisa dilakukan
secara jauh lebih cepat dibandingkan apabila data-data tersebut harus diambil langsung dari lokasi-lokasi memori.

Register-register tersebut sebagai register internal dan terdiri dari empat belas register dan keseluruhannya dapat dibagi dalam beberapa jenis, yaitu :


·         Register Segment,
·         Register Data,
·         Register pointer,
·         Register index,
·         Register index, dan
·         General Purpose Register.



Semua general register mikroprosesor  8088 dapat digunakan untuk perhitungan dan operasi logika. Pada 8088, register data diwujudkan oleh AX, BX, CX dan BX (sebagai general purpose register), sehubungan dengan fungsinya yang selain menangani tugas-tugas khusus, juga bisa dimanfaatkan untuk membantu proses-proses pengolahan data didalam internal mikroprosesor.
Mikroprosesor 8088 mempunyai kemampuan untuk bekerja dalam mode ‘langkah tunggal’ (single-step), yaitu semua instruksi dilaksanakan dengan cara satu demi satu. Mode ini dimungkinkan dengan jalan membuat TF (Trap Flag) masuk ke logika ’1′ atau ‘set’. Bagi seorang programmer, mode ini akan sangat berguna dalam pekerjaan ‘debugging’.

a.       Susunan chip prosesor Intel 8088.
·         Catu Daya/VCC (pin 40) dan GND (pin 1 dan 20)
·         Bus Data (AD0 – AD7)
·         Bus Alamat (AD0 – AD7 dan A8 – A19)
·         Bus Kendali (NMI, INTR, CLK, Reset).

C.     Arsitektur
Arsitektur dari 8088 tetap sama degan 8086 yakni: 16-bit registers, 16-bit internal data bus dan 20-bit address bus, yang bisa menjadikan prosesor mencapai memori 1 MB. 8088 memiliki pembagian memori yang sama dengan 8086: prosesor bisa mencapai 64 KB dari memori secara langsung, dan untuk mencapai lebih dari 64 KB, salah satu dari bagian khusus register harus di update. Program, data dan stack memori menduduki ruang memori yang sama. Total kapasitas memory yang bisa dicapai adalah 1MB-KB. Sebagaimana kebanyakan instruksi prosesor yang menggunakan 16-bit pointers, prosesor dapat mengolah secara efektif jika hanya memorinya 64 KB. Untuk mengakses memori diluar 64 KB,  CPU menggunakan bagian  register khusus untuk menspesifikasi di mana kode, stack dan 64 KB segmen data diposisikan di dalam memori 1 MB.
a.       16-bit pointers dan data disimpan sebagai:
·         address: low-order byte
·         address+1: high-order byte
b.      32-bit addresses disimpan di “segment:offset” dengan format:
·         address: low-order byte of segment
·         address+1: high-order byte of segment
·         address+2: low-order byte of offset
·         address+3: high-order byte of offset
c.       Physical memory address ditunjukkan oleh pasangan segment:offset dihitung dengan:
·         address = (<segment> * 16) + <offset>

Program Memori- program dapat ditempatkan di manapun di dalam memori. perintah jump and call dapat digunakan untuk menyingkat lompatan di dalam segmen kode 64 KB, seperti halnya untuk lompatan jauh di manapun di dalam memori 1 MB. Seluruh perintah lompatan yang bersyarat dapat digunakan untuk melompat sekitar + 127 – - 127 bytes dari instruksi yang ada.
Memori data – prosesor dapat mengakses data di tiap orang lebih dari 4 segmen yang tersedia, yang membatasi ukuran dari memori yang dapat diakses sampai 256 KB ( jika seluruh empat segmen menunjuk pada 64 KB blok berbeda). Mengakses data dari Data, Code, segmen Extra atau Stack biasanya dapat dilaksanakan dengan awalan perintah DS:, CS:, SS: atau ES: ( beberapa register dan instruksi dengan tak hadir boleh gunakan segmen SS atau ES sebagai ganti segmen DS).

D.     Set Instruksi Pada Microprocessor 8088
1.      Transfer Data
Set instruksi 8088 mencakup 14 transfer data yang menggerakkan byte atau kata data antara memori dan register selain juga antara akumulator dan port I/O.
a.GeneralPurpose(Umum)                              :MOV,PUSH,POP,XCHG,SXLAT
b. Input/Output                                              : In, Out
c. Address Transfer (Pemindahan Alamat)      : LEA, KDS, KES
d. Flag Transfer (Pemindahan Flag)                : LAHF, SAHF, PUSHF, POPF

2.   Arithmetic Instructions (Instruksi Perhitungan)
8088 mampu melakukan penambahan, pengurangan, pengurangan dan pembagian data selain juga bytes dan kata. Sistem ini menambah dan mengurangi dengan menggunakan bytes atau kata yang bertanda atau tak bertanda dan data BCD atau ASCII.
a.       Addition (Penjumlahan)                 : ADD, ADC, AAA, DAA, INC
b.      Substraction (Pengurangan)           : SUB, SBB, AAS, DAS, DES, NEG, CMP
c.       Multiplication (Perkalian)              : MUL, IMUL, AAM
d.      Division (Pembagian)                    : DIV, IDIV, AAD
e.       Sign Extension                              : CBW, CWD

3.      Manipulasi Bit
Instruksi ini mencakup operasi logika, shift dan rotasi.
a.       Logical (Logika)    : AND, OR, XOR, NOT, TEST
b.      Shift (Geser)          : SAL/SHL, SAR, SHR
c.       Rotate (Gulung)     : ROL, ROR, RCL, RCR

4.      Instruksi String
Instruksi string digunakan untuk memanipulasi string data dalam memori. Setiap string tersusun baik dari bytes maupun kata dan hingga mencapai 64 K bytes panjang.nya
a.       Direction                : CLD, STD
b.      Repeat Prefixes      : REP, REPE/REPZ, REPNE/REPNZ,
c.       Move                     : MOVSB, MOVSW
d.      Compare                : CMPS, CMPSB, CMPSW
e.       Scan                       : CSAS, SCASB, SCASW
f.       Load and Store      : LODS, LODSB, LODSW, STOS, STOSB, STOSW

5.      Transfer Program
Instruksi transfer program mencakup jump,  call, dan return, instruksi yang sudah kita kenal dalam 8085.
a.       Unconditional transfer (Pemindahan)               : CAL, RET, JMP
b.      Conditional transfer (Pemindahan Bersyarat)   : JA/JNBE, JAE/JNB, JB/JNAE/JC,
JBE/JNA, JCXZ, JE/JZ, JG/JNLE, JGF/JNL, JL/JNGE, JLE/JNG, JNC, JNE/JNZ, JNO, JNP/JPO, JNS, JO, JP/JPE, JS
c.       Loop/Jump                                                    : LOOP, LOOPE/LOOPZ, LOOPNE/LOOPNZ

6.      Kontrol Prosesor
Instruksi kontrol prosesor memungkinkan dan tidak memungkinkan interupsi, memodifikasi bit flag dan mensinkronisasi kejadian eksternal.
a.       Flag Operations                            : CLC, STC, CMC, CLD, STD, CLI, STI,
b.      External Synchronization Interrupt : INT, INTO, IRET

§  Berikut ini penjelasan tentang instruksi yang digunakan pada bahasa rakitan 8086 dan 8088 atau sejenisnya :
1.        AAA (ASCII adjust for edition) Pengaturan ASCII bagi penambahan
2.        AAD (ASCII adjust for division) Pengaturan ASCII bagi pembagian
3.        AAM (ASCII adjust for multipy) Pengaturan ASCII bagi perkalian
4.        AAS (ASCII adjust for substraction) Pengaturan ASCII bagi pengurangan
5.        ADC (add with carry) T ambahkan dengan carry
6.        ADD (addition) Penambahan
7.         AND (logic AND) Logik AND
8.        CALL (CALL subroutine) Subrutin panggil
9.      CBW (Convert byte to word) Konversikan byte ke kata
10.     CLC (Clear Carry) Kosongkan corry flag
11.     CLD (Clear directon flag) Kosongkan flag arah
12.     CLI (Clear interrupt enable) Kosongkan flag penggerak interupsi
13.     DAS (decimal adjust for substraction) Pengaturan decimal bagi pengurangan
14.     DEC (decrement) Penurunan operand tujuan dengan 1
15.     DIV (divide) Pembagian tak bertanda
16.     ESC (escape) Escape digunakan sehubungan dengan suatu co-procesor external
17.     HLT (halt) HLT menghentikan prosesor sampai saluran reset diaktifkan
18.     IDIV (Integer division) Pembagian kilat
19.     IMUL (Integer multiply) Perkalian kilat
20.     IN (Input) IN (masukan) mentransfer data dari port yang disperifikasikan ke dalam register AC atau AX
21.     NC (Increment) INC menaikkan operand tujuan dalam 1
22.     INT (Interupt) INT (Interupsi) mengawali suatu prosedur interupsi dengan jenis yang dispesifikasikan oleh instruksi yang bersangkutan
23.     INTO (Interupt on overflow) Instrupsi bila ada overflow INTO digunakan untuk membangkitkan suatu interupsi perangkat lunak yang bergantumg pada status flag OF
24.     IRET (Interupt return) IRET digunakan untuk kembali dari suatu interupsi dan mendapatkan kembali IP,CS dan flag-flag dari stack
25.     JA (Jump on above) Digunakan jika operand pertama lebih besar daripada operand kedua
26.     JNBE (Jump) Digunakan jika pada saat pembandingan operand 1, tidak lebih kecil atausama dengan operand 2
27.     JAE (Jump on above or equal) Digunakan pada saat pembandingan operand 1 lebih besar atau sama dengan operand 2
28.     JNB (Jump not below) Digunakan pada saat pembandingan operand 1 tidak lebih kecil dari operand 2
29.     JB (Jump on below) Digunakan pada saat operand 1 lebih kecil dari operand 2
30.     JNAE (Jump on not above or equal) Digunakan pada saat operand 1 tidak lebih besar atau sama dengan operand 2
31.     JBE (Jump on below or equal) Digunakan pada saat operand 1 lebih kecil atau sama dengan operand 2
32.     JNA (Jump on not above) Digunakan pada saat operand 1 tidak lebih besar dari operand 2
33.     JC (Jump on carry) Digunakan pada saat akan diprogram CF=1
34.     JCXZ (Jump if CX=0) Digunakan bila isi register CX=0
35.     JE (Jump on equal) Digunakan pada saat pembandingan kedua operand sama
36.     JZ (Jump on zero) Digunakan pada saat akan diproses ZF=1
37.     JG (Jump on greather than) Digunakan pada saat pembandingan operand 1 menunjukkan lebih besar dari operand 2
38.     JNLE (Jump on greather or equal) Digunakan pada saat operand 1tidak lebih kecil atau sama dengan operand 2
39.     JGE (Jump on greather or equal) Digunakan pada saat operand 1 lebih besar atau sama dengan operand 2
40.     JNL (Jump on less) Digunakan pada saat operand 1 tidak lebih kecil dari operand 2
41.     JL (Jump on less) Digunakan pada saat operand 1 lebih kecil dari operand 2
42.     JNGE (Jump on not greather or equal) Digunakan pada saat operand 1 tidak lebih besar atau sama dengan operand 2
43.     JLE (Jump on less or equal) Digunakan pada saat operand 1 lebih kecil atau sama dengan operand 2
44.     JNG (Jump on not greather than) Digunakan pada saat operand 1 tidak lebih besar daripada operand 2
45.     JMP (Unconditional jump) Lompatan tidak bersyarat
46.     JNC (Jump on not carry) Digunakan pada saat diproses CF=O
47.     JNE (Jump on not equal) Digunakan pada saat operand 1 tidak sama dari operand 2
48.     JNO (Jump on not zero) Digunakan pada saat diproses ZF=0
49.     JNO (Jump on not overflow) Digunakan bila tidak ada overflow (OF=O)
50.     JNS (Jump on not sign) Digunakan pada saat diproses SF=O
51.     ZNP (Jump on not pority) Digunakan bila tidak ada pointer
52.     JPO (Jump on poity odd) Digunakan bila pointer ganjil
53.     O (Jump on overflow) Digunakan pada saat ada overflow
54.     JP (Jump on Pority equal) Digunakan bila pointer genap
55.     JS (Jump on sign) Digunakan pada saat diproses ZF=1
56.     LAHF (Load AH from flag) LAHF me-load bit 7,6,4,2 & 0 pada register AH masing-masing dengan isi flag SF.ZF,AF & CF
57.     LDS (Load pointer using DS) Muatkan peminjak dengan menggunakan DS
58.     LEA (Load effective address) LEA mentransfer opsan sumber 16 bit dalam memori ke tujuan 16 bit
59.     LES (Load pointer using ES) Muatkan pointer dengan menggunakan ES
60.     LOCK (Lock bas) Digunakan dalam penerapan pemakaian sumber bersama, untuk memastikan bahwa memori tidak diakses secara serentak oleh lebih dari satu proses
61.     LODS (Load string) Muatkan string byte atau kata
62.     LOOP Loop jika EX bukan 0
63.     LOOPE dan LOOPZ -Loop bila sama
64.     -Loop bila 0
65.     LOOPNE/LOOPNZ -Loop bila tidak sama (ZF=0)
66.     -Loop bila tidak nol (ZF=O)
67.     MOVE Pindahkan byte atau kata memindahkan data 8 bit atau 16 bit
68.     MOUS (Move string) Pindahkan data string 8 bit atau 16 bit
69.     MUL (Multifly) Digunakan untuk mengalihkan isi bertandapada akumulator dengan suatu operand sumber yang dispesifikasikan
70.     NEG (Negate) Mengurangkan suatu operand tujuan dari 0 & menyimpan hasil komplemen keduanya dalam tujuan
71.     NOP (Logic NOT) NOP tidak membe rikan dampak tertentu (tidak ada operasi)
72.     NOT (Logic OR) Operasi logic OR
73.     OR (Logic OR) Operasi logic OR
74.     OUT (Output) Digunakan untuk mentransfer data dari AL atau AX ke point (pangkalan)
75.     POP (POP from stack) Keluaran data dari stack dari AL atau AX ke point (pangkalan)
76.     POPF (POP flag) Keluarkan ke flag dan stack
77.     POSH (Push to stack) Dorong sumber ke stack
78.     PUSHF (Push flag) Dorong flag ke stack
79.     RCL (Rotate lift with carry) Putar ke kirin dengan carry 1
80.     RCR (Rotate right with carry) Putar ke kanan dengan carry 1
81.     REP Ulangi
82.     REE Ulangi jika sama
83.     REPZ Ulangi jika nol
84.     REPNE Ulangi jika tidak sama
85.     REPNZ Ulangi jika tidak nol
86.     RET (Return from subroutine) Digunakan untuk kembali ke subrutin
87.     ROL (Rotate left) Rotasi (putar) ke kiri 1
88.     ROR (Rotate right) Rotasi (putar) ke kanan 1
89.     SAHF (store AH in flags register) Simpan AH dalam reegister flag
90.     SAL/SHL (Shift left arithmetic/logical) Geser aritmatik/logika ke kiri 1
91.     SAR/SHR (Shift right arithmetic/logical) Geser aritmatik/logika ke kanan 1
92.     SBB (Substract with borrow) Kurangkan dengan borrow
93.     SCAS (Scan string) Digunakan untuk mengurangkan string tujuan yang dialamatkan a/n regiser DI,dari AX atau AL
94.     STC (Set carry flag) Menset carry flag (CF)
95.     STD (Set direction flag) Menset flag arah (DF)
96.     STI (Set interrupt enable flag) Menset flag penggerak interupsi (IF)
97.     STOS (Substract) Memindahkan operand sumber yang terkandung dalam AX atau AL ke suatu tujuan yang dialamatkan oleh DI
98.     SUB (Substract) Mengurangkan sumber dari operand tujuan dan hasilnya ditepatkan dalam tujuan
99.     TEST (Logical comporison) Menguji operand-operand atau logic perbandingan
100.  WAIT Menunggu sampai saluran test aktif
101.  XCHG (Exchange) Pertukaran dan sumber
102.  XLAT (Translate) Digunakan untuk menerjemahkan se-byte dalam register AL ke dalam suatu byte yang diambil dari tabel terjemahan
103.  XOR (Logic exclusive OR) Operasi exclusive OR


BAB III
PENUTUP

KESIMPULAN

8088 adalah desain hybrid 8/16-bit: 16-bit internal, dengan 8-bit I/O. ini berarti bahwa Sistem designer dapapt menggunakan chip pendukung 8-bit yang murah dan tersedia. Sehingga menurunkan harga sebuah sistem komputer. Kemampuannya tidak begitu hebat, mesin-mesin Z-80 dan 8085 kadang-kadang lebih unggul, tetapi 8088 terjual cukup banyak. Apalagi setelah divisi IBM memilihnya sebagai prosesor utama IBM PC. 8088 menjadi sejarah dan terjual jutaan unit, rekor kedua setelah Z-80.

Sayangnya Intel membuat beberapa keputusan yang buruk dalam desain. Pertama, 8088 menggunakan arsitektur bersegmen. Kedua untuk alasan yang tidak efisien, Intel memutuskan untuk membatasi akses base-memory dalam suatu cara menjadi hanya 640K. Meskipun pada masa itu keputusan ini adalah untuk jangka pendek semua user prosesor x86 hingga saat ini merasa kesulitan dengan pembatasan 640K tersebut. Ini dapat ditemukan jika user menerima pesan kesalahan ‘out of memory’. DOS, Windows, dan bahkan Windows 95 memiliki permasalahan base-memory yang disebabkan oleh batas 640K. Hanya sistem operasi murni 32-bit seperti OS/2 dan Windows NT yang tidak memiliki masalah ini. Saat itu user harus menunggu 7 tahun sebelum kemunculan 386.
[Mukhlish muchad Fuadi: 2nd Semester 2006]

Referensi

Tidak ada komentar:

Posting Komentar